Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/debug.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/debug.c	(revision 35052)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/debug.c	(revision 35052)
@@ -0,0 +1,440 @@
+/*
+ * Management of the debugging channels
+ *
+ * Copyright 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+#include <windows.h>
+
+#include "config.h"
+#include "wine/port.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "wine/debug.h"
+//#include "wine/library.h"
+
+static const char * const debug_classes[] = { "fixme", "err", "warn", "trace" };
+
+#define MAX_DEBUG_OPTIONS 256
+
+static unsigned char default_flags = (1 << __WINE_DBCL_ERR) | (1 << __WINE_DBCL_FIXME);
+static int nb_debug_options = -1;
+static struct __wine_debug_channel debug_options[MAX_DEBUG_OPTIONS];
+
+static struct __wine_debug_functions funcs;
+
+static void debug_init(void);
+
+static int cmp_name( const void *p1, const void *p2 )
+{
+    const char *name = p1;
+    const struct __wine_debug_channel *chan = p2;
+    return strcmp( name, chan->name );
+}
+
+/* get the flags to use for a given channel, possibly setting them too in case of lazy init */
+unsigned char __wine_dbg_get_channel_flags( struct __wine_debug_channel *channel )
+{
+    if (nb_debug_options == -1) debug_init();
+
+    if (nb_debug_options)
+    {
+        struct __wine_debug_channel *opt = bsearch( channel->name, debug_options, nb_debug_options,
+                                                    sizeof(debug_options[0]), cmp_name );
+        if (opt) return opt->flags;
+    }
+    /* no option for this channel */
+    if (channel->flags & (1 << __WINE_DBCL_INIT)) channel->flags = default_flags;
+    return default_flags;
+}
+
+/* set the flags to use for a given channel; return 0 if the channel is not available to set */
+int __wine_dbg_set_channel_flags( struct __wine_debug_channel *channel,
+                                  unsigned char set, unsigned char clear )
+{
+    if (nb_debug_options == -1) debug_init();
+
+    if (nb_debug_options)
+    {
+        struct __wine_debug_channel *opt = bsearch( channel->name, debug_options, nb_debug_options,
+                                                    sizeof(debug_options[0]), cmp_name );
+        if (opt)
+        {
+            opt->flags = (opt->flags & ~clear) | set;
+            return 1;
+        }
+    }
+    return 0;
+}
+
+/* add a new debug option at the end of the option list */
+static void add_option( const char *name, unsigned char set, unsigned char clear )
+{
+    int min = 0, max = nb_debug_options - 1, pos, res;
+
+    if (!name[0])  /* "all" option */
+    {
+        default_flags = (default_flags & ~clear) | set;
+        return;
+    }
+    if (strlen(name) >= sizeof(debug_options[0].name)) return;
+
+    while (min <= max)
+    {
+        pos = (min + max) / 2;
+        res = strcmp( name, debug_options[pos].name );
+        if (!res)
+        {
+            debug_options[pos].flags = (debug_options[pos].flags & ~clear) | set;
+            return;
+        }
+        if (res < 0) max = pos - 1;
+        else min = pos + 1;
+    }
+    if (nb_debug_options >= MAX_DEBUG_OPTIONS) return;
+
+    pos = min;
+    if (pos < nb_debug_options) memmove( &debug_options[pos + 1], &debug_options[pos],
+                                         (nb_debug_options - pos) * sizeof(debug_options[0]) );
+    strcpy( debug_options[pos].name, name );
+    debug_options[pos].flags = (default_flags & ~clear) | set;
+    nb_debug_options++;
+}
+
+/* parse a set of debugging option specifications and add them to the option list */
+static void parse_options( const char *str )
+{
+    char *opt, *next, *options;
+    unsigned int i;
+
+    if (!(options = strdup(str))) return;
+    for (opt = options; opt; opt = next)
+    {
+        const char *p;
+        unsigned char set = 0, clear = 0;
+
+        if ((next = strchr( opt, ',' ))) *next++ = 0;
+
+        p = opt + strcspn( opt, "+-" );
+        if (!p[0]) p = opt;  /* assume it's a debug channel name */
+
+        if (p > opt)
+        {
+            for (i = 0; i < sizeof(debug_classes)/sizeof(debug_classes[0]); i++)
+            {
+                int len = strlen(debug_classes[i]);
+                if (len != (p - opt)) continue;
+                if (!memcmp( opt, debug_classes[i], len ))  /* found it */
+                {
+                    if (*p == '+') set |= 1 << i;
+                    else clear |= 1 << i;
+                    break;
+                }
+            }
+            if (i == sizeof(debug_classes)/sizeof(debug_classes[0])) /* bad class name, skip it */
+                continue;
+        }
+        else
+        {
+            if (*p == '-') clear = ~0;
+            else set = ~0;
+        }
+        if (*p == '+' || *p == '-') p++;
+        if (!p[0]) continue;
+
+        if (!strcmp( p, "all" ))
+            default_flags = (default_flags & ~clear) | set;
+        else
+            add_option( p, set, clear );
+    }
+    free( options );
+}
+
+
+/* print the usage message */
+static void debug_usage(void)
+{
+    static const char usage[] =
+        "Syntax of the WINEDEBUG variable:\n"
+        "  WINEDEBUG=[class]+xxx,[class]-yyy,...\n\n"
+        "Example: WINEDEBUG=+all,warn-heap\n"
+        "    turns on all messages except warning heap messages\n"
+        "Available message classes: err, warn, fixme, trace\n";
+    write( 2, usage, sizeof(usage) - 1 );
+    exit(1);
+}
+
+
+/* initialize all options at startup */
+static void debug_init(void)
+{
+    char *wine_debug;
+
+    if (nb_debug_options != -1) return;  /* already initialized */
+    nb_debug_options = 0;
+    if ((wine_debug = getenv("WINEDEBUG")))
+    {
+        if (!strcmp( wine_debug, "help" )) debug_usage();
+        parse_options( wine_debug );
+    }
+}
+
+/* varargs wrapper for funcs.dbg_vprintf */
+int wine_dbg_printf( const char *format, ... )
+{
+    int ret;
+    va_list valist;
+
+    va_start(valist, format);
+    ret = funcs.dbg_vprintf( format, valist );
+    va_end(valist);
+    return ret;
+}
+
+/* printf with temp buffer allocation */
+const char *wine_dbg_sprintf( const char *format, ... )
+{
+    static const int max_size = 200;
+    char *ret;
+    int len;
+    va_list valist;
+
+    va_start(valist, format);
+    ret = funcs.get_temp_buffer( max_size );
+    len = vsnprintf( ret, max_size, format, valist );
+    if (len == -1 || len >= max_size) ret[max_size-1] = 0;
+    else funcs.release_temp_buffer( ret, len + 1 );
+    va_end(valist);
+    return ret;
+}
+
+
+/* varargs wrapper for funcs.dbg_vlog */
+int wine_dbg_log( enum __wine_debug_class cls, struct __wine_debug_channel *channel,
+                  const char *func, const char *format, ... )
+{
+    int ret;
+    va_list valist;
+
+    if (!(__wine_dbg_get_channel_flags( channel ) & (1 << cls))) return -1;
+
+    va_start(valist, format);
+    ret = funcs.dbg_vlog( cls, channel, func, format, valist );
+    va_end(valist);
+    return ret;
+}
+
+int interlocked_xchg_add( int *dest, int incr )
+{
+    return InterlockedExchangeAdd(dest, incr);
+}
+
+/* allocate some tmp string space */
+/* FIXME: this is not 100% thread-safe */
+static char *get_temp_buffer( size_t size )
+{
+    static char *list[32];
+    static int pos;
+    char *ret;
+    int idx;
+
+    idx = interlocked_xchg_add( &pos, 1 ) % (sizeof(list)/sizeof(list[0]));
+    if ((ret = realloc( list[idx], size ))) list[idx] = ret;
+    return ret;
+}
+
+
+/* release unused part of the buffer */
+static void release_temp_buffer( char *buffer, size_t size )
+{
+    /* don't bother doing anything */
+}
+
+
+/* default implementation of wine_dbgstr_an */
+static const char *default_dbgstr_an( const char *str, int n )
+{
+    static const char hex[16] = "0123456789abcdef";
+    char *dst, *res;
+    size_t size;
+
+    if (!((ULONG_PTR)str >> 16))
+    {
+        if (!str) return "(null)";
+        res = funcs.get_temp_buffer( 6 );
+        sprintf( res, "#%04x", LOWORD(str) );
+        return res;
+    }
+    if (n == -1) n = strlen(str);
+    if (n < 0) n = 0;
+    size = 10 + min( 300, n * 4 );
+    dst = res = funcs.get_temp_buffer( size );
+    *dst++ = '"';
+    while (n-- > 0 && dst <= res + size - 9)
+    {
+        unsigned char c = *str++;
+        switch (c)
+        {
+        case '\n': *dst++ = '\\'; *dst++ = 'n'; break;
+        case '\r': *dst++ = '\\'; *dst++ = 'r'; break;
+        case '\t': *dst++ = '\\'; *dst++ = 't'; break;
+        case '"':  *dst++ = '\\'; *dst++ = '"'; break;
+        case '\\': *dst++ = '\\'; *dst++ = '\\'; break;
+        default:
+            if (c >= ' ' && c <= 126)
+                *dst++ = c;
+            else
+            {
+                *dst++ = '\\';
+                *dst++ = 'x';
+                *dst++ = hex[(c >> 4) & 0x0f];
+                *dst++ = hex[c & 0x0f];
+            }
+        }
+    }
+    *dst++ = '"';
+    if (n > 0)
+    {
+        *dst++ = '.';
+        *dst++ = '.';
+        *dst++ = '.';
+    }
+    *dst++ = 0;
+    funcs.release_temp_buffer( res, dst - res );
+    return res;
+}
+
+
+/* default implementation of wine_dbgstr_wn */
+static const char *default_dbgstr_wn( const WCHAR *str, int n )
+{
+    char *dst, *res;
+    size_t size;
+
+    if (!((ULONG_PTR)str >> 16))
+    {
+        if (!str) return "(null)";
+        res = funcs.get_temp_buffer( 6 );
+        sprintf( res, "#%04x", LOWORD(str) );
+        return res;
+    }
+    if (n == -1)
+    {
+        const WCHAR *end = str;
+        while (*end) end++;
+        n = end - str;
+    }
+    if (n < 0) n = 0;
+    size = 12 + min( 300, n * 5 );
+    dst = res = funcs.get_temp_buffer( size );
+    *dst++ = 'L';
+    *dst++ = '"';
+    while (n-- > 0 && dst <= res + size - 10)
+    {
+        WCHAR c = *str++;
+        switch (c)
+        {
+        case '\n': *dst++ = '\\'; *dst++ = 'n'; break;
+        case '\r': *dst++ = '\\'; *dst++ = 'r'; break;
+        case '\t': *dst++ = '\\'; *dst++ = 't'; break;
+        case '"':  *dst++ = '\\'; *dst++ = '"'; break;
+        case '\\': *dst++ = '\\'; *dst++ = '\\'; break;
+        default:
+            if (c >= ' ' && c <= 126)
+                *dst++ = c;
+            else
+            {
+                *dst++ = '\\';
+                sprintf(dst,"%04x",c);
+                dst+=4;
+            }
+        }
+    }
+    *dst++ = '"';
+    if (n > 0)
+    {
+        *dst++ = '.';
+        *dst++ = '.';
+        *dst++ = '.';
+    }
+    *dst++ = 0;
+    funcs.release_temp_buffer( res, dst - res );
+    return res;
+}
+
+
+/* default implementation of wine_dbg_vprintf */
+static int default_dbg_vprintf( const char *format, va_list args )
+{
+    return vfprintf( stderr, format, args );
+}
+
+
+/* default implementation of wine_dbg_vlog */
+static int default_dbg_vlog( enum __wine_debug_class cls, struct __wine_debug_channel *channel,
+                             const char *func, const char *format, va_list args )
+{
+    int ret = 0;
+
+    if (cls < sizeof(debug_classes)/sizeof(debug_classes[0]))
+        ret += wine_dbg_printf( "%s:%s:%s ", debug_classes[cls], channel->name, func );
+    if (format)
+        ret += funcs.dbg_vprintf( format, args );
+    return ret;
+}
+
+/* wrappers to use the function pointers */
+
+const char *wine_dbgstr_an( const char * s, int n )
+{
+    return funcs.dbgstr_an(s, n);
+}
+
+const char *wine_dbgstr_wn( const WCHAR *s, int n )
+{
+    return funcs.dbgstr_wn(s, n);
+}
+
+void __wine_dbg_set_functions( const struct __wine_debug_functions *new_funcs,
+                               struct __wine_debug_functions *old_funcs, size_t size )
+{
+    if (old_funcs) memcpy( old_funcs, &funcs, min(sizeof(funcs),size) );
+    if (new_funcs) memcpy( &funcs, new_funcs, min(sizeof(funcs),size) );
+}
+
+static struct __wine_debug_functions funcs =
+{
+    get_temp_buffer,
+    release_temp_buffer,
+    default_dbgstr_an,
+    default_dbgstr_wn,
+    default_dbg_vprintf,
+    default_dbg_vlog
+};
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/config.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/config.h	(revision 35052)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/config.h	(revision 35052)
@@ -0,0 +1,1275 @@
+/* include/config.h.  Generated from config.h.in by configure.  */
+/* include/config.h.in.  Generated from configure.ac by autoheader.  */
+
+#include <stddef.h>
+
+#define __WINE_CONFIG_H
+
+/* Define to a function attribute for Microsoft hotpatch assembly prefix. */
+#define DECLSPEC_HOTPATCH /* */
+
+/* Define to the file extension for executables. */
+#define EXEEXT ".exe"
+
+/* Define to 1 if you have the <alias.h> header file. */
+/* #undef HAVE_ALIAS_H */
+
+/* Define if you have ALSA 1.x including devel headers */
+/* #undef HAVE_ALSA */
+
+/* Define to 1 if you have the <alsa/asoundlib.h> header file. */
+/* #undef HAVE_ALSA_ASOUNDLIB_H */
+
+/* Define to 1 if you have the <AL/al.h> header file. */
+/* #undef HAVE_AL_AL_H */
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+/* #undef HAVE_ARPA_NAMESER_H */
+
+/* Define to 1 if you have the `asctime_r' function. */
+#define HAVE_ASCTIME_R 1
+
+/* Define to 1 if you have the <asm/types.h> header file. */
+#define HAVE_ASM_TYPES_H 1
+
+/* Define to 1 if you have the <AudioUnit/AudioUnit.h> header file. */
+/* #undef HAVE_AUDIOUNIT_AUDIOUNIT_H */
+
+/* Define to 1 if you have the <audio/audiolib.h> header file. */
+/* #undef HAVE_AUDIO_AUDIOLIB_H */
+
+/* Define to 1 if you have the <audio/soundlib.h> header file. */
+/* #undef HAVE_AUDIO_SOUNDLIB_H */
+
+/* Define to 1 if you have the <capi20.h> header file. */
+/* #undef HAVE_CAPI20_H */
+
+/* Define to 1 if you have the <Carbon/Carbon.h> header file. */
+/* #undef HAVE_CARBON_CARBON_H */
+
+/* Define to 1 if you have the `chsize' function. */
+/* #undef HAVE_CHSIZE */
+
+/* Define to 1 if you have the <CoreAudio/CoreAudio.h> header file. */
+/* #undef HAVE_COREAUDIO_COREAUDIO_H */
+
+/* Define to 1 if you have the <cups/cups.h> header file. */
+/* #undef HAVE_CUPS_CUPS_H */
+
+/* Define to 1 if you have the <curses.h> header file. */
+/* #undef HAVE_CURSES_H */
+
+/* Define if you have the daylight variable */
+/* #undef HAVE_DAYLIGHT*/
+
+/* Define to 1 if you have the <dbus/dbus.h> header file. */
+/* #undef HAVE_DBUS_DBUS_H */
+
+/* Define to 1 if you have the <direct.h> header file. */
+/* #undef HAVE_DIRECT_H */
+
+/* Define to 1 if you have the <dirent.h> header file. */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the <DiskArbitration/DiskArbitration.h> header
+   file. */
+/* #undef HAVE_DISKARBITRATION_DISKARBITRATION_H */
+
+/* Define to 1 if you have the `dladdr' function. */
+/* #undef HAVE_DLADDR */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H*/
+
+/* Define to 1 if you have the `dlopen' function. */
+/* #undef HAVE_DLOPEN*/
+
+/* Define to 1 if you have the <elf.h> header file. */
+/* #undef HAVE_ELF_H*/
+
+/* Define to 1 if you have the `epoll_create' function. */
+/* #undef HAVE_EPOLL_CREATE */
+
+/* Define if you have EsounD sound server */
+/* #undef HAVE_ESD */
+
+/* Define to 1 if you have the `ffs' function. */
+#define HAVE_FFS 1
+
+/* Define to 1 if you have the `finite' function. */
+#define HAVE_FINITE 1
+
+/* Define to 1 if you have the <float.h> header file. */
+#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the `fnmatch' function. */
+#define HAVE_FNMATCH 1
+
+/* Define to 1 if you have the <fnmatch.h> header file. */
+#define HAVE_FNMATCH_H 1
+
+/* Define to 1 if you have the <fontconfig/fontconfig.h> header file. */
+/* #undef HAVE_FONTCONFIG_FONTCONFIG_H */
+
+/* Define to 1 if you have the `fork' function. */
+#define HAVE_FORK 1
+
+/* Define to 1 if you have the `fpclass' function. */
+/* #undef HAVE_FPCLASS */
+
+/* Define if FreeType 2 is installed */
+/* #undef HAVE_FREETYPE */
+
+/* Define to 1 if you have the <freetype/freetype.h> header file. */
+/* #undef HAVE_FREETYPE_FREETYPE_H */
+
+/* Define to 1 if you have the <freetype/ftglyph.h> header file. */
+/* #undef HAVE_FREETYPE_FTGLYPH_H */
+
+/* Define to 1 if you have the <freetype/ftlcdfil.h> header file. */
+/* #undef HAVE_FREETYPE_FTLCDFIL_H */
+
+/* Define to 1 if you have the <freetype/ftmodapi.h> header file. */
+/* #undef HAVE_FREETYPE_FTMODAPI_H */
+
+/* Define to 1 if you have the <freetype/ftoutln.h> header file. */
+/* #undef HAVE_FREETYPE_FTOUTLN_H */
+
+/* Define to 1 if you have the <freetype/ftsnames.h> header file. */
+/* #undef HAVE_FREETYPE_FTSNAMES_H */
+
+/* Define if you have the <freetype/fttrigon.h> header file. */
+/* #undef HAVE_FREETYPE_FTTRIGON_H */
+
+/* Define to 1 if you have the <freetype/fttypes.h> header file. */
+/* #undef HAVE_FREETYPE_FTTYPES_H */
+
+/* Define to 1 if you have the <freetype/ftwinfnt.h> header file. */
+/* #undef HAVE_FREETYPE_FTWINFNT_H */
+
+/* Define to 1 if you have the <freetype/internal/sfnt.h> header file. */
+/* #undef HAVE_FREETYPE_INTERNAL_SFNT_H */
+
+/* Define to 1 if you have the <freetype/ttnameid.h> header file. */
+/* #undef HAVE_FREETYPE_TTNAMEID_H */
+
+/* Define to 1 if you have the <freetype/tttables.h> header file. */
+/* #undef HAVE_FREETYPE_TTTABLES_H */
+
+/* Define to 1 if the system has the type `fsblkcnt_t'. */
+#define HAVE_FSBLKCNT_T 1
+
+/* Define to 1 if the system has the type `fsfilcnt_t'. */
+#define HAVE_FSFILCNT_T 1
+
+/* Define to 1 if you have the `fstatfs' function. */
+#define HAVE_FSTATFS 1
+
+/* Define to 1 if you have the `fstatvfs' function. */
+#define HAVE_FSTATVFS 1
+
+/* Define to 1 if you have the <ft2build.h> header file. */
+/* #undef HAVE_FT2BUILD_H */
+
+/* Define to 1 if you have the `ftruncate' function. */
+#define HAVE_FTRUNCATE 1
+
+/* Define to 1 if you have the `FT_Load_Sfnt_Table' function. */
+/* #undef HAVE_FT_LOAD_SFNT_TABLE */
+
+/* Define to 1 if the system has the type `FT_TrueTypeEngineType'. */
+/* #undef HAVE_FT_TRUETYPEENGINETYPE */
+
+/* Define to 1 if you have the `futimes' function. */
+#define HAVE_FUTIMES 1
+
+/* Define to 1 if you have the `futimesat' function. */
+/* #undef HAVE_FUTIMESAT */
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+/* #undef HAVE_GETADDRINFO */
+
+/* Define to 1 if you have the `getdirentries' function. */
+/* #undef HAVE_GETDIRENTRIES */
+
+/* Define to 1 if you have the `getnameinfo' function. */
+/* #undef HAVE_GETNAMEINFO */
+
+/* Define to 1 if you have the `getnetbyname' function. */
+/* #undef HAVE_GETNETBYNAME */
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#define HAVE_GETOPT_H 1
+
+/* Define to 1 if you have the `getopt_long' function. */
+#define HAVE_GETOPT_LONG 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+/* #undef HAVE_GETPAGESIZE */
+
+/* Define to 1 if you have the `getprotobyname' function. */
+#define HAVE_GETPROTOBYNAME 1
+
+/* Define to 1 if you have the `getprotobynumber' function. */
+#define HAVE_GETPROTOBYNUMBER 1
+
+/* Define to 1 if you have the `getpwuid' function. */
+/* #undef HAVE_GETPWUID */
+
+/* Define to 1 if you have the `getservbyport' function. */
+#define HAVE_GETSERVBYPORT 1
+
+/* Define to 1 if you have the `gettid' function. */
+/* #undef HAVE_GETTID */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `getuid' function. */
+/* #undef HAVE_GETUID */
+
+/* Define to 1 if you have the <GL/glu.h> header file. */
+/* #undef HAVE_GL_GLU_H */
+
+/* Define to 1 if you have the <GL/glx.h> header file. */
+/* #undef HAVE_GL_GLX_H */
+
+/* Define to 1 if you have the <GL/gl.h> header file. */
+/* #undef HAVE_GL_GL_H */
+
+/* Define if we have libgphoto2 development environment */
+/* #undef HAVE_GPHOTO2 */
+
+/* Define to 1 if you have the <grp.h> header file. */
+/* #undef HAVE_GRP_H */
+
+/* Define to 1 if you have the <gsm/gsm.h> header file. */
+/* #undef HAVE_GSM_GSM_H */
+
+/* Define to 1 if you have the <gsm.h> header file. */
+/* #undef HAVE_GSM_H */
+
+/* Define to 1 if you have the <hal/libhal.h> header file. */
+/* #undef HAVE_HAL_LIBHAL_H */
+
+/* Define to 1 if you have the <ieeefp.h> header file. */
+#define HAVE_IEEEFP_H 1
+
+/* Define to 1 if you have the <inet/mib2.h> header file. */
+/* #undef HAVE_INET_MIB2_H */
+
+/* Define to 1 if you have the `inet_network' function. */
+#define HAVE_INET_NETWORK 1
+
+/* Define to 1 if you have the `inet_ntop' function. */
+#define HAVE_INET_NTOP 1
+
+/* Define to 1 if you have the `inet_pton' function. */
+#define HAVE_INET_PTON 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `IOHIDManagerCreate' function. */
+/* #undef HAVE_IOHIDMANAGERCREATE */
+
+/* Define to 1 if you have the <IOKit/hid/IOHIDLib.h> header file. */
+/* #undef HAVE_IOKIT_HID_IOHIDLIB_H */
+
+/* Define to 1 if you have the <IOKit/IOKitLib.h> header file. */
+/* #undef HAVE_IOKIT_IOKITLIB_H */
+
+/* Define to 1 if you have the <io.h> header file. */
+#define HAVE_IO_H 1
+
+/* Define to 1 if you have the `isinf' function. */
+/* #undef HAVE_ISINF */
+
+/* Define to 1 if you have the `isnan' function. */
+/* #undef HAVE_ISNAN */
+
+/* Define to 1 if you have the <jack/jack.h> header file. */
+/* #undef HAVE_JACK_JACK_H */
+
+/* Define to 1 if you have the <jpeglib.h> header file. */
+/* #undef HAVE_JPEGLIB_H */
+
+/* Define to 1 if you have the `kqueue' function. */
+/* #undef HAVE_KQUEUE */
+
+/* Define to 1 if you have the <kstat.h> header file. */
+/* #undef HAVE_KSTAT_H */
+
+/* Define to 1 if you have the <lber.h> header file. */
+/* #undef HAVE_LBER_H */
+
+/* Define if you have the LittleCMS development environment */
+/* #undef HAVE_LCMS */
+
+/* Define to 1 if you have the <lcms.h> header file. */
+/* #undef HAVE_LCMS_H */
+
+/* Define to 1 if you have the <lcms/lcms.h> header file. */
+/* #undef HAVE_LCMS_LCMS_H */
+
+/* Define if you have the OpenLDAP development environment */
+/* #undef HAVE_LDAP */
+
+/* Define to 1 if you have the `ldap_count_references' function. */
+/* #undef HAVE_LDAP_COUNT_REFERENCES */
+
+/* Define to 1 if you have the `ldap_first_reference' function. */
+/* #undef HAVE_LDAP_FIRST_REFERENCE */
+
+/* Define to 1 if you have the <ldap.h> header file. */
+/* #undef HAVE_LDAP_H */
+
+/* Define to 1 if you have the `ldap_next_reference' function. */
+/* #undef HAVE_LDAP_NEXT_REFERENCE */
+
+/* Define to 1 if you have the `ldap_parse_reference' function. */
+/* #undef HAVE_LDAP_PARSE_REFERENCE */
+
+/* Define to 1 if you have the `ldap_parse_sortresponse_control' function. */
+/* #undef HAVE_LDAP_PARSE_SORTRESPONSE_CONTROL */
+
+/* Define to 1 if you have the `ldap_parse_sort_control' function. */
+/* #undef HAVE_LDAP_PARSE_SORT_CONTROL */
+
+/* Define to 1 if you have the `ldap_parse_vlvresponse_control' function. */
+/* #undef HAVE_LDAP_PARSE_VLVRESPONSE_CONTROL */
+
+/* Define to 1 if you have the `ldap_parse_vlv_control' function. */
+/* #undef HAVE_LDAP_PARSE_VLV_CONTROL */
+
+/* Define if you have libaudioIO */
+/* #undef HAVE_LIBAUDIOIO */
+
+/* Define to 1 if you have the <libaudioio.h> header file. */
+/* #undef HAVE_LIBAUDIOIO_H */
+
+/* Define to 1 if you have the `i386' library (-li386). */
+/* #undef HAVE_LIBI386 */
+
+/* Define to 1 if you have the `kstat' library (-lkstat). */
+/* #undef HAVE_LIBKSTAT */
+
+/* Define to 1 if you have the `ossaudio' library (-lossaudio). */
+/* #undef HAVE_LIBOSSAUDIO */
+
+/* Define if you have the libxml2 library */
+/* #undef HAVE_LIBXML2 */
+
+/* Define to 1 if you have the <libxml/parser.h> header file. */
+/* #undef HAVE_LIBXML_PARSER_H */
+
+/* Define if you have the X Shape extension */
+/* #undef HAVE_LIBXSHAPE */
+
+/* Define to 1 if you have the <libxslt/pattern.h> header file. */
+/* #undef HAVE_LIBXSLT_PATTERN_H */
+
+/* Define to 1 if you have the <libxslt/transform.h> header file. */
+/* #undef HAVE_LIBXSLT_TRANSFORM_H */
+
+/* Define if you have the X Shm extension */
+/* #undef HAVE_LIBXXSHM */
+
+/* Define to 1 if you have the <link.h> header file. */
+/* #undef HAVE_LINK_H */
+
+/* Define if <linux/joystick.h> defines the Linux 2.2 joystick API */
+/* #undef HAVE_LINUX_22_JOYSTICK_API */
+
+/* Define to 1 if you have the <linux/capi.h> header file. */
+/* #undef HAVE_LINUX_CAPI_H */
+
+/* Define to 1 if you have the <linux/cdrom.h> header file. */
+/* #undef HAVE_LINUX_CDROM_H */
+
+/* Define to 1 if you have the <linux/compiler.h> header file. */
+/* #undef HAVE_LINUX_COMPILER_H */
+
+/* Define if Linux-style gethostbyname_r and gethostbyaddr_r are available */
+/* #undef HAVE_LINUX_GETHOSTBYNAME_R_6 */
+
+/* Define to 1 if you have the <linux/hdreg.h> header file. */
+/* #undef HAVE_LINUX_HDREG_H */
+
+/* Define to 1 if you have the <linux/input.h> header file. */
+/* #undef HAVE_LINUX_INPUT_H */
+
+/* Define to 1 if you have the <linux/ioctl.h> header file. */
+/* #undef HAVE_LINUX_IOCTL_H */
+
+/* Define to 1 if you have the <linux/ipx.h> header file. */
+/* #undef HAVE_LINUX_IPX_H */
+
+/* Define to 1 if you have the <linux/irda.h> header file. */
+/* #undef HAVE_LINUX_IRDA_H */
+
+/* Define to 1 if you have the <linux/joystick.h> header file. */
+/* #undef HAVE_LINUX_JOYSTICK_H */
+
+/* Define to 1 if you have the <linux/major.h> header file. */
+/* #undef HAVE_LINUX_MAJOR_H */
+
+/* Define to 1 if you have the <linux/param.h> header file. */
+/* #undef HAVE_LINUX_PARAM_H */
+
+/* Define to 1 if you have the <linux/serial.h> header file. */
+/* #undef HAVE_LINUX_SERIAL_H */
+
+/* Define to 1 if you have the <linux/types.h> header file. */
+/* #undef HAVE_LINUX_TYPES_H */
+
+/* Define to 1 if you have the <linux/ucdrom.h> header file. */
+/* #undef HAVE_LINUX_UCDROM_H */
+
+/* Define to 1 if you have the <linux/videodev.h> header file. */
+/* #undef HAVE_LINUX_VIDEODEV_H */
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* Define to 1 if you have the `lstat' function. */
+#define HAVE_LSTAT 1
+
+/* Define to 1 if you have the <machine/cpu.h> header file. */
+/* #undef HAVE_MACHINE_CPU_H */
+
+/* Define to 1 if you have the <machine/limits.h> header file. */
+/* #undef HAVE_MACHINE_LIMITS_H */
+
+/* Define to 1 if you have the <machine/soundcard.h> header file. */
+/* #undef HAVE_MACHINE_SOUNDCARD_H */
+
+/* Define to 1 if you have the <mach/machine.h> header file. */
+/* #undef HAVE_MACH_MACHINE_H */
+
+/* Define to 1 if you have the <mach/mach.h> header file. */
+/* #undef HAVE_MACH_MACH_H */
+
+/* Define to 1 if you have the <mach-o/dyld_images.h> header file. */
+/* #undef HAVE_MACH_O_DYLD_IMAGES_H */
+
+/* Define to 1 if you have the <mach-o/nlist.h> header file. */
+/* #undef HAVE_MACH_O_NLIST_H */
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mmap' function. */
+/* #undef HAVE_MMAP */
+
+/* Define to 1 if you have the <mntent.h> header file. */
+#define HAVE_MNTENT_H 1
+
+/* Define to 1 if the system has the type `mode_t'. */
+#define HAVE_MODE_T 1
+
+/* Define to 1 if you have the `mousemask' function. */
+/* #undef HAVE_MOUSEMASK */
+
+/* Define to 1 if you have the <mpg123.h> header file. */
+/* #undef HAVE_MPG123_H */
+
+/* Define if you have NAS including devel headers */
+/* #undef HAVE_NAS */
+
+/* Define to 1 if you have the <ncurses.h> header file. */
+/* #undef HAVE_NCURSES_H */
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/icmp_var.h> header file. */
+/* #undef HAVE_NETINET_ICMP_VAR_H */
+
+/* Define to 1 if you have the <netinet/if_ether.h> header file. */
+/* #undef HAVE_NETINET_IF_ETHER_H */
+
+/* Define to 1 if you have the <netinet/if_inarp.h> header file. */
+/* #undef HAVE_NETINET_IF_INARP_H */
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+/* #undef HAVE_NETINET_IN_H */
+
+/* Define to 1 if you have the <netinet/in_pcb.h> header file. */
+/* #undef HAVE_NETINET_IN_PCB_H */
+
+/* Define to 1 if you have the <netinet/in_systm.h> header file. */
+/* #undef HAVE_NETINET_IN_SYSTM_H */
+
+/* Define to 1 if you have the <netinet/ip.h> header file. */
+/* #undef HAVE_NETINET_IP_H */
+
+/* Define to 1 if you have the <netinet/ip_icmp.h> header file. */
+/* #undef HAVE_NETINET_IP_ICMP_H */
+
+/* Define to 1 if you have the <netinet/ip_var.h> header file. */
+/* #undef HAVE_NETINET_IP_VAR_H */
+
+/* Define to 1 if you have the <netinet/tcp_fsm.h> header file. */
+/* #undef HAVE_NETINET_TCP_FSM_H */
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+/* #undef HAVE_NETINET_TCP_H */
+
+/* Define to 1 if you have the <netinet/tcp_timer.h> header file. */
+/* #undef HAVE_NETINET_TCP_TIMER_H */
+
+/* Define to 1 if you have the <netinet/tcp_var.h> header file. */
+/* #undef HAVE_NETINET_TCP_VAR_H */
+
+/* Define to 1 if you have the <netinet/udp.h> header file. */
+/* #undef HAVE_NETINET_UDP_H */
+
+/* Define to 1 if you have the <netinet/udp_var.h> header file. */
+/* #undef HAVE_NETINET_UDP_VAR_H */
+
+/* Define to 1 if you have the <netipx/ipx.h> header file. */
+/* #undef HAVE_NETIPX_IPX_H */
+
+/* Define to 1 if you have the <net/if_arp.h> header file. */
+/* #undef HAVE_NET_IF_ARP_H */
+
+/* Define to 1 if you have the <net/if_dl.h> header file. */
+/* #undef HAVE_NET_IF_DL_H */
+
+/* Define to 1 if you have the <net/if.h> header file. */
+/* #undef HAVE_NET_IF_H */
+
+/* Define to 1 if you have the <net/if_types.h> header file. */
+/* #undef HAVE_NET_IF_TYPES_H */
+
+/* Define to 1 if you have the <net/route.h> header file. */
+/* #undef HAVE_NET_ROUTE_H */
+
+/* Define to 1 if `_msg_ptr' is a member of `ns_msg'. */
+/* #undef HAVE_NS_MSG__MSG_PTR */
+
+/* Define to 1 if the system has the type `off_t'. */
+#define HAVE_OFF_T 1
+
+/* Define if mkdir takes only one argument */
+/* #undef HAVE_ONE_ARG_MKDIR */
+
+/* Define to 1 if you have the <OpenAL/al.h> header file. */
+/* #undef HAVE_OPENAL_AL_H */
+
+/* Define if OpenGL is present on the system */
+/* #undef HAVE_OPENGL */
+
+/* Define to 1 if you have the <openssl/err.h> header file. */
+/* #undef HAVE_OPENSSL_ERR_H */
+
+/* Define to 1 if you have the <openssl/ssl.h> header file. */
+/* #undef HAVE_OPENSSL_SSL_H */
+
+/* Define to 1 if you have the `pclose' function. */
+#define HAVE_PCLOSE 1
+
+/* Define to 1 if the system has the type `pid_t'. */
+/* #undef HAVE_PID_T */
+
+/* Define to 1 if you have the `pipe2' function. */
+/* #undef HAVE_PIPE2 */
+
+/* Define to 1 if you have the <png.h> header file. */
+/* #undef HAVE_PNG_H */
+
+/* Define to 1 if you have the `poll' function. */
+#define HAVE_POLL 1
+
+/* Define to 1 if you have the <poll.h> header file. */
+#define HAVE_POLL_H 1
+
+/* Define to 1 if you have the `popen' function. */
+#define HAVE_POPEN 1
+
+/* Define to 1 if you have the `port_create' function. */
+/* #undef HAVE_PORT_CREATE */
+
+/* Define to 1 if you have the <port.h> header file. */
+/* #undef HAVE_PORT_H */
+
+/* Define if we can use ppdev.h for parallel port access */
+/* #undef HAVE_PPDEV */
+
+/* Define to 1 if you have the `prctl' function. */
+/* #undef HAVE_PRCTL */
+
+/* Define to 1 if you have the `pread' function. */
+#define HAVE_PREAD 1
+
+/* Define to 1 if you have the <process.h> header file. */
+#define HAVE_PROCESS_H 1
+
+/* Define to 1 if you have the `pthread_attr_get_np' function. */
+/* #undef HAVE_PTHREAD_ATTR_GET_NP */
+
+/* Define to 1 if you have the `pthread_getattr_np' function. */
+/* #undef HAVE_PTHREAD_GETATTR_NP */
+
+/* Define to 1 if you have the `pthread_get_stackaddr_np' function. */
+/* #undef HAVE_PTHREAD_GET_STACKADDR_NP */
+
+/* Define to 1 if you have the `pthread_get_stacksize_np' function. */
+/* #undef HAVE_PTHREAD_GET_STACKSIZE_NP */
+
+/* Define to 1 if you have the <pthread.h> header file. */
+/* #undef HAVE_PTHREAD_H */
+
+/* Define to 1 if you have the <pthread_np.h> header file. */
+/* #undef HAVE_PTHREAD_NP_H */
+
+/* Define to 1 if you have the <pwd.h> header file. */
+/* #undef HAVE_PWD_H */
+
+/* Define to 1 if you have the `pwrite' function. */
+#define HAVE_PWRITE 1
+
+/* Define to 1 if you have the `readdir' function. */
+#define HAVE_READDIR 1
+
+/* Define to 1 if you have the `readlink' function. */
+#define HAVE_READLINK 1
+
+/* Define to 1 if you have the <regex.h> header file. */
+#define HAVE_REGEX_H 1
+
+/* Define to 1 if the system has the type `request_sense'. */
+/* #undef HAVE_REQUEST_SENSE */
+
+/* Define if you have the resolver library and header */
+/* #undef HAVE_RESOLV */
+
+/* Define to 1 if you have the <resolv.h> header file. */
+/* #undef HAVE_RESOLV_H */
+
+/* Define to 1 if you have the <sched.h> header file. */
+#define HAVE_SCHED_H 1
+
+/* Define to 1 if you have the `sched_setaffinity' function. */
+/* #undef HAVE_SCHED_SETAFFINITY */
+
+/* Define to 1 if you have the `sched_yield' function. */
+#define HAVE_SCHED_YIELD 1
+
+/* Define to 1 if `cmd' is a member of `scsireq_t'. */
+/* #undef HAVE_SCSIREQ_T_CMD */
+
+/* Define to 1 if you have the <scsi/scsi.h> header file. */
+/* #undef HAVE_SCSI_SCSI_H */
+
+/* Define to 1 if you have the <scsi/scsi_ioctl.h> header file. */
+/* #undef HAVE_SCSI_SCSI_IOCTL_H */
+
+/* Define to 1 if you have the <scsi/sg.h> header file. */
+/* #undef HAVE_SCSI_SG_H */
+
+/* Define to 1 if you have the `select' function. */
+#define HAVE_SELECT 1
+
+/* Define to 1 if you have the `sendmsg' function. */
+#define HAVE_SENDMSG 1
+
+/* Define to 1 if you have the `setproctitle' function. */
+/* #undef HAVE_SETPROCTITLE */
+
+/* Define to 1 if you have the `setrlimit' function. */
+/* #undef HAVE_SETRLIMIT */
+
+/* Define to 1 if you have the `settimeofday' function. */
+#define HAVE_SETTIMEOFDAY 1
+
+/* Define to 1 if `interface_id' is a member of `sg_io_hdr_t'. */
+/* #undef HAVE_SG_IO_HDR_T_INTERFACE_ID */
+
+/* Define if sigaddset is supported */
+#define HAVE_SIGADDSET 1
+
+/* Define to 1 if you have the `sigaltstack' function. */
+/* #undef HAVE_SIGALTSTACK */
+
+/* Define to 1 if `si_fd' is a member of `siginfo_t'. */
+/* #undef HAVE_SIGINFO_T_SI_FD */
+
+/* Define to 1 if you have the `sigprocmask' function. */
+#define HAVE_SIGPROCMASK 1
+
+/* Define to 1 if the system has the type `sigset_t'. */
+#define HAVE_SIGSET_T 1
+
+/* Define to 1 if the system has the type `size_t'. */
+#define HAVE_SIZE_T 1
+
+/* Define to 1 if you have the `snprintf' function. */
+/* #undef HAVE_SNPRINTF */
+
+/* Define to 1 if you have the `socketpair' function. */
+#define HAVE_SOCKETPAIR 1
+
+/* Define to 1 if you have the <soundcard.h> header file. */
+/* #undef HAVE_SOUNDCARD_H */
+
+/* Define to 1 if you have the `spawnvp' function. */
+#define HAVE_SPAWNVP 1
+
+/* Define to 1 if the system has the type `ssize_t'. */
+#define HAVE_SSIZE_T 1
+
+/* Define to 1 if you have the `statfs' function. */
+#define HAVE_STATFS 1
+
+/* Define to 1 if you have the `statvfs' function. */
+#define HAVE_STATVFS 1
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+/* #undef HAVE_STDINT_H */
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#define HAVE_STRNCASECMP 1
+
+/* Define to 1 if you have the <stropts.h> header file. */
+/* #undef HAVE_STROPTS_H */
+
+/* Define to 1 if you have the `strtold' function. */
+/* #undef HAVE_STRTOLD */
+
+/* Define to 1 if you have the `strtoll' function. */
+#define HAVE_STRTOLL 1
+
+/* Define to 1 if you have the `strtoull' function. */
+#define HAVE_STRTOULL 1
+
+/* Define to 1 if `direction' is a member of `struct ff_effect'. */
+/* #undef HAVE_STRUCT_FF_EFFECT_DIRECTION */
+
+/* Define to 1 if `icps_outhist' is a member of `struct icmpstat'. */
+/* #undef HAVE_STRUCT_ICMPSTAT_ICPS_OUTHIST */
+
+/* Define to 1 if `msg_accrights' is a member of `struct msghdr'. */
+/* #undef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */
+
+/* Define to 1 if `mt_blkno' is a member of `struct mtget'. */
+#define HAVE_STRUCT_MTGET_MT_BLKNO 1
+
+/* Define to 1 if `mt_blksiz' is a member of `struct mtget'. */
+/* #undef HAVE_STRUCT_MTGET_MT_BLKSIZ */
+
+/* Define to 1 if `mt_gstat' is a member of `struct mtget'. */
+#define HAVE_STRUCT_MTGET_MT_GSTAT 1
+
+/* Define to 1 if `name' is a member of `struct option'. */
+#define HAVE_STRUCT_OPTION_NAME 1
+
+/* Define to 1 if `sin6_scope_id' is a member of `struct sockaddr_in6'. */
+/* #undef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID */
+
+/* Define to 1 if `sa_len' is a member of `struct sockaddr'. */
+/* #undef HAVE_STRUCT_SOCKADDR_SA_LEN */
+
+/* Define to 1 if `sun_len' is a member of `struct sockaddr_un'. */
+/* #undef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN */
+
+/* Define to 1 if `f_bavail' is a member of `struct statfs'. */
+#define HAVE_STRUCT_STATFS_F_BAVAIL 1
+
+/* Define to 1 if `f_bfree' is a member of `struct statfs'. */
+#define HAVE_STRUCT_STATFS_F_BFREE 1
+
+/* Define to 1 if `f_favail' is a member of `struct statfs'. */
+/* #undef HAVE_STRUCT_STATFS_F_FAVAIL */
+
+/* Define to 1 if `f_ffree' is a member of `struct statfs'. */
+#define HAVE_STRUCT_STATFS_F_FFREE 1
+
+/* Define to 1 if `f_frsize' is a member of `struct statfs'. */
+/* #undef HAVE_STRUCT_STATFS_F_FRSIZE */
+
+/* Define to 1 if `f_namelen' is a member of `struct statfs'. */
+#define HAVE_STRUCT_STATFS_F_NAMELEN 1
+
+/* Define to 1 if `f_blocks' is a member of `struct statvfs'. */
+#define HAVE_STRUCT_STATVFS_F_BLOCKS 1
+
+/* Define to 1 if `st_atim' is a member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_ATIM 1
+
+/* Define to 1 if `st_blocks' is a member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+
+/* Define to 1 if `st_ctim' is a member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_CTIM 1
+
+/* Define to 1 if `st_mtim' is a member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_MTIM 1
+
+/* Define to 1 if the system has the type `struct xinpgen'. */
+/* #undef HAVE_STRUCT_XINPGEN */
+
+/* Define to 1 if you have the `symlink' function. */
+/* #undef HAVE_SYMLINK */
+
+/* Define to 1 if you have the <syscall.h> header file. */
+/* #undef HAVE_SYSCALL_H */
+
+/* Define to 1 if you have the <sys/asoundlib.h> header file. */
+/* #undef HAVE_SYS_ASOUNDLIB_H */
+
+/* Define to 1 if you have the <sys/cdio.h> header file. */
+/* #undef HAVE_SYS_CDIO_H */
+
+/* Define to 1 if you have the <sys/elf32.h> header file. */
+#define HAVE_SYS_ELF32_H 1
+
+/* Define to 1 if you have the <sys/epoll.h> header file. */
+/* #undef HAVE_SYS_EPOLL_H */
+
+/* Define to 1 if you have the <sys/errno.h> header file. */
+#define HAVE_SYS_ERRNO_H 1
+
+/* Define to 1 if you have the <sys/event.h> header file. */
+/* #undef HAVE_SYS_EVENT_H */
+
+/* Define to 1 if you have the <sys/exec_elf.h> header file. */
+/* #undef HAVE_SYS_EXEC_ELF_H */
+
+/* Define to 1 if you have the <sys/filio.h> header file. */
+/* #undef HAVE_SYS_FILIO_H */
+
+/* Define to 1 if you have the <sys/inotify.h> header file. */
+/* #undef HAVE_SYS_INOTIFY_H */
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/ipc.h> header file. */
+#define HAVE_SYS_IPC_H 1
+
+/* Define to 1 if you have the <sys/limits.h> header file. */
+/* #undef HAVE_SYS_LIMITS_H */
+
+/* Define to 1 if you have the <sys/link.h> header file. */
+/* #undef HAVE_SYS_LINK_H */
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+/* #undef HAVE_SYS_MMAN_H */
+
+/* Define to 1 if you have the <sys/modem.h> header file. */
+/* #undef HAVE_SYS_MODEM_H */
+
+/* Define to 1 if you have the <sys/mount.h> header file. */
+#define HAVE_SYS_MOUNT_H 1
+
+/* Define to 1 if you have the <sys/msg.h> header file. */
+#define HAVE_SYS_MSG_H 1
+
+/* Define to 1 if you have the <sys/mtio.h> header file. */
+#define HAVE_SYS_MTIO_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#define HAVE_SYS_POLL_H 1
+
+/* Define to 1 if you have the <sys/prctl.h> header file. */
+/* #undef HAVE_SYS_PRCTL_H */
+
+/* Define to 1 if you have the <sys/protosw.h> header file. */
+/* #undef HAVE_SYS_PROTOSW_H */
+
+/* Define to 1 if you have the <sys/ptrace.h> header file. */
+/* #undef HAVE_SYS_PTRACE_H */
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+/* #undef HAVE_SYS_RESOURCE_H */
+
+/* Define to 1 if you have the <sys/scsiio.h> header file. */
+/* #undef HAVE_SYS_SCSIIO_H */
+
+/* Define to 1 if you have the <sys/shm.h> header file. */
+/* #undef HAVE_SYS_SHM_H */
+
+/* Define to 1 if you have the <sys/signal.h> header file. */
+/* #undef HAVE_SYS_SIGNAL_H */
+
+/* Define to 1 if you have the <sys/socketvar.h> header file. */
+/* #undef HAVE_SYS_SOCKETVAR_H */
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/sockio.h> header file. */
+/* #undef HAVE_SYS_SOCKIO_H */
+
+/* Define to 1 if you have the <sys/soundcard.h> header file. */
+#define HAVE_SYS_SOUNDCARD_H 1
+
+/* Define to 1 if you have the <sys/statfs.h> header file. */
+#define HAVE_SYS_STATFS_H 1
+
+/* Define to 1 if you have the <sys/statvfs.h> header file. */
+#define HAVE_SYS_STATVFS_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/strtio.h> header file. */
+/* #undef HAVE_SYS_STRTIO_H */
+
+/* Define to 1 if you have the <sys/syscall.h> header file. */
+/* #undef HAVE_SYS_SYSCALL_H */
+
+/* Define to 1 if you have the <sys/sysctl.h> header file. */
+/* #undef HAVE_SYS_SYSCTL_H */
+
+/* Define to 1 if you have the <sys/thr.h> header file. */
+/* #undef HAVE_SYS_THR_H */
+
+/* Define to 1 if you have the <sys/tihdr.h> header file. */
+/* #undef HAVE_SYS_TIHDR_H */
+
+/* Define to 1 if you have the <sys/timeout.h> header file. */
+/* #undef HAVE_SYS_TIMEOUT_H */
+
+/* Define to 1 if you have the <sys/times.h> header file. */
+#define HAVE_SYS_TIMES_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <sys/un.h> header file. */
+#define HAVE_SYS_UN_H 1
+
+/* Define to 1 if you have the <sys/user.h> header file. */
+/* #undef HAVE_SYS_USER_H */
+
+/* Define to 1 if you have the <sys/utsname.h> header file. */
+/* #undef HAVE_SYS_UTSNAME_H */
+
+/* Define to 1 if you have the <sys/vfs.h> header file. */
+#define HAVE_SYS_VFS_H 1
+
+/* Define to 1 if you have the <sys/vm86.h> header file. */
+/* #undef HAVE_SYS_VM86_H */
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the `tcgetattr' function. */
+#define HAVE_TCGETATTR 1
+
+/* Define to 1 if you have the <termios.h> header file. */
+#define HAVE_TERMIOS_H 1
+
+/* Define to 1 if you have the `thr_kill2' function. */
+/* #undef HAVE_THR_KILL2 */
+
+/* Define to 1 if you have the `timegm' function. */
+#define HAVE_TIMEGM 1
+
+/* Define if you have the timezone variable */
+#define HAVE_TIMEZONE 1
+
+/* Define to 1 if you have the <ucontext.h> header file. */
+/* #undef HAVE_UCONTEXT_H */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* #undef HAVE_UNISTD_H */
+
+/* Define to 1 if you have the `usleep' function. */
+#define HAVE_USLEEP 1
+
+/* Define to 1 if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* Define to 1 if you have the <valgrind/memcheck.h> header file. */
+/* #undef HAVE_VALGRIND_MEMCHECK_H */
+
+/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
+/* #undef HAVE_VALGRIND_VALGRIND_H */
+
+/* Define to 1 if you have the `vsnprintf' function. */
+/* #undef HAVE_VSNPRINTF */
+
+/* Define to 1 if you have the `wait4' function. */
+#define HAVE_WAIT4 1
+
+/* Define to 1 if you have the `waitpid' function. */
+#define HAVE_WAITPID 1
+
+/* Define to 1 if you have the <X11/extensions/shape.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_SHAPE_H */
+
+/* Define to 1 if you have the <X11/extensions/Xcomposite.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XCOMPOSITE_H */
+
+/* Define to 1 if you have the <X11/extensions/xf86vmode.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XF86VMODE_H */
+
+/* Define to 1 if you have the <X11/extensions/xf86vmproto.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XF86VMPROTO_H */
+
+/* Define to 1 if you have the <X11/extensions/Xinerama.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XINERAMA_H */
+
+/* Define to 1 if you have the <X11/extensions/XInput.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XINPUT_H */
+
+/* Define to 1 if you have the <X11/extensions/Xrandr.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XRANDR_H */
+
+/* Define to 1 if you have the <X11/extensions/Xrender.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XRENDER_H */
+
+/* Define to 1 if you have the <X11/extensions/XShm.h> header file. */
+/* #undef HAVE_X11_EXTENSIONS_XSHM_H */
+
+/* Define to 1 if you have the <X11/Xcursor/Xcursor.h> header file. */
+/* #undef HAVE_X11_XCURSOR_XCURSOR_H */
+
+/* Define to 1 if you have the <X11/XKBlib.h> header file. */
+/* #undef HAVE_X11_XKBLIB_H */
+
+/* Define to 1 if you have the <X11/Xlib.h> header file. */
+/* #undef HAVE_X11_XLIB_H */
+
+/* Define to 1 if you have the <X11/Xutil.h> header file. */
+/* #undef HAVE_X11_XUTIL_H */
+
+/* Define to 1 if `callback' is a member of `XICCallback'. */
+/* #undef HAVE_XICCALLBACK_CALLBACK */
+
+/* Define if you have the XKB extension */
+/* #undef HAVE_XKB */
+
+/* Define if libxml2 has the xmlNewDocPI function */
+/* #undef HAVE_XMLNEWDOCPI */
+
+/* Define if libxml2 has the xmlReadMemory function */
+/* #undef HAVE_XMLREADMEMORY */
+
+/* Define if Xrender has the XRenderSetPictureTransform function */
+/* #undef HAVE_XRENDERSETPICTURETRANSFORM */
+
+/* Define to 1 if you have the `z' library (-lz). */
+#define HAVE_ZLIB 1
+
+/* Define to 1 if you have the <zlib.h> header file. */
+#define HAVE_ZLIB_H 1
+
+/* Define to 1 if you have the `_pclose' function. */
+#define HAVE__PCLOSE 1
+
+/* Define to 1 if you have the `_popen' function. */
+#define HAVE__POPEN 1
+
+/* Define to 1 if you have the `_snprintf' function. */
+#define HAVE__SNPRINTF 1
+
+/* Define to 1 if you have the `_spawnvp' function. */
+#define HAVE__SPAWNVP 1
+
+/* Define to 1 if you have the `_strdup' function. */
+#define HAVE__STRDUP 1
+
+/* Define to 1 if you have the `_stricmp' function. */
+/* #undef HAVE__STRICMP */
+
+/* Define to 1 if you have the `_strnicmp' function. */
+/* #undef HAVE__STRNICMP */
+
+/* Define to 1 if you have the `_strtoi64' function. */
+/* #undef HAVE__STRTOI64 */
+
+/* Define to 1 if you have the `_strtoui64' function. */
+/* #undef HAVE__STRTOUI64 */
+
+/* Define to 1 if you have the `_vsnprintf' function. */
+#define HAVE__VSNPRINTF 1
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "wine-devel@winehq.org"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "Wine"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "Wine 1.1.36"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "wine"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL "http://www.winehq.org"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.1.36"
+
+/* Define to the soname of the libcapi20 library. */
+/* #undef SONAME_LIBCAPI20 */
+
+/* Define to the soname of the libcrypto library. */
+/* #undef SONAME_LIBCRYPTO */
+
+/* Define to the soname of the libcups library. */
+/* #undef SONAME_LIBCUPS */
+
+/* Define to the soname of the libcurses library. */
+/* #undef SONAME_LIBCURSES */
+
+/* Define to the soname of the libfontconfig library. */
+/* #undef SONAME_LIBFONTCONFIG */
+
+/* Define to the soname of the libfreetype library. */
+/* #undef SONAME_LIBFREETYPE */
+
+/* Define to the soname of the libGL library. */
+/* #undef SONAME_LIBGL */
+
+/* Define to the soname of the libGLU library. */
+/* #undef SONAME_LIBGLU */
+
+/* Define to the soname of the libgnutls library. */
+/* #undef SONAME_LIBGNUTLS */
+
+/* Define to the soname of the libgsm library. */
+/* #undef SONAME_LIBGSM */
+
+/* Define to the soname of the libhal library. */
+/* #undef SONAME_LIBHAL */
+
+/* Define to the soname of the libjack library. */
+/* #undef SONAME_LIBJACK */
+
+/* Define to the soname of the libjpeg library. */
+/* #undef SONAME_LIBJPEG */
+
+/* Define to the soname of the libncurses library. */
+/* #undef SONAME_LIBNCURSES */
+
+/* Define to the soname of the libodbc library. */
+#define SONAME_LIBODBC "libodbc.dll"
+
+/* Define to the soname of the libpng library. */
+/* #undef SONAME_LIBPNG */
+
+/* Define to the soname of the libsane library. */
+/* #undef SONAME_LIBSANE */
+
+/* Define to the soname of the libssl library. */
+/* #undef SONAME_LIBSSL */
+
+/* Define to the soname of the libX11 library. */
+/* #undef SONAME_LIBX11 */
+
+/* Define to the soname of the libXcomposite library. */
+/* #undef SONAME_LIBXCOMPOSITE */
+
+/* Define to the soname of the libXcursor library. */
+/* #undef SONAME_LIBXCURSOR */
+
+/* Define to the soname of the libXext library. */
+/* #undef SONAME_LIBXEXT */
+
+/* Define to the soname of the libXi library. */
+/* #undef SONAME_LIBXI */
+
+/* Define to the soname of the libXinerama library. */
+/* #undef SONAME_LIBXINERAMA */
+
+/* Define to the soname of the libXrandr library. */
+/* #undef SONAME_LIBXRANDR */
+
+/* Define to the soname of the libXrender library. */
+/* #undef SONAME_LIBXRENDER */
+
+/* Define to the soname of the libxslt library. */
+/* #undef SONAME_LIBXSLT */
+
+/* Define to the soname of the libXxf86vm library. */
+/* #undef SONAME_LIBXXF86VM */
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if the X Window System is missing or not being used. */
+#define X_DISPLAY_MISSING 1
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to a macro to output a .cfi assembly pseudo-op */
+#define __ASM_CFI(str) str
+
+/* Define to a macro to define an assembly function */
+#define __ASM_DEFINE_FUNC(name,suffix,code) asm(".text\n\t.align 4\n\t.globl _" #name suffix "\n\t.def _" #name suffix "; .scl 2; .type 32; .endef\n_" #name suffix ":\n\t.cfi_startproc\n\t" code "\n\t.cfi_endproc");
+
+/* Define to a macro to generate an assembly function directive */
+#define __ASM_FUNC(name) ".def " __ASM_NAME(name) "; .scl 2; .type 32; .endef"
+
+/* Define to a macro to generate an assembly function with C calling
+   convention */
+#define __ASM_GLOBAL_FUNC(name,code) __ASM_DEFINE_FUNC(name,"",code)
+
+/* Define to a macro to generate an assembly name from a C symbol */
+#define __ASM_NAME(name) "_" name
+
+/* Define to a macro to generate an stdcall suffix */
+#define __ASM_STDCALL(args) "@" #args
+
+/* Define to a macro to generate an assembly function with stdcall calling
+   convention */
+#define __ASM_STDCALL_FUNC(name,args,code) __ASM_DEFINE_FUNC(name,__ASM_STDCALL(args),code)
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/d3d9.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/d3d9.h	(revision 35052)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/d3d9.h	(revision 35052)
@@ -0,0 +1,2039 @@
+/*
+ * Copyright (C) 2002-2003 Jason Edmeades
+ *                         Raphael Junqueira
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef __WINE_D3D9_H
+#define __WINE_D3D9_H
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION  0x0900
+#endif
+
+#include <stdlib.h>
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+
+#ifndef __WINESRC__
+# include <windows.h>
+#endif
+
+#include <d3d9types.h>
+#include <d3d9caps.h>
+
+/*****************************************************************************
+ * Behavior Flags for IDirect3D8::CreateDevice
+ */
+#define D3DCREATE_FPU_PRESERVE                  0x00000002L
+#define D3DCREATE_MULTITHREADED                 0x00000004L
+#define D3DCREATE_PUREDEVICE                    0x00000010L
+#define D3DCREATE_SOFTWARE_VERTEXPROCESSING     0x00000020L
+#define D3DCREATE_HARDWARE_VERTEXPROCESSING     0x00000040L
+#define D3DCREATE_MIXED_VERTEXPROCESSING        0x00000080L
+#define D3DCREATE_DISABLE_DRIVER_MANAGEMENT     0x00000100L
+#define D3DCREATE_ADAPTERGROUP_DEVICE           0x00000200L
+
+/*****************************************************************************
+ * Flags for SetPrivateData
+ */
+#define D3DSPD_IUNKNOWN                         0x00000001L
+
+
+/*****************************************************************************
+ * #defines and error codes
+ */
+#define D3D_SDK_VERSION                         32
+#define D3DADAPTER_DEFAULT                      0
+#define D3DENUM_NO_WHQL_LEVEL                   0x00000002L
+#define D3DPRESENT_BACK_BUFFERS_MAX             3L
+#define D3DSGR_NO_CALIBRATION                   0x00000000L
+#define D3DSGR_CALIBRATE                        0x00000001L
+
+#define _FACD3D  0x876
+#define MAKE_D3DHRESULT( code )                 MAKE_HRESULT( 1, _FACD3D, code )
+#define MAKE_D3DSTATUS( code )                  MAKE_HRESULT( 0, _FACD3D, code )
+
+/*****************************************************************************
+ * Direct3D Errors
+ */
+#define D3D_OK                                  S_OK
+#define D3DERR_WRONGTEXTUREFORMAT               MAKE_D3DHRESULT(2072)
+#define D3DERR_UNSUPPORTEDCOLOROPERATION        MAKE_D3DHRESULT(2073)
+#define D3DERR_UNSUPPORTEDCOLORARG              MAKE_D3DHRESULT(2074)
+#define D3DERR_UNSUPPORTEDALPHAOPERATION        MAKE_D3DHRESULT(2075)
+#define D3DERR_UNSUPPORTEDALPHAARG              MAKE_D3DHRESULT(2076)
+#define D3DERR_TOOMANYOPERATIONS                MAKE_D3DHRESULT(2077)
+#define D3DERR_CONFLICTINGTEXTUREFILTER         MAKE_D3DHRESULT(2078)
+#define D3DERR_UNSUPPORTEDFACTORVALUE           MAKE_D3DHRESULT(2079)
+#define D3DERR_CONFLICTINGRENDERSTATE           MAKE_D3DHRESULT(2081)
+#define D3DERR_UNSUPPORTEDTEXTUREFILTER         MAKE_D3DHRESULT(2082)
+#define D3DERR_CONFLICTINGTEXTUREPALETTE        MAKE_D3DHRESULT(2086)
+#define D3DERR_DRIVERINTERNALERROR              MAKE_D3DHRESULT(2087)
+#define D3DERR_NOTFOUND                         MAKE_D3DHRESULT(2150)
+#define D3DERR_MOREDATA                         MAKE_D3DHRESULT(2151)
+#define D3DERR_DEVICELOST                       MAKE_D3DHRESULT(2152)
+#define D3DERR_DEVICENOTRESET                   MAKE_D3DHRESULT(2153)
+#define D3DERR_NOTAVAILABLE                     MAKE_D3DHRESULT(2154)
+#define D3DERR_OUTOFVIDEOMEMORY                 MAKE_D3DHRESULT(380)
+#define D3DERR_INVALIDDEVICE                    MAKE_D3DHRESULT(2155)
+#define D3DERR_INVALIDCALL                      MAKE_D3DHRESULT(2156)
+#define D3DERR_DRIVERINVALIDCALL                MAKE_D3DHRESULT(2157)
+#define D3DERR_WASSTILLDRAWING                  MAKE_D3DHRESULT(540)
+#define D3DOK_NOAUTOGEN                         MAKE_D3DSTATUS(2159)
+
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(IID_IDirect3D9,                   0x81BDCBCA, 0x64D4, 0x426D, 0xAE, 0x8D, 0xAD, 0x1, 0x47, 0xF4, 0x27, 0x5C);
+typedef struct IDirect3D9 *LPDIRECT3D9, *PDIRECT3D9;
+
+DEFINE_GUID(IID_IDirect3D9Ex,                 0x02177241, 0x69FC, 0x400C, 0x8F, 0xF1, 0x93, 0xA4, 0x4D, 0xF6, 0x86, 0x1D);
+typedef struct IDirect3D9Ex *LPDIRECT3D9EX, *PDIRECT3D9EX;
+
+DEFINE_GUID(IID_IDirect3DDevice9,             0xd0223b96, 0xbf7a, 0x43fd, 0x92, 0xbd, 0xa4, 0x3b, 0xd, 0x82, 0xb9, 0xeb);
+typedef struct IDirect3DDevice9 *LPDIRECT3DDEVICE9;
+
+DEFINE_GUID(IID_IDirect3DDevice9Ex,           0xb18b10ce, 0x2649, 0x405a, 0x87, 0xf, 0x95, 0xf7, 0x77, 0xd4, 0x31, 0x3a);
+typedef struct IDirect3DDevice9Ex *LPDIRECT3DDEVICE9EX, *PDIRECT3DDEVICE9EX;
+
+DEFINE_GUID(IID_IDirect3DResource9,           0x5eec05d, 0x8f7d, 0x4362, 0xb9, 0x99, 0xd1, 0xba, 0xf3, 0x57, 0xc7, 0x4);
+typedef struct IDirect3DResource9 *LPDIRECT3DRESOURCE9, *PDIRECT3DRESOURCE9;
+
+DEFINE_GUID(IID_IDirect3DVertexBuffer9,       0xb64bb1b5, 0xfd70, 0x4df6, 0xbf, 0x91, 0x19, 0xd0, 0xa1, 0x24, 0x55, 0xe3);
+typedef struct IDirect3DVertexBuffer9 *LPDIRECT3DVERTEXBUFFER9, *PDIRECT3DVERTEXBUFFER9;
+
+DEFINE_GUID(IID_IDirect3DVolume9,             0x24f416e6, 0x1f67, 0x4aa7, 0xb8, 0x8e, 0xd3, 0x3f, 0x6f, 0x31, 0x28, 0xa1);
+typedef struct IDirect3DVolume9 *LPDIRECT3DVOLUME9, *PDIRECT3DVOLUME9;
+
+DEFINE_GUID(IID_IDirect3DSwapChain9,          0x794950f2, 0xadfc, 0x458a, 0x90, 0x5e, 0x10, 0xa1, 0xb, 0xb, 0x50, 0x3b);
+typedef struct IDirect3DSwapChain9 *LPDIRECT3DSWAPCHAIN9, *PDIRECT3DSWAPCHAIN9;
+
+DEFINE_GUID(IID_IDirect3DSwapChain9Ex,        0x91886caf, 0x1c3d, 0x4d2e, 0xa0, 0xab, 0x3e, 0x4c, 0x7d, 0x8d, 0x33, 0x3);
+typedef struct IDirect3DSwapChain9Ex *LPDIRECT3DSWAPCHAIN9EX, *PDIRECT3DSWAPCHAIN9EX;
+
+DEFINE_GUID(IID_IDirect3DSurface9,            0xcfbaf3a, 0x9ff6, 0x429a, 0x99, 0xb3, 0xa2, 0x79, 0x6a, 0xf8, 0xb8, 0x9b);
+typedef struct IDirect3DSurface9 *LPDIRECT3DSURFACE9, *PDIRECT3DSURFACE9;
+
+DEFINE_GUID(IID_IDirect3DIndexBuffer9,        0x7c9dd65e, 0xd3f7, 0x4529, 0xac, 0xee, 0x78, 0x58, 0x30, 0xac, 0xde, 0x35);
+typedef struct IDirect3DIndexBuffer9 *LPDIRECT3DINDEXBUFFER9, *PDIRECT3DINDEXBUFFER9;
+
+DEFINE_GUID(IID_IDirect3DBaseTexture9,        0x580ca87e, 0x1d3c, 0x4d54, 0x99, 0x1d, 0xb7, 0xd3, 0xe3, 0xc2, 0x98, 0xce);
+typedef struct IDirect3DBaseTexture9 *LPDIRECT3DBASETEXTURE9, *PDIRECT3DBASETEXTURE9;
+
+DEFINE_GUID(IID_IDirect3DTexture9,            0x85c31227, 0x3de5, 0x4f00, 0x9b, 0x3a, 0xf1, 0x1a, 0xc3, 0x8c, 0x18, 0xb5);
+typedef struct IDirect3DTexture9 *LPDIRECT3DTEXTURE9, *PDIRECT3DTEXTURE9;
+
+DEFINE_GUID(IID_IDirect3DCubeTexture9,        0xfff32f81, 0xd953, 0x473a, 0x92, 0x23, 0x93, 0xd6, 0x52, 0xab, 0xa9, 0x3f);
+typedef struct IDirect3DCubeTexture9 *LPDIRECT3DCUBETEXTURE9, *PDIRECT3DCUBETEXTURE9;
+
+DEFINE_GUID(IID_IDirect3DVolumeTexture9,      0x2518526c, 0xe789, 0x4111, 0xa7, 0xb9, 0x47, 0xef, 0x32, 0x8d, 0x13, 0xe6);
+typedef struct IDirect3DVolumeTexture9 *LPDIRECT3DVOLUMETEXTURE9, *PDIRECT3DVOLUMETEXTURE9;
+
+DEFINE_GUID(IID_IDirect3DVertexDeclaration9,  0xdd13c59c, 0x36fa, 0x4098, 0xa8, 0xfb, 0xc7, 0xed, 0x39, 0xdc, 0x85, 0x46);
+typedef struct IDirect3DVertexDeclaration9 *LPDIRECT3DVERTEXDECLARATION9;
+
+DEFINE_GUID(IID_IDirect3DVertexShader9,       0xefc5557e, 0x6265, 0x4613, 0x8a, 0x94, 0x43, 0x85, 0x78, 0x89, 0xeb, 0x36);
+typedef struct IDirect3DVertexShader9 *LPDIRECT3DVERTEXSHADER9;
+
+DEFINE_GUID(IID_IDirect3DPixelShader9,        0x6d3bdbdc, 0x5b02, 0x4415, 0xb8, 0x52, 0xce, 0x5e, 0x8b, 0xcc, 0xb2, 0x89);
+typedef struct IDirect3DPixelShader9 *LPDIRECT3DPIXELSHADER9;
+
+DEFINE_GUID(IID_IDirect3DStateBlock9,         0xb07c4fe5, 0x310d, 0x4ba8, 0xa2, 0x3c, 0x4f, 0xf, 0x20, 0x6f, 0x21, 0x8b);
+typedef struct IDirect3DStateBlock9 *LPDIRECT3DSTATEBLOCK9;
+
+DEFINE_GUID(IID_IDirect3DQuery9,              0xd9771460, 0xa695, 0x4f26, 0xbb, 0xd3, 0x27, 0xb8, 0x40, 0xb5, 0x41, 0xcc);
+typedef struct IDirect3DQuery9 *LPDIRECT3DQUERY9, *PDIRECT3DQUERY9;
+
+/*****************************************************************************
+ * IDirect3D9 interface
+ */
+#define INTERFACE IDirect3D9
+DECLARE_INTERFACE_(IDirect3D9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3D9 methods ***/
+    STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
+    STDMETHOD_(UINT, GetAdapterCount)(THIS) PURE;
+    STDMETHOD(GetAdapterIdentifier)(THIS_ UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER9* pIdentifier) PURE;
+    STDMETHOD_(UINT, GetAdapterModeCount)(THIS_ UINT Adapter, D3DFORMAT Format) PURE;
+    STDMETHOD(EnumAdapterModes)(THIS_ UINT Adapter, D3DFORMAT Format, UINT Mode, D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT Adapter, D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(CheckDeviceType)(THIS_ UINT iAdapter, D3DDEVTYPE DevType, D3DFORMAT DisplayFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed) PURE;
+    STDMETHOD(CheckDeviceFormat)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) PURE;
+    STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat, BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType, DWORD* pQualityLevels) PURE;
+    STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat) PURE;
+    STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat, D3DFORMAT TargetFormat) PURE;
+    STDMETHOD(GetDeviceCaps)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) PURE;
+    STDMETHOD_(HMONITOR, GetAdapterMonitor)(THIS_ UINT Adapter) PURE;
+    STDMETHOD(CreateDevice)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, struct IDirect3DDevice9** ppReturnedDeviceInterface) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3D9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D9_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3D9_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3D9 methods ***/
+#define IDirect3D9_RegisterSoftwareDevice(p,a)                (p)->lpVtbl->RegisterSoftwareDevice(p,a)
+#define IDirect3D9_GetAdapterCount(p)                         (p)->lpVtbl->GetAdapterCount(p)
+#define IDirect3D9_GetAdapterIdentifier(p,a,b,c)              (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
+#define IDirect3D9_GetAdapterModeCount(p,a,b)                 (p)->lpVtbl->GetAdapterModeCount(p,a,b)
+#define IDirect3D9_EnumAdapterModes(p,a,b,c,d)                (p)->lpVtbl->EnumAdapterModes(p,a,b,c,d)
+#define IDirect3D9_GetAdapterDisplayMode(p,a,b)               (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
+#define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)               (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
+#define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e,f)
+#define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->lpVtbl->CheckDeviceFormatConversion(p,a,b,c,d)
+#define IDirect3D9_GetDeviceCaps(p,a,b,c)                     (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
+#define IDirect3D9_GetAdapterMonitor(p,a)                     (p)->lpVtbl->GetAdapterMonitor(p,a)
+#define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)                (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
+#else
+/*** IUnknown methods ***/
+#define IDirect3D9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D9_AddRef(p)             (p)->AddRef()
+#define IDirect3D9_Release(p)            (p)->Release()
+/*** IDirect3D9 methods ***/
+#define IDirect3D9_RegisterSoftwareDevice(p,a)                (p)->RegisterSoftwareDevice(a)
+#define IDirect3D9_GetAdapterCount(p)                         (p)->GetAdapterCount()
+#define IDirect3D9_GetAdapterIdentifier(p,a,b,c)              (p)->GetAdapterIdentifier(a,b,c)
+#define IDirect3D9_GetAdapterModeCount(p,a,b)                 (p)->GetAdapterModeCount(a,b)
+#define IDirect3D9_EnumAdapterModes(p,a,b,c,d)                (p)->EnumAdapterModes(a,b,c,d)
+#define IDirect3D9_GetAdapterDisplayMode(p,a,b)               (p)->GetAdapterDisplayMode(a,b)
+#define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)               (p)->CheckDeviceType(a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->CheckDeviceFormat(a,b,c,d,e,f)
+#define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->CheckDeviceMultiSampleType(a,b,c,d,e,f)
+#define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->CheckDepthStencilMatch(a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->CheckDeviceFormatConversion(a,b,c,d)
+#define IDirect3D9_GetDeviceCaps(p,a,b,c)                     (p)->GetDeviceCaps(a,b,c)
+#define IDirect3D9_GetAdapterMonitor(p,a)                     (p)->GetAdapterMonitor(a)
+#define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)                (p)->CreateDevice(a,b,c,d,e,f)
+#endif
+
+/*****************************************************************************
+ * IDirect3D9Ex interface
+ */
+#define INTERFACE IDirect3D9Ex
+DECLARE_INTERFACE_(IDirect3D9Ex,IDirect3D9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3D9 methods ***/
+
+    /* Note: Microsoft's d3d9.h does not declare IDirect3D9Ex::RegisterSoftwareDevice . This would mean that
+     * the offsets of the other methods in the Vtable change too. This is wrong. In Microsoft's
+     * d3d9.dll, the offsets for the other functions are still compatible with IDirect3D9.
+     * This is probably because even in MS's header IDirect3D9Ex inherits from IDirect3D9, which makes the
+     * C++ inferface compatible, and nobody uses the C interface in Windows world.
+     */
+    STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
+
+    STDMETHOD_(UINT, GetAdapterCount)(THIS) PURE;
+    STDMETHOD(GetAdapterIdentifier)(THIS_ UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER9* pIdentifier) PURE;
+    STDMETHOD_(UINT, GetAdapterModeCount)(THIS_ UINT Adapter, D3DFORMAT Format) PURE;
+    STDMETHOD(EnumAdapterModes)(THIS_ UINT Adapter, D3DFORMAT Format, UINT Mode, D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT Adapter, D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(CheckDeviceType)(THIS_ UINT iAdapter, D3DDEVTYPE DevType, D3DFORMAT DisplayFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed) PURE;
+    STDMETHOD(CheckDeviceFormat)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) PURE;
+    STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat, BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType, DWORD* pQualityLevels) PURE;
+    STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat) PURE;
+    STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat, D3DFORMAT TargetFormat) PURE;
+    STDMETHOD(GetDeviceCaps)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) PURE;
+    STDMETHOD_(HMONITOR, GetAdapterMonitor)(THIS_ UINT Adapter) PURE;
+    STDMETHOD(CreateDevice)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, struct IDirect3DDevice9** ppReturnedDeviceInterface) PURE;
+    /*** IDirect3D9Ex methods ***/
+    STDMETHOD_(UINT, GetAdapterModeCountEx)(THIS_ UINT Adapter, CONST D3DDISPLAYMODEFILTER *pFilter) PURE;
+    STDMETHOD(EnumAdapterModesEx)(THIS_ UINT Adapter, CONST D3DDISPLAYMODEFILTER *pFilter, UINT Mode, D3DDISPLAYMODEEX* pMode) PURE;
+    STDMETHOD(GetAdapterDisplayModeEx)(THIS_ UINT Adapter, D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation);
+    STDMETHOD(CreateDeviceEx)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, D3DDISPLAYMODEEX* pFullscreenDisplayMode, struct IDirect3DDevice9Ex **ppReturnedDeviceInterface) PURE;
+    STDMETHOD(GetAdapterLUID)(THIS_ UINT Adatper, LUID *pLUID) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3D9Ex_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D9Ex_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3D9Ex_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3D9 methods ***/
+#define IDirect3D9Ex_RegisterSoftwareDevice(p,a)                (p)->lpVtbl->RegisterSoftwareDevice(p,a)
+#define IDirect3D9Ex_GetAdapterCount(p)                         (p)->lpVtbl->GetAdapterCount(p)
+#define IDirect3D9Ex_GetAdapterIdentifier(p,a,b,c)              (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
+#define IDirect3D9Ex_GetAdapterModeCount(p,a,b)                 (p)->lpVtbl->GetAdapterModeCount(p,a,b)
+#define IDirect3D9Ex_EnumAdapterModes(p,a,b,c,d)                (p)->lpVtbl->EnumAdapterModes(p,a,b,c,d)
+#define IDirect3D9Ex_GetAdapterDisplayMode(p,a,b)               (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
+#define IDirect3D9Ex_CheckDeviceType(p,a,b,c,d,e)               (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
+#define IDirect3D9Ex_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
+#define IDirect3D9Ex_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e,f)
+#define IDirect3D9Ex_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
+#define IDirect3D9Ex_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->lpVtbl->CheckDeviceFormatConversion(p,a,b,c,d)
+#define IDirect3D9Ex_GetDeviceCaps(p,a,b,c)                     (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
+#define IDirect3D9Ex_GetAdapterMonitor(p,a)                     (p)->lpVtbl->GetAdapterMonitor(p,a)
+#define IDirect3D9Ex_CreateDevice(p,a,b,c,d,e,f)                (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
+/*** IDirect3D9Ex methods ***/
+#define IDirect3D9Ex_GetAdapterModeCountEx(p,a,b)               (p)->lpVtbl->GetAdapterModeCountEx(p,a,b)
+#define IDirect3D9Ex_EnumAdapterModesEx(p,a,b,c,d)              (p)->lpVtbl->EnumAdapterModesEx(p,a,b,c,d)
+#define IDirect3D9Ex_GetAdapterDisplayModeEx(p,a,b,c)           (p)->lpVtbl->GetAdapterDisplayModeEx(p,a,b,c)
+#define IDirect3D9Ex_CreateDeviceEx(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d,e,f,g)
+#define IDirect3D9Ex_GetAdapterLUID(p,a,b)                      (p)->lpVtbl->GetAdapterLUID(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3D9Ex_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D9Ex_AddRef(p)             (p)->AddRef()
+#define IDirect3D9Ex_Release(p)            (p)->Release()
+/*** IDirect3D9 methods ***/
+#define IDirect3D9Ex_RegisterSoftwareDevice(p,a)                (p)->RegisterSoftwareDevice(a)
+#define IDirect3D9Ex_GetAdapterCount(p)                         (p)->GetAdapterCount()
+#define IDirect3D9Ex_GetAdapterIdentifier(p,a,b,c)              (p)->GetAdapterIdentifier(a,b,c)
+#define IDirect3D9Ex_GetAdapterModeCount(p,a,b)                 (p)->GetAdapterModeCount(a,b)
+#define IDirect3D9Ex_EnumAdapterModes(p,a,b,c,d)                (p)->EnumAdapterModes(a,b,c,d)
+#define IDirect3D9Ex_GetAdapterDisplayMode(p,a,b)               (p)->GetAdapterDisplayMode(a,b)
+#define IDirect3D9Ex_CheckDeviceType(p,a,b,c,d,e)               (p)->CheckDeviceType(a,b,c,d,e)
+#define IDirect3D9Ex_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->CheckDeviceFormat(a,b,c,d,e,f)
+#define IDirect3D9Ex_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->CheckDeviceMultiSampleType(a,b,c,d,e,f)
+#define IDirect3D9Ex_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->CheckDepthStencilMatch(a,b,c,d,e)
+#define IDirect3D9Ex_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->CheckDeviceFormatConversion(a,b,c,d)
+#define IDirect3D9Ex_GetDeviceCaps(p,a,b,c)                     (p)->GetDeviceCaps(a,b,c)
+#define IDirect3D9Ex_GetAdapterMonitor(p,a)                     (p)->GetAdapterMonitor(a)
+#define IDirect3D9Ex_CreateDevice(p,a,b,c,d,e,f)                (p)->CreateDevice(a,b,c,d,e,f)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVolume9 interface
+ */
+#define INTERFACE IDirect3DVolume9
+DECLARE_INTERFACE_(IDirect3DVolume9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DVolume9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD(GetContainer)(THIS_ REFIID riid, void** ppContainer) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DVOLUME_DESC* pDesc) PURE;
+    STDMETHOD(LockBox)(THIS_ D3DLOCKED_BOX* pLockedVolume, CONST D3DBOX* pBox, DWORD Flags) PURE;
+    STDMETHOD(UnlockBox)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVolume9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVolume9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DVolume9_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DVolume9 methods ***/
+#define IDirect3DVolume9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVolume9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVolume9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVolume9_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
+#define IDirect3DVolume9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
+#define IDirect3DVolume9_LockBox(p,a,b,c)             (p)->lpVtbl->LockBox(p,a,b,c)
+#define IDirect3DVolume9_UnlockBox(p)                 (p)->lpVtbl->UnlockBox(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVolume9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DVolume9_AddRef(p)                    (p)->AddRef()
+#define IDirect3DVolume9_Release(p)                   (p)->Release()
+/*** IDirect3DVolume9 methods ***/
+#define IDirect3DVolume9_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVolume9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DVolume9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DVolume9_GetContainer(p,a,b)          (p)->GetContainer(a,b)
+#define IDirect3DVolume9_GetDesc(p,a)                 (p)->GetDesc(a)
+#define IDirect3DVolume9_LockBox(p,a,b,c)             (p)->LockBox(a,b,c)
+#define IDirect3DVolume9_UnlockBox(p)                 (p)->UnlockBox()
+#endif
+
+/*****************************************************************************
+ * IDirect3DSwapChain9 interface
+ */
+#define INTERFACE IDirect3DSwapChain9
+DECLARE_INTERFACE_(IDirect3DSwapChain9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DSwapChain9 methods ***/
+    STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion, DWORD dwFlags) PURE;
+    STDMETHOD(GetFrontBufferData)(THIS_ struct IDirect3DSurface9* pDestSurface) PURE;
+    STDMETHOD(GetBackBuffer)(THIS_ UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, struct IDirect3DSurface9** ppBackBuffer) PURE;
+    STDMETHOD(GetRasterStatus)(THIS_ D3DRASTER_STATUS* pRasterStatus) PURE;
+    STDMETHOD(GetDisplayMode)(THIS_ D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(GetPresentParameters)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DSwapChain9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DSwapChain9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DSwapChain9_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DSwapChain9 methods ***/
+#define IDirect3DSwapChain9_Present(p,a,b,c,d,e)         (p)->lpVtbl->Present(p,a,b,c,d,e)
+#define IDirect3DSwapChain9_GetFrontBufferData(p,a)      (p)->lpVtbl->GetFrontBufferData(p,a)
+#define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)       (p)->lpVtbl->GetBackBuffer(p,a,b,c)
+#define IDirect3DSwapChain9_GetRasterStatus(p,a)         (p)->lpVtbl->GetRasterStatus(p,a)
+#define IDirect3DSwapChain9_GetDisplayMode(p,a)          (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirect3DSwapChain9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DSwapChain9_GetPresentParameters(p,a)    (p)->lpVtbl->GetPresentParameters(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DSwapChain9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DSwapChain9_AddRef(p)                    (p)->AddRef()
+#define IDirect3DSwapChain9_Release(p)                   (p)->Release()
+/*** IDirect3DSwapChain9 methods ***/
+#define IDirect3DSwapChain9_Present(p,a,b,c,d,e)         (p)->Present(a,b,c,d,e)
+#define IDirect3DSwapChain9_GetFrontBufferData(p,a)      (p)->GetFrontBufferData(a)
+#define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)       (p)->GetBackBuffer(a,b,c)
+#define IDirect3DSwapChain9_GetRasterStatus(p,a)         (p)->GetRasterStatus(a)
+#define IDirect3DSwapChain9_GetDisplayMode(p,a)          (p)->GetDisplayMode(a)
+#define IDirect3DSwapChain9_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DSwapChain9_GetPresentParameters(p,a)    (p)->GetPresentParameters(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DResource9 interface
+ */
+#define INTERFACE IDirect3DResource9
+DECLARE_INTERFACE_(IDirect3DResource9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DResource9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DResource9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DResource9_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DResource9 methods ***/
+#define IDirect3DResource9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DResource9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DResource9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DResource9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DResource9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DResource9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DResource9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DResource9_GetType(p)                   (p)->lpVtbl->GetType(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DResource9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DResource9_AddRef(p)                    (p)->AddRef()
+#define IDirect3DResource9_Release(p)                   (p)->Release()
+/*** IDirect3DResource9 methods ***/
+#define IDirect3DResource9_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DResource9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DResource9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DResource9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DResource9_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DResource9_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DResource9_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DResource9_GetType(p)                   (p)->GetType()
+#endif
+
+/*****************************************************************************
+ * IDirect3DSurface9 interface
+ */
+#define INTERFACE IDirect3DSurface9
+DECLARE_INTERFACE_(IDirect3DSurface9,IDirect3DResource9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DSurface9 methods ***/
+    STDMETHOD(GetContainer)(THIS_ REFIID riid, void** ppContainer) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DSURFACE_DESC* pDesc) PURE;
+    STDMETHOD(LockRect)(THIS_ D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) PURE;
+    STDMETHOD(UnlockRect)(THIS) PURE;
+    STDMETHOD(GetDC)(THIS_ HDC* phdc) PURE;
+    STDMETHOD(ReleaseDC)(THIS_ HDC hdc) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DSurface9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DSurface9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DSurface9_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DSurface9 methods: IDirect3DResource9 ***/
+#define IDirect3DSurface9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DSurface9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DSurface9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DSurface9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DSurface9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DSurface9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DSurface9_GetType(p)                   (p)->lpVtbl->GetType(p)
+/*** IDirect3DSurface9 methods ***/
+#define IDirect3DSurface9_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
+#define IDirect3DSurface9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
+#define IDirect3DSurface9_LockRect(p,a,b,c)            (p)->lpVtbl->LockRect(p,a,b,c)
+#define IDirect3DSurface9_UnlockRect(p)                (p)->lpVtbl->UnlockRect(p)
+#define IDirect3DSurface9_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
+#define IDirect3DSurface9_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DSurface9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DSurface9_AddRef(p)                    (p)->AddRef()
+#define IDirect3DSurface9_Release(p)                   (p)->Release()
+/*** IDirect3DSurface9 methods: IDirect3DResource9 ***/
+#define IDirect3DSurface9_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DSurface9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DSurface9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DSurface9_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DSurface9_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DSurface9_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DSurface9_GetType(p)                   (p)->GetType()
+/*** IDirect3DSurface9 methods ***/
+#define IDirect3DSurface9_GetContainer(p,a,b)          (p)->GetContainer(a,b)
+#define IDirect3DSurface9_GetDesc(p,a)                 (p)->GetDesc(a)
+#define IDirect3DSurface9_LockRect(p,a,b,c)            (p)->LockRect(a,b,c)
+#define IDirect3DSurface9_UnlockRect(p)                (p)->UnlockRect()
+#define IDirect3DSurface9_GetDC(p,a)                   (p)->GetDC(a)
+#define IDirect3DSurface9_ReleaseDC(p,a)               (p)->ReleaseDC(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVertexBuffer9 interface
+ */
+#define INTERFACE IDirect3DVertexBuffer9
+DECLARE_INTERFACE_(IDirect3DVertexBuffer9,IDirect3DResource9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DVertexBuffer9 methods ***/
+    STDMETHOD(Lock)(THIS_ UINT OffsetToLock, UINT SizeToLock, void** ppbData, DWORD Flags) PURE;
+    STDMETHOD(Unlock)(THIS) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC* pDesc) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVertexBuffer9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexBuffer9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexBuffer9_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DVertexBuffer9 methods: IDirect3DResource9 ***/
+#define IDirect3DVertexBuffer9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVertexBuffer9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVertexBuffer9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DVertexBuffer9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DVertexBuffer9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DVertexBuffer9_GetType(p)                   (p)->lpVtbl->GetType(p)
+/*** IDirect3DVertexBuffer9 methods ***/
+#define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirect3DVertexBuffer9_Unlock(p)                    (p)->lpVtbl->Unlock(p)
+#define IDirect3DVertexBuffer9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVertexBuffer9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DVertexBuffer9_AddRef(p)                    (p)->AddRef()
+#define IDirect3DVertexBuffer9_Release(p)                   (p)->Release()
+/*** IDirect3DVertexBuffer9 methods: IDirect3DResource9 ***/
+#define IDirect3DVertexBuffer9_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DVertexBuffer9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DVertexBuffer9_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DVertexBuffer9_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DVertexBuffer9_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DVertexBuffer9_GetType(p)                   (p)->GetType()
+/*** IDirect3DVertexBuffer9 methods ***/
+#define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
+#define IDirect3DVertexBuffer9_Unlock(p)                    (p)->Unlock()
+#define IDirect3DVertexBuffer9_GetDesc(p,a)                 (p)->GetDesc(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DIndexBuffer9 interface
+ */
+#define INTERFACE IDirect3DIndexBuffer9
+DECLARE_INTERFACE_(IDirect3DIndexBuffer9,IDirect3DResource9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DIndexBuffer9 methods ***/
+    STDMETHOD(Lock)(THIS_ UINT OffsetToLock, UINT SizeToLock, void** ppbData, DWORD Flags) PURE;
+    STDMETHOD(Unlock)(THIS) PURE;
+    STDMETHOD(GetDesc)(THIS_ D3DINDEXBUFFER_DESC* pDesc) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DIndexBuffer9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DIndexBuffer9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
+#define IDirect3DIndexBuffer9_Release(p)                   (p)->lpVtbl->Release(p)
+/*** IDirect3DIndexBuffer9 methods: IDirect3DResource9 ***/
+#define IDirect3DIndexBuffer9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DIndexBuffer9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DIndexBuffer9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DIndexBuffer9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
+#define IDirect3DIndexBuffer9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
+#define IDirect3DIndexBuffer9_GetType(p)                   (p)->lpVtbl->GetType(p)
+/*** IDirect3DIndexBuffer9 methods ***/
+#define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirect3DIndexBuffer9_Unlock(p)                    (p)->lpVtbl->Unlock(p)
+#define IDirect3DIndexBuffer9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DIndexBuffer9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
+#define IDirect3DIndexBuffer9_AddRef(p)                    (p)->AddRef()
+#define IDirect3DIndexBuffer9_Release(p)                   (p)->Release()
+/*** IDirect3DIndexBuffer9 methods: IDirect3DResource9 ***/
+#define IDirect3DIndexBuffer9_GetDevice(p,a)               (p)->GetDevice(a)
+#define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
+#define IDirect3DIndexBuffer9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
+#define IDirect3DIndexBuffer9_SetPriority(p,a)             (p)->SetPriority(a)
+#define IDirect3DIndexBuffer9_GetPriority(p)               (p)->GetPriority()
+#define IDirect3DIndexBuffer9_PreLoad(p)                   (p)->PreLoad()
+#define IDirect3DIndexBuffer9_GetType(p)                   (p)->GetType()
+/*** IDirect3DIndexBuffer9 methods ***/
+#define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
+#define IDirect3DIndexBuffer9_Unlock(p)                    (p)->Unlock()
+#define IDirect3DIndexBuffer9_GetDesc(p,a)                 (p)->GetDesc(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DBaseTexture9 interface
+ */
+#define INTERFACE IDirect3DBaseTexture9
+DECLARE_INTERFACE_(IDirect3DBaseTexture9,IDirect3DResource9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DBaseTexture9 methods ***/
+    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
+    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
+    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
+    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
+    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
+    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DBaseTexture9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DBaseTexture9_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DBaseTexture9_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DBaseTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DBaseTexture9_GetDevice(p,a)             (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)  (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DBaseTexture9_FreePrivateData(p,a)       (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DBaseTexture9_SetPriority(p,a)           (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DBaseTexture9_GetPriority(p)             (p)->lpVtbl->GetPriority(p)
+#define IDirect3DBaseTexture9_PreLoad(p)                 (p)->lpVtbl->PreLoad(p)
+#define IDirect3DBaseTexture9_GetType(p)                 (p)->lpVtbl->GetType(p)
+/*** IDirect3DBaseTexture9 methods ***/
+#define IDirect3DBaseTexture9_SetLOD(p,a)                (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DBaseTexture9_GetLOD(p)                  (p)->lpVtbl->GetLOD(p)
+#define IDirect3DBaseTexture9_GetLevelCount(p)           (p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)  (p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DBaseTexture9_GetAutoGenFilterType(p)    (p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DBaseTexture9_GenerateMipSubLevels(p)    (p)->lpVtbl->GenerateMipSubLevels(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DBaseTexture9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
+#define IDirect3DBaseTexture9_AddRef(p)              (p)->AddRef()
+#define IDirect3DBaseTexture9_Release(p)             (p)->Release()
+/*** IDirect3DBaseTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DBaseTexture9_GetDevice(p,a)             (p)->GetDevice(a)
+#define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)  (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
+#define IDirect3DBaseTexture9_FreePrivateData(p,a)       (p)->FreePrivateData(a)
+#define IDirect3DBaseTexture9_SetPriority(p,a)           (p)->SetPriority(a)
+#define IDirect3DBaseTexture9_GetPriority(p)             (p)->GetPriority()
+#define IDirect3DBaseTexture9_PreLoad(p)                 (p)->PreLoad()
+#define IDirect3DBaseTexture9_GetType(p)                 (p)->GetType()
+/*** IDirect3DBaseTexture9 methods ***/
+#define IDirect3DBaseTexture9_SetLOD(p,a)                (p)->SetLOD(a)
+#define IDirect3DBaseTexture9_GetLOD(p)                  (p)->GetLOD()
+#define IDirect3DBaseTexture9_GetLevelCount(p)           (p)->GetLevelCount()
+#define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)  (p)->SetAutoGenFilterType(a)
+#define IDirect3DBaseTexture9_GetAutoGenFilterType(p)    (p)->GetAutoGenFilterType()
+#define IDirect3DBaseTexture9_GenerateMipSubLevels(p)    (p)->GenerateMipSubLevels()
+#endif
+
+/*****************************************************************************
+ * IDirect3DCubeTexture9 interface
+ */
+#define INTERFACE IDirect3DCubeTexture9
+DECLARE_INTERFACE_(IDirect3DCubeTexture9,IDirect3DBaseTexture9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DBaseTexture9 methods ***/
+    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
+    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
+    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
+    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
+    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
+    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
+    /*** IDirect3DCubeTexture9 methods ***/
+    STDMETHOD(GetLevelDesc)(THIS_ UINT Level,D3DSURFACE_DESC* pDesc) PURE;
+    STDMETHOD(GetCubeMapSurface)(THIS_ D3DCUBEMAP_FACES FaceType, UINT Level, IDirect3DSurface9** ppCubeMapSurface) PURE;
+    STDMETHOD(LockRect)(THIS_ D3DCUBEMAP_FACES FaceType, UINT Level, D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) PURE;
+    STDMETHOD(UnlockRect)(THIS_ D3DCUBEMAP_FACES FaceType, UINT Level) PURE;
+    STDMETHOD(AddDirtyRect)(THIS_ D3DCUBEMAP_FACES FaceType, CONST RECT* pDirtyRect) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DCubeTexture9_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DCubeTexture9_AddRef(p)                   (p)->lpVtbl->AddRef(p)
+#define IDirect3DCubeTexture9_Release(p)                  (p)->lpVtbl->Release(p)
+/*** IDirect3DCubeTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DCubeTexture9_GetDevice(p,a)              (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)   (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)     (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DCubeTexture9_FreePrivateData(p,a)        (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DCubeTexture9_SetPriority(p,a)            (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DCubeTexture9_GetPriority(p)              (p)->lpVtbl->GetPriority(p)
+#define IDirect3DCubeTexture9_PreLoad(p)                  (p)->lpVtbl->PreLoad(p)
+#define IDirect3DCubeTexture9_GetType(p)                  (p)->lpVtbl->GetType(p)
+/*** IDirect3DCubeTexture9 methods: IDirect3DBaseTexture9 ***/
+#define IDirect3DCubeTexture9_SetLOD(p,a)                 (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DCubeTexture9_GetLOD(p)                   (p)->lpVtbl->GetLOD(p)
+#define IDirect3DCubeTexture9_GetLevelCount(p)            (p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)   (p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DCubeTexture9_GetAutoGenFilterType(p)     (p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DCubeTexture9_GenerateMipSubLevels(p)     (p)->lpVtbl->GenerateMipSubLevels(p)
+/*** IDirect3DCubeTexture9 methods ***/
+#define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)         (p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)  (p)->lpVtbl->GetCubeMapSurface(p,a,b,c)
+#define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)       (p)->lpVtbl->LockRect(p,a,b,c,d,e)
+#define IDirect3DCubeTexture9_UnlockRect(p,a,b)           (p)->lpVtbl->UnlockRect(p,a,b)
+#define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)         (p)->lpVtbl->AddDirtyRect(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DCubeTexture9_QueryInterface(p,a,b)       (p)->QueryInterface(a,b)
+#define IDirect3DCubeTexture9_AddRef(p)                   (p)->AddRef()
+#define IDirect3DCubeTexture9_Release(p)                  (p)->Release()
+/*** IDirect3DCubeTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DCubeTexture9_GetDevice(p,a)              (p)->GetDevice(a)
+#define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)   (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)     (p)->GetPrivateData(a,b,c)
+#define IDirect3DCubeTexture9_FreePrivateData(p,a)        (p)->FreePrivateData(a)
+#define IDirect3DCubeTexture9_SetPriority(p,a)            (p)->SetPriority(a)
+#define IDirect3DCubeTexture9_GetPriority(p)              (p)->GetPriority()
+#define IDirect3DCubeTexture9_PreLoad(p)                  (p)->PreLoad()
+#define IDirect3DCubeTexture9_GetType(p)                  (p)->GetType()
+/*** IDirect3DCubeTexture9 methods: IDirect3DBaseTexture9 ***/
+#define IDirect3DCubeTexture9_SetLOD(p,a)                 (p)->SetLOD(a)
+#define IDirect3DCubeTexture9_GetLOD(p)                   (p)->GetLOD()
+#define IDirect3DCubeTexture9_GetLevelCount(p)            (p)->GetLevelCount()
+#define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)   (p)->SetAutoGenFilterType(a)
+#define IDirect3DCubeTexture9_GetAutoGenFilterType(p)     (p)->GetAutoGenFilterType()
+#define IDirect3DCubeTexture9_GenerateMipSubLevels(p)     (p)->GenerateMipSubLevels()
+/*** IDirect3DCubeTexture9 methods ***/
+#define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)         (p)->GetLevelDesc(a,b)
+#define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)  (p)->GetCubeMapSurface(a,b,c)
+#define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)       (p)->LockRect(a,b,c,d,e)
+#define IDirect3DCubeTexture9_UnlockRect(p,a,b)           (p)->UnlockRect(a,b)
+#define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)         (p)->AddDirtyRect(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirect3DTexture9 interface
+ */
+#define INTERFACE IDirect3DTexture9
+DECLARE_INTERFACE_(IDirect3DTexture9,IDirect3DBaseTexture9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DBaseTexture9 methods ***/
+    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
+    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
+    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
+    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
+    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
+    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
+    /*** IDirect3DTexture9 methods ***/
+    STDMETHOD(GetLevelDesc)(THIS_ UINT Level, D3DSURFACE_DESC* pDesc) PURE;
+    STDMETHOD(GetSurfaceLevel)(THIS_ UINT Level, IDirect3DSurface9** ppSurfaceLevel) PURE;
+    STDMETHOD(LockRect)(THIS_ UINT Level, D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) PURE;
+    STDMETHOD(UnlockRect)(THIS_ UINT Level) PURE;
+    STDMETHOD(AddDirtyRect)(THIS_ CONST RECT* pDirtyRect) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DTexture9_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DTexture9_AddRef(p)                  (p)->lpVtbl->AddRef(p)
+#define IDirect3DTexture9_Release(p)                 (p)->lpVtbl->Release(p)
+/*** IDirect3DTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DTexture9_GetDevice(p,a)             (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)  (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DTexture9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DTexture9_FreePrivateData(p,a)       (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DTexture9_SetPriority(p,a)           (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DTexture9_GetPriority(p)             (p)->lpVtbl->GetPriority(p)
+#define IDirect3DTexture9_PreLoad(p)                 (p)->lpVtbl->PreLoad(p)
+#define IDirect3DTexture9_GetType(p)                 (p)->lpVtbl->GetType(p)
+/*** IDirect3DTexture9 methods: IDirect3DBaseTexture9 ***/
+#define IDirect3DTexture9_SetLOD(p,a)                (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DTexture9_GetLOD(p)                  (p)->lpVtbl->GetLOD(p)
+#define IDirect3DTexture9_GetLevelCount(p)           (p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DTexture9_SetAutoGenFilterType(p,a)  (p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DTexture9_GetAutoGenFilterType(p)    (p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DTexture9_GenerateMipSubLevels(p)    (p)->lpVtbl->GenerateMipSubLevels(p)
+/*** IDirect3DTexture9 methods ***/
+#define IDirect3DTexture9_GetLevelDesc(p,a,b)        (p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DTexture9_GetSurfaceLevel(p,a,b)     (p)->lpVtbl->GetSurfaceLevel(p,a,b)
+#define IDirect3DTexture9_LockRect(p,a,b,c,d)        (p)->lpVtbl->LockRect(p,a,b,c,d)
+#define IDirect3DTexture9_UnlockRect(p,a)            (p)->lpVtbl->UnlockRect(p,a)
+#define IDirect3DTexture9_AddDirtyRect(p,a)          (p)->lpVtbl->AddDirtyRect(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DTexture9_QueryInterface(p,a,b)      (p)->QueryInterface(a,b)
+#define IDirect3DTexture9_AddRef(p)                  (p)->AddRef()
+#define IDirect3DTexture9_Release(p)                 (p)->Release()
+/*** IDirect3DTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DTexture9_GetDevice(p,a)             (p)->GetDevice(a)
+#define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)  (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DTexture9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
+#define IDirect3DTexture9_FreePrivateData(p,a)       (p)->FreePrivateData(a)
+#define IDirect3DTexture9_SetPriority(p,a)           (p)->SetPriority(a)
+#define IDirect3DTexture9_GetPriority(p)             (p)->GetPriority()
+#define IDirect3DTexture9_PreLoad(p)                 (p)->PreLoad()
+#define IDirect3DTexture9_GetType(p)                 (p)->GetType()
+/*** IDirect3DTexture9 methods: IDirect3DBaseTexture9 ***/
+#define IDirect3DTexture9_SetLOD(p,a)                (p)->SetLOD(a)
+#define IDirect3DTexture9_GetLOD(p)                  (p)->GetLOD()
+#define IDirect3DTexture9_GetLevelCount(p)           (p)->GetLevelCount()
+#define IDirect3DTexture9_SetAutoGenFilterType(p,a)  (p)->SetAutoGenFilterType(a)
+#define IDirect3DTexture9_GetAutoGenFilterType(p)    (p)->GetAutoGenFilterType()
+#define IDirect3DTexture9_GenerateMipSubLevels(p)    (p)->GenerateMipSubLevels()
+/*** IDirect3DTexture9 methods ***/
+#define IDirect3DTexture9_GetLevelDesc(p,a,b)        (p)->GetLevelDesc(a,b)
+#define IDirect3DTexture9_GetSurfaceLevel(p,a,b)     (p)->GetSurfaceLevel(a,b)
+#define IDirect3DTexture9_LockRect(p,a,b,c,d)        (p)->LockRect(a,b,c,d)
+#define IDirect3DTexture9_UnlockRect(p,a)            (p)->UnlockRect(a)
+#define IDirect3DTexture9_AddDirtyRect(p,a)          (p)->AddDirtyRect(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVolumeTexture9 interface
+ */
+#define INTERFACE IDirect3DVolumeTexture9
+DECLARE_INTERFACE_(IDirect3DVolumeTexture9,IDirect3DBaseTexture9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DResource9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
+    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
+    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+    STDMETHOD_(void, PreLoad)(THIS) PURE;
+    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+    /*** IDirect3DBaseTexture9 methods ***/
+    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
+    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
+    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
+    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
+    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
+    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
+    /*** IDirect3DVolumeTexture9 methods ***/
+    STDMETHOD(GetLevelDesc)(THIS_ UINT Level, D3DVOLUME_DESC *pDesc) PURE;
+    STDMETHOD(GetVolumeLevel)(THIS_ UINT Level, IDirect3DVolume9** ppVolumeLevel) PURE;
+    STDMETHOD(LockBox)(THIS_ UINT Level, D3DLOCKED_BOX* pLockedVolume, CONST D3DBOX* pBox, DWORD Flags) PURE;
+    STDMETHOD(UnlockBox)(THIS_ UINT Level) PURE;
+    STDMETHOD(AddDirtyBox)(THIS_ CONST D3DBOX* pDirtyBox) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVolumeTexture9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVolumeTexture9_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DVolumeTexture9_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirect3DVolumeTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DVolumeTexture9_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVolumeTexture9_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVolumeTexture9_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DVolumeTexture9_GetPriority(p) (p)->lpVtbl->GetPriority(p)
+#define IDirect3DVolumeTexture9_PreLoad(p) (p)->lpVtbl->PreLoad(p)
+#define IDirect3DVolumeTexture9_GetType(p) (p)->lpVtbl->GetType(p)
+/*** IDirect3DVolumeTexture9 methods: IDirect3DBaseTexture9 ***/
+#define IDirect3DVolumeTexture9_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DVolumeTexture9_GetLOD(p) (p)->lpVtbl->GetLOD(p)
+#define IDirect3DVolumeTexture9_GetLevelCount(p) (p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a) (p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DVolumeTexture9_GetAutoGenFilterType(p) (p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DVolumeTexture9_GenerateMipSubLevels(p) (p)->lpVtbl->GenerateMipSubLevels(p)
+/*** IDirect3DVolumeTexture9 methods ***/
+#define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b) (p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b) (p)->lpVtbl->GetVolumeLevel(p,a,b)
+#define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d) (p)->lpVtbl->LockBox(p,a,b,c,d)
+#define IDirect3DVolumeTexture9_UnlockBox(p,a) (p)->lpVtbl->UnlockBox(p,a)
+#define IDirect3DVolumeTexture9_AddDirtyBox(p,a) (p)->lpVtbl->AddDirtyBox(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVolumeTexture9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DVolumeTexture9_AddRef(p) (p)->AddRef()
+#define IDirect3DVolumeTexture9_Release(p) (p)->Release()
+/*** IDirect3DVolumeTexture9 methods: IDirect3DResource9 ***/
+#define IDirect3DVolumeTexture9_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirect3DVolumeTexture9_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirect3DVolumeTexture9_SetPriority(p,a) (p)->SetPriority(a)
+#define IDirect3DVolumeTexture9_GetPriority(p) (p)->GetPriority()
+#define IDirect3DVolumeTexture9_PreLoad(p) (p)->PreLoad()
+#define IDirect3DVolumeTexture9_GetType(p) (p)->GetType()
+/*** IDirect3DVolumeTexture9 methods: IDirect3DBaseTexture9 ***/
+#define IDirect3DVolumeTexture9_SetLOD(p,a) (p)->SetLOD(a)
+#define IDirect3DVolumeTexture9_GetLOD(p) (p)->GetLOD()
+#define IDirect3DVolumeTexture9_GetLevelCount(p) (p)->GetLevelCount()
+#define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a) (p)->SetAutoGenFilterType(a)
+#define IDirect3DVolumeTexture9_GetAutoGenFilterType(p) (p)->GetAutoGenFilterType()
+#define IDirect3DVolumeTexture9_GenerateMipSubLevels(p) (p)->GenerateMipSubLevels()
+/*** IDirect3DVolumeTexture9 methods ***/
+#define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b) (p)->GetLevelDesc(a,b)
+#define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b) (p)->GetVolumeLevel(a,b)
+#define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d) (p)->LockBox(a,b,c,d)
+#define IDirect3DVolumeTexture9_UnlockBox(p,a) (p)->UnlockBox(a)
+#define IDirect3DVolumeTexture9_AddDirtyBox(p,a) (p)->AddDirtyBox(a)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVertexDeclaration9 interface
+ */
+#define INTERFACE IDirect3DVertexDeclaration9
+DECLARE_INTERFACE_(IDirect3DVertexDeclaration9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DVertexDeclaration9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9*, UINT* pNumElements) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexDeclaration9_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexDeclaration9_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DVertexShader9 methods ***/
+#define IDirect3DVertexDeclaration9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)  (p)->lpVtbl->GetDeclaration(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
+#define IDirect3DVertexDeclaration9_AddRef(p)              (p)->AddRef()
+#define IDirect3DVertexDeclaration9_Release(p)             (p)->Release()
+/*** IDirect3DVertexShader9 methods ***/
+#define IDirect3DVertexDeclaration9_GetDevice(p,a)         (p)->GetDevice(a)
+#define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)  (p)->GetDeclaration(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirect3DVertexShader9 interface
+ */
+#define INTERFACE IDirect3DVertexShader9
+DECLARE_INTERFACE_(IDirect3DVertexShader9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DVertexShader9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(GetFunction)(THIS_ void*, UINT* pSizeOfData) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DVertexShader9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexShader9_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexShader9_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DVertexShader9 methods ***/
+#define IDirect3DVertexShader9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexShader9_GetFunction(p,a,b)     (p)->lpVtbl->GetFunction(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DVertexShader9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
+#define IDirect3DVertexShader9_AddRef(p)              (p)->AddRef()
+#define IDirect3DVertexShader9_Release(p)             (p)->Release()
+/*** IDirect3DVertexShader9 methods ***/
+#define IDirect3DVertexShader9_GetDevice(p,a)         (p)->GetDevice(a)
+#define IDirect3DVertexShader9_GetFunction(p,a,b)     (p)->GetFunction(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirect3DPixelShader9 interface
+ */
+#define INTERFACE IDirect3DPixelShader9
+DECLARE_INTERFACE_(IDirect3DPixelShader9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DPixelShader9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(GetFunction)(THIS_ void*, UINT* pSizeOfData) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DPixelShader9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DPixelShader9_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DPixelShader9_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DPixelShader9 methods ***/
+#define IDirect3DPixelShader9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DPixelShader9_GetFunction(p,a,b)     (p)->lpVtbl->GetFunction(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DPixelShader9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
+#define IDirect3DPixelShader9_AddRef(p)              (p)->AddRef()
+#define IDirect3DPixelShader9_Release(p)             (p)->Release()
+/*** IDirect3DPixelShader9 methods ***/
+#define IDirect3DPixelShader9_GetDevice(p,a)         (p)->GetDevice(a)
+#define IDirect3DPixelShader9_GetFunction(p,a,b)     (p)->GetFunction(a,b)
+#endif
+
+/*****************************************************************************
+ * IDirect3DStateBlock9 interface
+ */
+#define INTERFACE IDirect3DStateBlock9
+DECLARE_INTERFACE_(IDirect3DStateBlock9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DStateBlock9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD(Capture)(THIS) PURE;
+    STDMETHOD(Apply)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DStateBlock9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DStateBlock9_AddRef(p)              (p)->lpVtbl->AddRef(p)
+#define IDirect3DStateBlock9_Release(p)             (p)->lpVtbl->Release(p)
+/*** IDirect3DStateBlock9 methods ***/
+#define IDirect3DStateBlock9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DStateBlock9_Capture(p)             (p)->lpVtbl->Capture(p)
+#define IDirect3DStateBlock9_Apply(p)               (p)->lpVtbl->Apply(p)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DStateBlock9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
+#define IDirect3DStateBlock9_AddRef(p)              (p)->AddRef()
+#define IDirect3DStateBlock9_Release(p)             (p)->Release()
+/*** IDirect3DStateBlock9 methods ***/
+#define IDirect3DStateBlock9_GetDevice(p,a)         (p)->GetDevice(a)
+#define IDirect3DStateBlock9_Capture(p)             (p)->Capture()
+#define IDirect3DStateBlock9_Apply(p)               (p)->Apply()
+#endif
+
+/*****************************************************************************
+ * IDirect3DQuery9 interface
+ */
+#define INTERFACE IDirect3DQuery9
+DECLARE_INTERFACE_(IDirect3DQuery9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DQuery9 methods ***/
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
+    STDMETHOD_(D3DQUERYTYPE, GetType)(THIS) PURE;
+    STDMETHOD_(DWORD, GetDataSize)(THIS) PURE;
+    STDMETHOD(Issue)(THIS_ DWORD dwIssueFlags) PURE;
+    STDMETHOD(GetData)(THIS_ void* pData, DWORD dwSize, DWORD dwGetDataFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DQuery9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DQuery9_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DQuery9_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirect3DQuery9 ***/
+#define IDirect3DQuery9_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DQuery9_GetType(p) (p)->lpVtbl->GetType(p)
+#define IDirect3DQuery9_GetDataSize(p) (p)->lpVtbl->GetDataSize(p)
+#define IDirect3DQuery9_Issue(p,a) (p)->lpVtbl->Issue(p,a)
+#define IDirect3DQuery9_GetData(p,a,b,c) (p)->lpVtbl->GetData(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DQuery9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DQuery9_AddRef(p) (p)->AddRef()
+#define IDirect3DQuery9_Release(p) (p)->Release()
+/*** IDirect3DQuery9 ***/
+#define IDirect3DQuery9_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DQuery9_GetType(p) (p)->GetType()
+#define IDirect3DQuery9_GetDataSize(p) (p)->GetDataSize()
+#define IDirect3DQuery9_Issue(p,a) (p)->Issue(a)
+#define IDirect3DQuery9_GetData(p,a,b,c) (p)->GetData(a,b,c)
+#endif
+
+/*****************************************************************************
+ * IDirect3DDevice9 interface
+ */
+#define INTERFACE IDirect3DDevice9
+DECLARE_INTERFACE_(IDirect3DDevice9,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DDevice9 methods ***/
+    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+    STDMETHOD_(UINT, GetAvailableTextureMem)(THIS) PURE;
+    STDMETHOD(EvictManagedResources)(THIS) PURE;
+    STDMETHOD(GetDirect3D)(THIS_ IDirect3D9** ppD3D9) PURE;
+    STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS9* pCaps) PURE;
+    STDMETHOD(GetDisplayMode)(THIS_ UINT iSwapChain, D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS *pParameters) PURE;
+    STDMETHOD(SetCursorProperties)(THIS_ UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap) PURE;
+    STDMETHOD_(void, SetCursorPosition)(THIS_ int X,int Y, DWORD Flags) PURE;
+    STDMETHOD_(BOOL, ShowCursor)(THIS_ BOOL bShow) PURE;
+    STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** pSwapChain) PURE;
+    STDMETHOD(GetSwapChain)(THIS_ UINT iSwapChain, IDirect3DSwapChain9** pSwapChain) PURE;
+    STDMETHOD_(UINT, GetNumberOfSwapChains)(THIS) PURE;
+    STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
+    STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion) PURE;
+    STDMETHOD(GetBackBuffer)(THIS_ UINT iSwapChain, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer) PURE;
+    STDMETHOD(GetRasterStatus)(THIS_ UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus) PURE;
+    STDMETHOD(SetDialogBoxMode)(THIS_ BOOL bEnableDialogs) PURE;
+    STDMETHOD_(void, SetGammaRamp)(THIS_ UINT iSwapChain, DWORD Flags, CONST D3DGAMMARAMP* pRamp) PURE;
+    STDMETHOD_(void, GetGammaRamp)(THIS_ UINT iSwapChain, D3DGAMMARAMP* pRamp) PURE;
+    STDMETHOD(CreateTexture)(THIS_ UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateVolumeTexture)(THIS_ UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateCubeTexture)(THIS_ UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateVertexBuffer)(THIS_ UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateIndexBuffer)(THIS_ UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateRenderTarget)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Lockable, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(UpdateSurface)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestPoint) PURE;
+    STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture) PURE;
+    STDMETHOD(GetRenderTargetData)(THIS_ IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface) PURE;
+    STDMETHOD(GetFrontBufferData)(THIS_ UINT iSwapChain, IDirect3DSurface9* pDestSurface) PURE;
+    STDMETHOD(StretchRect)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestSurface, CONST RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter) PURE;
+    STDMETHOD(ColorFill)(THIS_ IDirect3DSurface9* pSurface, CONST RECT* pRect, D3DCOLOR color) PURE;
+    STDMETHOD(CreateOffscreenPlainSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(SetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget) PURE;
+    STDMETHOD(GetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9** ppRenderTarget) PURE;
+    STDMETHOD(SetDepthStencilSurface)(THIS_ IDirect3DSurface9* pNewZStencil) PURE;
+    STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface9** ppZStencilSurface) PURE;
+    STDMETHOD(BeginScene)(THIS) PURE;
+    STDMETHOD(EndScene)(THIS) PURE;
+    STDMETHOD(Clear)(THIS_ DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil) PURE;
+    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) PURE;
+    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix) PURE;
+    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE, CONST D3DMATRIX*) PURE;
+    STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT9* pViewport) PURE;
+    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT9* pViewport) PURE;
+    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9* pMaterial) PURE;
+    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL9* pMaterial) PURE;
+    STDMETHOD(SetLight)(THIS_ DWORD Index, CONST D3DLIGHT9*) PURE;
+    STDMETHOD(GetLight)(THIS_ DWORD Index, D3DLIGHT9*) PURE;
+    STDMETHOD(LightEnable)(THIS_ DWORD Index, BOOL Enable) PURE;
+    STDMETHOD(GetLightEnable)(THIS_ DWORD Index, BOOL* pEnable) PURE;
+    STDMETHOD(SetClipPlane)(THIS_ DWORD Index, CONST float* pPlane) PURE;
+    STDMETHOD(GetClipPlane)(THIS_ DWORD Index, float* pPlane) PURE;
+    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD Value) PURE;
+    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD* pValue) PURE;
+    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB) PURE;
+    STDMETHOD(BeginStateBlock)(THIS) PURE;
+    STDMETHOD(EndStateBlock)(THIS_ IDirect3DStateBlock9** ppSB) PURE;
+    STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS9* pClipStatus) PURE;
+    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS9* pClipStatus) PURE;
+    STDMETHOD(GetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9** ppTexture) PURE;
+    STDMETHOD(SetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9* pTexture) PURE;
+    STDMETHOD(GetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue) PURE;
+    STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) PURE;
+    STDMETHOD(GetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue) PURE;
+    STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) PURE;
+    STDMETHOD(ValidateDevice)(THIS_ DWORD* pNumPasses) PURE;
+    STDMETHOD(SetPaletteEntries)(THIS_ UINT PaletteNumber, CONST PALETTEENTRY* pEntries) PURE;
+    STDMETHOD(GetPaletteEntries)(THIS_ UINT PaletteNumber,PALETTEENTRY* pEntries) PURE;
+    STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT PaletteNumber) PURE;
+    STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT *PaletteNumber) PURE;
+    STDMETHOD(SetScissorRect)(THIS_ CONST RECT* pRect) PURE;
+    STDMETHOD(GetScissorRect)(THIS_ RECT* pRect) PURE;
+    STDMETHOD(SetSoftwareVertexProcessing)(THIS_ BOOL bSoftware) PURE;
+    STDMETHOD_(BOOL, GetSoftwareVertexProcessing)(THIS) PURE;
+    STDMETHOD(SetNPatchMode)(THIS_ float nSegments) PURE;
+    STDMETHOD_(float, GetNPatchMode)(THIS) PURE;
+    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) PURE;
+    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount) PURE;
+    STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
+    STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
+    STDMETHOD(ProcessVertices)(THIS_ UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags) PURE;
+    STDMETHOD(CreateVertexDeclaration)(THIS_ CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl) PURE;
+    STDMETHOD(SetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9* pDecl) PURE;
+    STDMETHOD(GetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9** ppDecl) PURE;
+    STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
+    STDMETHOD(GetFVF)(THIS_ DWORD* pFVF) PURE;
+    STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader) PURE;
+    STDMETHOD(SetVertexShader)(THIS_ IDirect3DVertexShader9* pShader) PURE;
+    STDMETHOD(GetVertexShader)(THIS_ IDirect3DVertexShader9** ppShader) PURE;
+    STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(GetVertexShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
+    STDMETHOD(GetVertexShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
+    STDMETHOD(SetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride) PURE;
+    STDMETHOD(GetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9** ppStreamData, UINT* OffsetInBytes, UINT* pStride) PURE;
+    STDMETHOD(SetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT Divider) PURE;
+    STDMETHOD(GetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT* Divider) PURE;
+    STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer9* pIndexData) PURE;
+    STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer9** ppIndexData) PURE;
+    STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader) PURE;
+    STDMETHOD(SetPixelShader)(THIS_ IDirect3DPixelShader9* pShader) PURE;
+    STDMETHOD(GetPixelShader)(THIS_ IDirect3DPixelShader9** ppShader) PURE;
+    STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(GetPixelShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(GetPixelShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
+    STDMETHOD(GetPixelShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
+    STDMETHOD(DrawRectPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DRECTPATCH_INFO* pRectPatchInfo) PURE;
+    STDMETHOD(DrawTriPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DTRIPATCH_INFO* pTriPatchInfo) PURE;
+    STDMETHOD(DeletePatch)(THIS_ UINT Handle) PURE;
+    STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DDevice9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice9_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice9_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DDevice9 methods ***/
+#define IDirect3DDevice9_TestCooperativeLevel(p)                       (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirect3DDevice9_GetAvailableTextureMem(p)                     (p)->lpVtbl->GetAvailableTextureMem(p)
+#define IDirect3DDevice9_EvictManagedResources(p)                      (p)->lpVtbl->EvictManagedResources(p)
+#define IDirect3DDevice9_GetDirect3D(p,a)                              (p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice9_GetDeviceCaps(p,a)                            (p)->lpVtbl->GetDeviceCaps(p,a)
+#define IDirect3DDevice9_GetDisplayMode(p,a,b)                         (p)->lpVtbl->GetDisplayMode(p,a,b)
+#define IDirect3DDevice9_GetCreationParameters(p,a)                    (p)->lpVtbl->GetCreationParameters(p,a)
+#define IDirect3DDevice9_SetCursorProperties(p,a,b,c)                  (p)->lpVtbl->SetCursorProperties(p,a,b,c)
+#define IDirect3DDevice9_SetCursorPosition(p,a,b,c)                    (p)->lpVtbl->SetCursorPosition(p,a,b,c)
+#define IDirect3DDevice9_ShowCursor(p,a)                               (p)->lpVtbl->ShowCursor(p,a)
+#define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)              (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
+#define IDirect3DDevice9_GetSwapChain(p,a,b)                           (p)->lpVtbl->GetSwapChain(p,a,b)
+#define IDirect3DDevice9_GetNumberOfSwapChains(p)                      (p)->lpVtbl->GetNumberOfSwapChains(p)
+#define IDirect3DDevice9_Reset(p,a)                                    (p)->lpVtbl->Reset(p,a)
+#define IDirect3DDevice9_Present(p,a,b,c,d)                            (p)->lpVtbl->Present(p,a,b,c,d)
+#define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)                      (p)->lpVtbl->GetBackBuffer(p,a,b,c,d)
+#define IDirect3DDevice9_GetRasterStatus(p,a,b)                        (p)->lpVtbl->GetRasterStatus(p,a,b)
+#define IDirect3DDevice9_SetDialogBoxMode(p,a)                         (p)->lpVtbl->SetDialogBoxMode(p,a)
+#define IDirect3DDevice9_SetGammaRamp(p,a,b,c)                         (p)->lpVtbl->SetGammaRamp(p,a,b,c)
+#define IDirect3DDevice9_GetGammaRamp(p,a,b)                           (p)->lpVtbl->GetGammaRamp(p,a,b)
+#define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)                      (p)->lpVtbl->UpdateSurface(p,a,b,c,d)
+#define IDirect3DDevice9_UpdateTexture(p,a,b)                          (p)->lpVtbl->UpdateTexture(p,a,b)
+#define IDirect3DDevice9_GetRenderTargetData(p,a,b)                    (p)->lpVtbl->GetRenderTargetData(p,a,b)
+#define IDirect3DDevice9_GetFrontBufferData(p,a,b)                     (p)->lpVtbl->GetFrontBufferData(p,a,b)
+#define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)                      (p)->lpVtbl->StretchRect(p,a,b,c,d,e)
+#define IDirect3DDevice9_ColorFill(p,a,b,c)                            (p)->lpVtbl->ColorFill(p,a,b,c)
+#define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->lpVtbl->CreateOffscreenPlainSurface(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_SetRenderTarget(p,a,b)                        (p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice9_GetRenderTarget(p,a,b)                        (p)->lpVtbl->GetRenderTarget(p,a,b)
+#define IDirect3DDevice9_SetDepthStencilSurface(p,a)                   (p)->lpVtbl->SetDepthStencilSurface(p,a)
+#define IDirect3DDevice9_GetDepthStencilSurface(p,a)                   (p)->lpVtbl->GetDepthStencilSurface(p,a)
+#define IDirect3DDevice9_BeginScene(p)                                 (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice9_EndScene(p)                                   (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)                          (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_SetTransform(p,a,b)                           (p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice9_GetTransform(p,a,b)                           (p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice9_MultiplyTransform(p,a,b)                      (p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice9_SetViewport(p,a)                              (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DDevice9_GetViewport(p,a)                              (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DDevice9_SetMaterial(p,a)                              (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DDevice9_GetMaterial(p,a)                              (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DDevice9_SetLight(p,a,b)                               (p)->lpVtbl->SetLight(p,a,b)
+#define IDirect3DDevice9_GetLight(p,a,b)                               (p)->lpVtbl->GetLight(p,a,b)
+#define IDirect3DDevice9_LightEnable(p,a,b)                            (p)->lpVtbl->LightEnable(p,a,b)
+#define IDirect3DDevice9_GetLightEnable(p,a,b)                         (p)->lpVtbl->GetLightEnable(p,a,b)
+#define IDirect3DDevice9_SetClipPlane(p,a,b)                           (p)->lpVtbl->SetClipPlane(p,a,b)
+#define IDirect3DDevice9_GetClipPlane(p,a,b)                           (p)->lpVtbl->GetClipPlane(p,a,b)
+#define IDirect3DDevice9_SetRenderState(p,a,b)                         (p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice9_GetRenderState(p,a,b)                         (p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice9_CreateStateBlock(p,a,b)                       (p)->lpVtbl->CreateStateBlock(p,a,b)
+#define IDirect3DDevice9_BeginStateBlock(p)                            (p)->lpVtbl->BeginStateBlock(p)
+#define IDirect3DDevice9_EndStateBlock(p,a)                            (p)->lpVtbl->EndStateBlock(p,a)
+#define IDirect3DDevice9_SetClipStatus(p,a)                            (p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice9_GetClipStatus(p,a)                            (p)->lpVtbl->GetClipStatus(p,a)
+#define IDirect3DDevice9_GetTexture(p,a,b)                             (p)->lpVtbl->GetTexture(p,a,b)
+#define IDirect3DDevice9_SetTexture(p,a,b)                             (p)->lpVtbl->SetTexture(p,a,b)
+#define IDirect3DDevice9_GetTextureStageState(p,a,b,c)                 (p)->lpVtbl->GetTextureStageState(p,a,b,c)
+#define IDirect3DDevice9_SetTextureStageState(p,a,b,c)                 (p)->lpVtbl->SetTextureStageState(p,a,b,c)
+#define IDirect3DDevice9_GetSamplerState(p,a,b,c)                      (p)->lpVtbl->GetSamplerState(p,a,b,c)
+#define IDirect3DDevice9_SetSamplerState(p,a,b,c)                      (p)->lpVtbl->SetSamplerState(p,a,b,c)
+#define IDirect3DDevice9_ValidateDevice(p,a)                           (p)->lpVtbl->ValidateDevice(p,a)
+#define IDirect3DDevice9_SetPaletteEntries(p,a,b)                      (p)->lpVtbl->SetPaletteEntries(p,a,b)
+#define IDirect3DDevice9_GetPaletteEntries(p,a,b)                      (p)->lpVtbl->GetPaletteEntries(p,a,b)
+#define IDirect3DDevice9_SetCurrentTexturePalette(p,a)                 (p)->lpVtbl->SetCurrentTexturePalette(p,a)
+#define IDirect3DDevice9_GetCurrentTexturePalette(p,a)                 (p)->lpVtbl->GetCurrentTexturePalette(p,a)
+#define IDirect3DDevice9_SetScissorRect(p,a)                           (p)->lpVtbl->SetScissorRect(p,a)
+#define IDirect3DDevice9_GetScissorRect(p,a)                           (p)->lpVtbl->GetScissorRect(p,a)
+#define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)              (p)->lpVtbl->SetSoftwareVertexProcessing(p,a)
+#define IDirect3DDevice9_GetSoftwareVertexProcessing(p)                (p)->lpVtbl->GetSoftwareVertexProcessing(p)
+#define IDirect3DDevice9_SetNPatchMode(p,a)                            (p)->lpVtbl->SetNPatchMode(p,a)
+#define IDirect3DDevice9_GetNPatchMode(p)                              (p)->lpVtbl->GetNPatchMode(p)
+#define IDirect3DDevice9_DrawPrimitive(p,a,b,c)                        (p)->lpVtbl->DrawPrimitive(p,a,b,c)
+#define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)                    (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
+#define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)                (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)                (p)->lpVtbl->CreateVertexDeclaration(p,a,b)
+#define IDirect3DDevice9_SetVertexDeclaration(p,a)                     (p)->lpVtbl->SetVertexDeclaration(p,a)
+#define IDirect3DDevice9_GetVertexDeclaration(p,a)                     (p)->lpVtbl->GetVertexDeclaration(p,a)
+#define IDirect3DDevice9_SetFVF(p,a)                                   (p)->lpVtbl->SetFVF(p,a)
+#define IDirect3DDevice9_GetFVF(p,a)                                   (p)->lpVtbl->GetFVF(p,a)
+#define IDirect3DDevice9_CreateVertexShader(p,a,b)                     (p)->lpVtbl->CreateVertexShader(p,a,b)
+#define IDirect3DDevice9_SetVertexShader(p,a)                          (p)->lpVtbl->SetVertexShader(p,a)
+#define IDirect3DDevice9_GetVertexShader(p,a)                          (p)->lpVtbl->GetVertexShader(p,a)
+#define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->SetStreamSource(p,a,b,c,d)
+#define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->GetStreamSource(p,a,b,c,d)
+#define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->SetStreamSourceFreq(p,a,b)
+#define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->GetStreamSourceFreq(p,a,b)
+#define IDirect3DDevice9_SetIndices(p,a)                               (p)->lpVtbl->SetIndices(p,a)
+#define IDirect3DDevice9_GetIndices(p,a)                               (p)->lpVtbl->GetIndices(p,a)
+#define IDirect3DDevice9_CreatePixelShader(p,a,b)                      (p)->lpVtbl->CreatePixelShader(p,a,b)
+#define IDirect3DDevice9_SetPixelShader(p,a)                           (p)->lpVtbl->SetPixelShader(p,a)
+#define IDirect3DDevice9_GetPixelShader(p,a)                           (p)->lpVtbl->GetPixelShader(p,a)
+#define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_DrawRectPatch(p,a,b,c)                        (p)->lpVtbl->DrawRectPatch(p,a,b,c)
+#define IDirect3DDevice9_DrawTriPatch(p,a,b,c)                         (p)->lpVtbl->DrawTriPatch(p,a,b,c)
+#define IDirect3DDevice9_DeletePatch(p,a)                              (p)->lpVtbl->DeletePatch(p,a)
+#define IDirect3DDevice9_CreateQuery(p,a,b)                            (p)->lpVtbl->CreateQuery(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DDevice9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice9_AddRef(p)             (p)->AddRef()
+#define IDirect3DDevice9_Release(p)            (p)->Release()
+/*** IDirect3DDevice9 methods ***/
+#define IDirect3DDevice9_TestCooperativeLevel(p)                       (p)->TestCooperativeLevel()
+#define IDirect3DDevice9_GetAvailableTextureMem(p)                     (p)->GetAvailableTextureMem()
+#define IDirect3DDevice9_EvictManagedResources(p)                      (p)->EvictManagedResources()
+#define IDirect3DDevice9_GetDirect3D(p,a)                              (p)->GetDirect3D(a)
+#define IDirect3DDevice9_GetDeviceCaps(p,a)                            (p)->GetDeviceCaps(a)
+#define IDirect3DDevice9_GetDisplayMode(p,a,b)                         (p)->GetDisplayMode(a,b)
+#define IDirect3DDevice9_GetCreationParameters(p,a)                    (p)->GetCreationParameters(a)
+#define IDirect3DDevice9_SetCursorProperties(p,a,b,c)                  (p)->SetCursorProperties(a,b,c)
+#define IDirect3DDevice9_SetCursorPosition(p,a,b,c)                    (p)->SetCursorPosition(a,b,c)
+#define IDirect3DDevice9_ShowCursor(p,a)                               (p)->ShowCursor(a)
+#define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)              (p)->CreateAdditionalSwapChain(a,b)
+#define IDirect3DDevice9_GetSwapChain(p,a,b)                           (p)->GetSwapChain(a,b)
+#define IDirect3DDevice9_GetNumberOfSwapChains(p)                      (p)->GetNumberOfSwapChains()
+#define IDirect3DDevice9_Reset(p,a)                                    (p)->Reset(a)
+#define IDirect3DDevice9_Present(p,a,b,c,d)                            (p)->Present(a,b,c,d)
+#define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)                      (p)->GetBackBuffer(a,b,c,d)
+#define IDirect3DDevice9_GetRasterStatus(p,a,b)                        (p)->GetRasterStatus(a,b)
+#define IDirect3DDevice9_SetDialogBoxMode(p,a)                         (p)->SetDialogBoxMode(a)
+#define IDirect3DDevice9_SetGammaRamp(p,a,b,c)                         (p)->SetGammaRamp(a,b,c)
+#define IDirect3DDevice9_GetGammaRamp(p,a,b)                           (p)->GetGammaRamp(a,b)
+#define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->CreateTexture(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->CreateCubeTexture(a,b,c,d,e,f,g)
+#define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->CreateVertexBuffer(a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->CreateIndexBuffer(a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->CreateRenderTarget(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->CreateDepthStencilSurface(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)                      (p)->UpdateSurface(a,b,c,d)
+#define IDirect3DDevice9_UpdateTexture(p,a,b)                          (p)->UpdateTexture(a,b)
+#define IDirect3DDevice9_GetRenderTargetData(p,a,b)                    (p)->GetRenderTargetData(a,b)
+#define IDirect3DDevice9_GetFrontBufferData(p,a,b)                     (p)->GetFrontBufferData(a,b)
+#define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)                      (p)->StretchRect(a,b,c,d,e)
+#define IDirect3DDevice9_ColorFill(p,a,b,c)                            (p)->ColorFill(a,b,c)
+#define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->CreateOffscreenPlainSurface(a,b,c,d,e,f)
+#define IDirect3DDevice9_SetRenderTarget(p,a,b)                        (p)->SetRenderTarget(a,b)
+#define IDirect3DDevice9_GetRenderTarget(p,a,b)                        (p)->GetRenderTarget(a,b)
+#define IDirect3DDevice9_SetDepthStencilSurface(p,a)                   (p)->SetDepthStencilSurface(a)
+#define IDirect3DDevice9_GetDepthStencilSurface(p,a)                   (p)->GetDepthStencilSurface(a)
+#define IDirect3DDevice9_BeginScene(p)                                 (p)->BeginScene()
+#define IDirect3DDevice9_EndScene(p)                                   (p)->EndScene()
+#define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)                          (p)->Clear(a,b,c,d,e,f)
+#define IDirect3DDevice9_SetTransform(p,a,b)                           (p)->SetTransform(a,b)
+#define IDirect3DDevice9_GetTransform(p,a,b)                           (p)->GetTransform(a,b)
+#define IDirect3DDevice9_MultiplyTransform(p,a,b)                      (p)->MultiplyTransform(a,b)
+#define IDirect3DDevice9_SetViewport(p,a)                              (p)->SetViewport(a)
+#define IDirect3DDevice9_GetViewport(p,a)                              (p)->GetViewport(a)
+#define IDirect3DDevice9_SetMaterial(p,a)                              (p)->SetMaterial(a)
+#define IDirect3DDevice9_GetMaterial(p,a)                              (p)->GetMaterial(a)
+#define IDirect3DDevice9_SetLight(p,a,b)                               (p)->SetLight(a,b)
+#define IDirect3DDevice9_GetLight(p,a,b)                               (p)->GetLight(a,b)
+#define IDirect3DDevice9_LightEnable(p,a,b)                            (p)->LightEnable(a,b)
+#define IDirect3DDevice9_GetLightEnable(p,a,b)                         (p)->GetLightEnable(a,b)
+#define IDirect3DDevice9_SetClipPlane(p,a,b)                           (p)->SetClipPlane(a,b)
+#define IDirect3DDevice9_GetClipPlane(p,a,b)                           (p)->GetClipPlane(a,b)
+#define IDirect3DDevice9_SetRenderState(p,a,b)                         (p)->SetRenderState(a,b)
+#define IDirect3DDevice9_GetRenderState(p,a,b)                         (p)->GetRenderState(a,b)
+#define IDirect3DDevice9_CreateStateBlock(p,a,b)                       (p)->CreateStateBlock(a,b)
+#define IDirect3DDevice9_BeginStateBlock(p)                            (p)->BeginStateBlock()
+#define IDirect3DDevice9_EndStateBlock(p,a)                            (p)->EndStateBlock(a)
+#define IDirect3DDevice9_SetClipStatus(p,a)                            (p)->SetClipStatus(a)
+#define IDirect3DDevice9_GetClipStatus(p,a)                            (p)->GetClipStatus(a)
+#define IDirect3DDevice9_GetTexture(p,a,b)                             (p)->GetTexture(a,b)
+#define IDirect3DDevice9_SetTexture(p,a,b)                             (p)->SetTexture(a,b)
+#define IDirect3DDevice9_GetTextureStageState(p,a,b,c)                 (p)->GetTextureStageState(a,b,c)
+#define IDirect3DDevice9_SetTextureStageState(p,a,b,c)                 (p)->SetTextureStageState(a,b,c)
+#define IDirect3DDevice9_GetSamplerState(p,a,b,c)                      (p)->GetSamplerState(a,b,c)
+#define IDirect3DDevice9_SetSamplerState(p,a,b,c)                      (p)->SetSamplerState(a,b,c)
+#define IDirect3DDevice9_ValidateDevice(p,a)                           (p)->ValidateDevice(a)
+#define IDirect3DDevice9_SetPaletteEntries(p,a,b)                      (p)->SetPaletteEntries(a,b)
+#define IDirect3DDevice9_GetPaletteEntries(p,a,b)                      (p)->GetPaletteEntries(a,b)
+#define IDirect3DDevice9_SetCurrentTexturePalette(p,a)                 (p)->SetCurrentTexturePalette(a)
+#define IDirect3DDevice9_GetCurrentTexturePalette(p,a)                 (p)->GetCurrentTexturePalette(a)
+#define IDirect3DDevice9_SetScissorRect(p,a)                           (p)->SetScissorRect(a)
+#define IDirect3DDevice9_GetScissorRect(p,a)                           (p)->GetScissorRect(a)
+#define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)              (p)->SetSoftwareVertexProcessing(a)
+#define IDirect3DDevice9_GetSoftwareVertexProcessing(p)                (p)->GetSoftwareVertexProcessing()
+#define IDirect3DDevice9_SetNPatchMode(p,a)                            (p)->SetNPatchMode(a)
+#define IDirect3DDevice9_GetNPatchMode(p)                              (p)->GetNPatchMode()
+#define IDirect3DDevice9_DrawPrimitive(p,a,b,c)                        (p)->DrawPrimitive(a,b,c)
+#define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->DrawIndexedPrimitive(a,b,c,d,e,f)
+#define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)                    (p)->DrawPrimitiveUP(a,b,c,d)
+#define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)                (p)->ProcessVertices(a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)                (p)->CreateVertexDeclaration(a,b)
+#define IDirect3DDevice9_SetVertexDeclaration(p,a)                     (p)->SetVertexDeclaration(a)
+#define IDirect3DDevice9_GetVertexDeclaration(p,a)                     (p)->GetVertexDeclaration(a)
+#define IDirect3DDevice9_SetFVF(p,a)                                   (p)->SetFVF(a)
+#define IDirect3DDevice9_GetFVF(p,a)                                   (p)->GetFVF(a)
+#define IDirect3DDevice9_CreateVertexShader(p,a,b)                     (p)->CreateVertexShader(a,b)
+#define IDirect3DDevice9_SetVertexShader(p,a)                          (p)->SetVertexShader(a)
+#define IDirect3DDevice9_GetVertexShader(p,a)                          (p)->GetVertexShader(a)
+#define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)             (p)->SetVertexShaderConstantF(a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)             (p)->GetVertexShaderConstantF(a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)             (p)->SetVertexShaderConstantI(a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)             (p)->GetVertexShaderConstantI(a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)             (p)->SetVertexShaderConstantB(a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)             (p)->GetVertexShaderConstantB(a,b,c)
+#define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)                    (p)->SetStreamSource(a,b,c,d)
+#define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)                    (p)->GetStreamSource(a,b,c,d)
+#define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)                    (p)->SetStreamSourceFreq(a,b)
+#define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)                    (p)->GetStreamSourceFreq(a,b)
+#define IDirect3DDevice9_SetIndices(p,a)                               (p)->SetIndices(a)
+#define IDirect3DDevice9_GetIndices(p,a)                               (p)->GetIndices(a)
+#define IDirect3DDevice9_CreatePixelShader(p,a,b)                      (p)->CreatePixelShader(a,b)
+#define IDirect3DDevice9_SetPixelShader(p,a)                           (p)->SetPixelShader(a)
+#define IDirect3DDevice9_GetPixelShader(p,a)                           (p)->GetPixelShader(a)
+#define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)              (p)->SetPixelShaderConstantF(a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)              (p)->GetPixelShaderConstantF(a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)              (p)->SetPixelShaderConstantI(a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)              (p)->GetPixelShaderConstantI(a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)              (p)->SetPixelShaderConstantB(a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)              (p)->GetPixelShaderConstantB(a,b,c)
+#define IDirect3DDevice9_DrawRectPatch(p,a,b,c)                        (p)->DrawRectPatch(a,b,c)
+#define IDirect3DDevice9_DrawTriPatch(p,a,b,c)                         (p)->DrawTriPatch(a,b,c)
+#define IDirect3DDevice9_DeletePatch(p,a)                              (p)->DeletePatch(a)
+#define IDirect3DDevice9_CreateQuery(p,a,b)                            (p)->CreateQuery(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirect3DDevice9Ex interface
+ */
+#define INTERFACE IDirect3DDevice9Ex
+DECLARE_INTERFACE_(IDirect3DDevice9Ex,IDirect3DDevice9)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IDirect3DDevice9 methods ***/
+    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+    STDMETHOD_(UINT, GetAvailableTextureMem)(THIS) PURE;
+    STDMETHOD(EvictManagedResources)(THIS) PURE;
+    STDMETHOD(GetDirect3D)(THIS_ IDirect3D9** ppD3D9) PURE;
+    STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS9* pCaps) PURE;
+    STDMETHOD(GetDisplayMode)(THIS_ UINT iSwapChain, D3DDISPLAYMODE* pMode) PURE;
+    STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS *pParameters) PURE;
+    STDMETHOD(SetCursorProperties)(THIS_ UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap) PURE;
+    STDMETHOD_(void, SetCursorPosition)(THIS_ int X,int Y, DWORD Flags) PURE;
+    STDMETHOD_(BOOL, ShowCursor)(THIS_ BOOL bShow) PURE;
+    STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** pSwapChain) PURE;
+    STDMETHOD(GetSwapChain)(THIS_ UINT iSwapChain, IDirect3DSwapChain9** pSwapChain) PURE;
+    STDMETHOD_(UINT, GetNumberOfSwapChains)(THIS) PURE;
+    STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
+    STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion) PURE;
+    STDMETHOD(GetBackBuffer)(THIS_ UINT iSwapChain, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer) PURE;
+    STDMETHOD(GetRasterStatus)(THIS_ UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus) PURE;
+    STDMETHOD(SetDialogBoxMode)(THIS_ BOOL bEnableDialogs) PURE;
+    STDMETHOD_(void, SetGammaRamp)(THIS_ UINT iSwapChain, DWORD Flags, CONST D3DGAMMARAMP* pRamp) PURE;
+    STDMETHOD_(void, GetGammaRamp)(THIS_ UINT iSwapChain, D3DGAMMARAMP* pRamp) PURE;
+    STDMETHOD(CreateTexture)(THIS_ UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateVolumeTexture)(THIS_ UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateCubeTexture)(THIS_ UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateVertexBuffer)(THIS_ UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateIndexBuffer)(THIS_ UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateRenderTarget)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Lockable, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(UpdateSurface)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestPoint) PURE;
+    STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture) PURE;
+    STDMETHOD(GetRenderTargetData)(THIS_ IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface) PURE;
+    STDMETHOD(GetFrontBufferData)(THIS_ UINT iSwapChain, IDirect3DSurface9* pDestSurface) PURE;
+    STDMETHOD(StretchRect)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestSurface, CONST RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter) PURE;
+    STDMETHOD(ColorFill)(THIS_ IDirect3DSurface9* pSurface, CONST RECT* pRect, D3DCOLOR color) PURE;
+    STDMETHOD(CreateOffscreenPlainSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
+    STDMETHOD(SetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget) PURE;
+    STDMETHOD(GetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9** ppRenderTarget) PURE;
+    STDMETHOD(SetDepthStencilSurface)(THIS_ IDirect3DSurface9* pNewZStencil) PURE;
+    STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface9** ppZStencilSurface) PURE;
+    STDMETHOD(BeginScene)(THIS) PURE;
+    STDMETHOD(EndScene)(THIS) PURE;
+    STDMETHOD(Clear)(THIS_ DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil) PURE;
+    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) PURE;
+    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix) PURE;
+    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE, CONST D3DMATRIX*) PURE;
+    STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT9* pViewport) PURE;
+    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT9* pViewport) PURE;
+    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9* pMaterial) PURE;
+    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL9* pMaterial) PURE;
+    STDMETHOD(SetLight)(THIS_ DWORD Index, CONST D3DLIGHT9*) PURE;
+    STDMETHOD(GetLight)(THIS_ DWORD Index, D3DLIGHT9*) PURE;
+    STDMETHOD(LightEnable)(THIS_ DWORD Index, BOOL Enable) PURE;
+    STDMETHOD(GetLightEnable)(THIS_ DWORD Index, BOOL* pEnable) PURE;
+    STDMETHOD(SetClipPlane)(THIS_ DWORD Index, CONST float* pPlane) PURE;
+    STDMETHOD(GetClipPlane)(THIS_ DWORD Index, float* pPlane) PURE;
+    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD Value) PURE;
+    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD* pValue) PURE;
+    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB) PURE;
+    STDMETHOD(BeginStateBlock)(THIS) PURE;
+    STDMETHOD(EndStateBlock)(THIS_ IDirect3DStateBlock9** ppSB) PURE;
+    STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS9* pClipStatus) PURE;
+    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS9* pClipStatus) PURE;
+    STDMETHOD(GetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9** ppTexture) PURE;
+    STDMETHOD(SetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9* pTexture) PURE;
+    STDMETHOD(GetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue) PURE;
+    STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) PURE;
+    STDMETHOD(GetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue) PURE;
+    STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) PURE;
+    STDMETHOD(ValidateDevice)(THIS_ DWORD* pNumPasses) PURE;
+    STDMETHOD(SetPaletteEntries)(THIS_ UINT PaletteNumber, CONST PALETTEENTRY* pEntries) PURE;
+    STDMETHOD(GetPaletteEntries)(THIS_ UINT PaletteNumber,PALETTEENTRY* pEntries) PURE;
+    STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT PaletteNumber) PURE;
+    STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT *PaletteNumber) PURE;
+    STDMETHOD(SetScissorRect)(THIS_ CONST RECT* pRect) PURE;
+    STDMETHOD(GetScissorRect)(THIS_ RECT* pRect) PURE;
+    STDMETHOD(SetSoftwareVertexProcessing)(THIS_ BOOL bSoftware) PURE;
+    STDMETHOD_(BOOL, GetSoftwareVertexProcessing)(THIS) PURE;
+    STDMETHOD(SetNPatchMode)(THIS_ float nSegments) PURE;
+    STDMETHOD_(float, GetNPatchMode)(THIS) PURE;
+    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) PURE;
+    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount) PURE;
+    STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
+    STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
+    STDMETHOD(ProcessVertices)(THIS_ UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags) PURE;
+    STDMETHOD(CreateVertexDeclaration)(THIS_ CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl) PURE;
+    STDMETHOD(SetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9* pDecl) PURE;
+    STDMETHOD(GetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9** ppDecl) PURE;
+    STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
+    STDMETHOD(GetFVF)(THIS_ DWORD* pFVF) PURE;
+    STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader) PURE;
+    STDMETHOD(SetVertexShader)(THIS_ IDirect3DVertexShader9* pShader) PURE;
+    STDMETHOD(GetVertexShader)(THIS_ IDirect3DVertexShader9** ppShader) PURE;
+    STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(GetVertexShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
+    STDMETHOD(GetVertexShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
+    STDMETHOD(SetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride) PURE;
+    STDMETHOD(GetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9** ppStreamData, UINT* OffsetInBytes, UINT* pStride) PURE;
+    STDMETHOD(SetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT Divider) PURE;
+    STDMETHOD(GetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT* Divider) PURE;
+    STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer9* pIndexData) PURE;
+    STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer9** ppIndexData) PURE;
+    STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader) PURE;
+    STDMETHOD(SetPixelShader)(THIS_ IDirect3DPixelShader9* pShader) PURE;
+    STDMETHOD(GetPixelShader)(THIS_ IDirect3DPixelShader9** ppShader) PURE;
+    STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(GetPixelShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
+    STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(GetPixelShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
+    STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
+    STDMETHOD(GetPixelShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
+    STDMETHOD(DrawRectPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DRECTPATCH_INFO* pRectPatchInfo) PURE;
+    STDMETHOD(DrawTriPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DTRIPATCH_INFO* pTriPatchInfo) PURE;
+    STDMETHOD(DeletePatch)(THIS_ UINT Handle) PURE;
+    STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery) PURE;
+    /* IDirect3DDevice9Ex methods */
+    STDMETHOD(SetConvolutionMonoKernel)(THIS_ UINT width, UINT height, float *rows, float *columns) PURE;
+    STDMETHOD(ComposeRects)(THIS_ IDirect3DSurface9 *src_surface, IDirect3DSurface9 *dst_surface,
+            IDirect3DVertexBuffer9 *src_descs, UINT rect_count, IDirect3DVertexBuffer9 *dst_descs,
+            D3DCOMPOSERECTSOP operation, INT offset_x, INT offset_y) PURE;
+    STDMETHOD(PresentEx)(THIS_ CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion, DWORD dwFlags) PURE;
+    STDMETHOD(GetGPUThreadPriority)(THIS_ INT *pPriority) PURE;
+    STDMETHOD(SetGPUThreadPriority)(THIS_ INT Priority) PURE;
+    STDMETHOD(WaitForVBlank)(THIS_ UINT iSwapChain) PURE;
+    STDMETHOD(CheckResourceResidency)(THIS_ IDirect3DResource9 **resources, UINT32 resource_count) PURE;
+    STDMETHOD(SetMaximumFrameLatency)(THIS_ UINT MaxLatency) PURE;
+    STDMETHOD(GetMaximumFrameLatency)(THIS_ UINT *pMaxLatenxy) PURE;
+    STDMETHOD(CheckDeviceState)(THIS_ HWND dst_window) PURE;
+    STDMETHOD(CreateRenderTargetEx)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultiSampleQuality, BOOL Lockable, IDirect3DSurface9 ** ppSurface, HANDLE *pSharedHandle, DWORD Usage) PURE;
+    STDMETHOD(CreateOffscreenPlainSurfaceEx)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9 **ppSurface, HANDLE *pSharedHandle, DWORD Usage) PURE;
+    STDMETHOD(CreateDepthStencilSurfaceEx)(THIS_ UINT width, UINT height, D3DFORMAT format,
+            D3DMULTISAMPLE_TYPE multisample_type, DWORD multisample_quality, BOOL discard,
+            IDirect3DSurface9 **surface, HANDLE *shared_handle, DWORD usage) PURE;
+    STDMETHOD(ResetEx)(THIS_ D3DPRESENT_PARAMETERS *pPresentationParameters, D3DDISPLAYMODEEX *pFullscreenDisplayMode) PURE;
+    STDMETHOD(GetDisplayModeEx)(THIS_ UINT iSwapChain, D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirect3DDevice9Ex_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice9Ex_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice9Ex_Release(p)            (p)->lpVtbl->Release(p)
+/*** IDirect3DDevice9 methods ***/
+#define IDirect3DDevice9Ex_TestCooperativeLevel(p)                       (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirect3DDevice9Ex_GetAvailableTextureMem(p)                     (p)->lpVtbl->GetAvailableTextureMem(p)
+#define IDirect3DDevice9Ex_EvictManagedResources(p)                      (p)->lpVtbl->EvictManagedResources(p)
+#define IDirect3DDevice9Ex_GetDirect3D(p,a)                              (p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice9Ex_GetDeviceCaps(p,a)                            (p)->lpVtbl->GetDeviceCaps(p,a)
+#define IDirect3DDevice9Ex_GetDisplayMode(p,a,b)                         (p)->lpVtbl->GetDisplayMode(p,a,b)
+#define IDirect3DDevice9Ex_GetCreationParameters(p,a)                    (p)->lpVtbl->GetCreationParameters(p,a)
+#define IDirect3DDevice9Ex_SetCursorProperties(p,a,b,c)                  (p)->lpVtbl->SetCursorProperties(p,a,b,c)
+#define IDirect3DDevice9Ex_SetCursorPosition(p,a,b,c)                    (p)->lpVtbl->SetCursorPosition(p,a,b,c)
+#define IDirect3DDevice9Ex_ShowCursor(p,a)                               (p)->lpVtbl->ShowCursor(p,a)
+#define IDirect3DDevice9Ex_CreateAdditionalSwapChain(p,a,b)              (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
+#define IDirect3DDevice9Ex_GetSwapChain(p,a,b)                           (p)->lpVtbl->GetSwapChain(p,a,b)
+#define IDirect3DDevice9Ex_GetNumberOfSwapChains(p)                      (p)->lpVtbl->GetNumberOfSwapChains(p)
+#define IDirect3DDevice9Ex_Reset(p,a)                                    (p)->lpVtbl->Reset(p,a)
+#define IDirect3DDevice9Ex_Present(p,a,b,c,d)                            (p)->lpVtbl->Present(p,a,b,c,d)
+#define IDirect3DDevice9Ex_GetBackBuffer(p,a,b,c,d)                      (p)->lpVtbl->GetBackBuffer(p,a,b,c,d)
+#define IDirect3DDevice9Ex_GetRasterStatus(p,a,b)                        (p)->lpVtbl->GetRasterStatus(p,a,b)
+#define IDirect3DDevice9Ex_SetDialogBoxMode(p,a)                         (p)->lpVtbl->SetDialogBoxMode(p,a)
+#define IDirect3DDevice9Ex_SetGammaRamp(p,a,b,c)                         (p)->lpVtbl->SetGammaRamp(p,a,b,c)
+#define IDirect3DDevice9Ex_GetGammaRamp(p,a,b)                           (p)->lpVtbl->GetGammaRamp(p,a,b)
+#define IDirect3DDevice9Ex_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9Ex_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice9Ex_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_UpdateSurface(p,a,b,c,d)                      (p)->lpVtbl->UpdateSurface(p,a,b,c,d)
+#define IDirect3DDevice9Ex_UpdateTexture(p,a,b)                          (p)->lpVtbl->UpdateTexture(p,a,b)
+#define IDirect3DDevice9Ex_GetRenderTargetData(p,a,b)                    (p)->lpVtbl->GetRenderTargetData(p,a,b)
+#define IDirect3DDevice9Ex_GetFrontBufferData(p,a,b)                     (p)->lpVtbl->GetFrontBufferData(p,a,b)
+#define IDirect3DDevice9Ex_StretchRect(p,a,b,c,d,e)                      (p)->lpVtbl->StretchRect(p,a,b,c,d,e)
+#define IDirect3DDevice9Ex_ColorFill(p,a,b,c)                            (p)->lpVtbl->ColorFill(p,a,b,c)
+#define IDirect3DDevice9Ex_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->lpVtbl->CreateOffscreenPlainSurface(p,a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_SetRenderTarget(p,a,b)                        (p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice9Ex_GetRenderTarget(p,a,b)                        (p)->lpVtbl->GetRenderTarget(p,a,b)
+#define IDirect3DDevice9Ex_SetDepthStencilSurface(p,a)                   (p)->lpVtbl->SetDepthStencilSurface(p,a)
+#define IDirect3DDevice9Ex_GetDepthStencilSurface(p,a)                   (p)->lpVtbl->GetDepthStencilSurface(p,a)
+#define IDirect3DDevice9Ex_BeginScene(p)                                 (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice9Ex_EndScene(p)                                   (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice9Ex_Clear(p,a,b,c,d,e,f)                          (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_SetTransform(p,a,b)                           (p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice9Ex_GetTransform(p,a,b)                           (p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice9Ex_MultiplyTransform(p,a,b)                      (p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice9Ex_SetViewport(p,a)                              (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DDevice9Ex_GetViewport(p,a)                              (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DDevice9Ex_SetMaterial(p,a)                              (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DDevice9Ex_GetMaterial(p,a)                              (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DDevice9Ex_SetLight(p,a,b)                               (p)->lpVtbl->SetLight(p,a,b)
+#define IDirect3DDevice9Ex_GetLight(p,a,b)                               (p)->lpVtbl->GetLight(p,a,b)
+#define IDirect3DDevice9Ex_LightEnable(p,a,b)                            (p)->lpVtbl->LightEnable(p,a,b)
+#define IDirect3DDevice9Ex_GetLightEnable(p,a,b)                         (p)->lpVtbl->GetLightEnable(p,a,b)
+#define IDirect3DDevice9Ex_SetClipPlane(p,a,b)                           (p)->lpVtbl->SetClipPlane(p,a,b)
+#define IDirect3DDevice9Ex_GetClipPlane(p,a,b)                           (p)->lpVtbl->GetClipPlane(p,a,b)
+#define IDirect3DDevice9Ex_SetRenderState(p,a,b)                         (p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice9Ex_GetRenderState(p,a,b)                         (p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice9Ex_CreateStateBlock(p,a,b)                       (p)->lpVtbl->CreateStateBlock(p,a,b)
+#define IDirect3DDevice9Ex_BeginStateBlock(p)                            (p)->lpVtbl->BeginStateBlock(p)
+#define IDirect3DDevice9Ex_EndStateBlock(p,a)                            (p)->lpVtbl->EndStateBlock(p,a)
+#define IDirect3DDevice9Ex_SetClipStatus(p,a)                            (p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice9Ex_GetClipStatus(p,a)                            (p)->lpVtbl->GetClipStatus(p,a)
+#define IDirect3DDevice9Ex_GetTexture(p,a,b)                             (p)->lpVtbl->GetTexture(p,a,b)
+#define IDirect3DDevice9Ex_SetTexture(p,a,b)                             (p)->lpVtbl->SetTexture(p,a,b)
+#define IDirect3DDevice9Ex_GetTextureStageState(p,a,b,c)                 (p)->lpVtbl->GetTextureStageState(p,a,b,c)
+#define IDirect3DDevice9Ex_SetTextureStageState(p,a,b,c)                 (p)->lpVtbl->SetTextureStageState(p,a,b,c)
+#define IDirect3DDevice9Ex_GetSamplerState(p,a,b,c)                      (p)->lpVtbl->GetSamplerState(p,a,b,c)
+#define IDirect3DDevice9Ex_SetSamplerState(p,a,b,c)                      (p)->lpVtbl->SetSamplerState(p,a,b,c)
+#define IDirect3DDevice9Ex_ValidateDevice(p,a)                           (p)->lpVtbl->ValidateDevice(p,a)
+#define IDirect3DDevice9Ex_SetPaletteEntries(p,a,b)                      (p)->lpVtbl->SetPaletteEntries(p,a,b)
+#define IDirect3DDevice9Ex_GetPaletteEntries(p,a,b)                      (p)->lpVtbl->GetPaletteEntries(p,a,b)
+#define IDirect3DDevice9Ex_SetCurrentTexturePalette(p,a)                 (p)->lpVtbl->SetCurrentTexturePalette(p,a)
+#define IDirect3DDevice9Ex_GetCurrentTexturePalette(p,a)                 (p)->lpVtbl->GetCurrentTexturePalette(p,a)
+#define IDirect3DDevice9Ex_SetScissorRect(p,a)                           (p)->lpVtbl->SetScissorRect(p,a)
+#define IDirect3DDevice9Ex_GetScissorRect(p,a)                           (p)->lpVtbl->GetScissorRect(p,a)
+#define IDirect3DDevice9Ex_SetSoftwareVertexProcessing(p,a)              (p)->lpVtbl->SetSoftwareVertexProcessing(p,a)
+#define IDirect3DDevice9Ex_GetSoftwareVertexProcessing(p)                (p)->lpVtbl->GetSoftwareVertexProcessing(p)
+#define IDirect3DDevice9Ex_SetNPatchMode(p,a)                            (p)->lpVtbl->SetNPatchMode(p,a)
+#define IDirect3DDevice9Ex_GetNPatchMode(p)                              (p)->lpVtbl->GetNPatchMode(p)
+#define IDirect3DDevice9Ex_DrawPrimitive(p,a,b,c)                        (p)->lpVtbl->DrawPrimitive(p,a,b,c)
+#define IDirect3DDevice9Ex_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_DrawPrimitiveUP(p,a,b,c,d)                    (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
+#define IDirect3DDevice9Ex_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_ProcessVertices(p,a,b,c,d,e,f)                (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_CreateVertexDeclaration(p,a,b)                (p)->lpVtbl->CreateVertexDeclaration(p,a,b)
+#define IDirect3DDevice9Ex_SetVertexDeclaration(p,a)                     (p)->lpVtbl->SetVertexDeclaration(p,a)
+#define IDirect3DDevice9Ex_GetVertexDeclaration(p,a)                     (p)->lpVtbl->GetVertexDeclaration(p,a)
+#define IDirect3DDevice9Ex_SetFVF(p,a)                                   (p)->lpVtbl->SetFVF(p,a)
+#define IDirect3DDevice9Ex_GetFVF(p,a)                                   (p)->lpVtbl->GetFVF(p,a)
+#define IDirect3DDevice9Ex_CreateVertexShader(p,a,b)                     (p)->lpVtbl->CreateVertexShader(p,a,b)
+#define IDirect3DDevice9Ex_SetVertexShader(p,a)                          (p)->lpVtbl->SetVertexShader(p,a)
+#define IDirect3DDevice9Ex_GetVertexShader(p,a)                          (p)->lpVtbl->GetVertexShader(p,a)
+#define IDirect3DDevice9Ex_SetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9Ex_GetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9Ex_SetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9Ex_GetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9Ex_SetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9Ex_GetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9Ex_SetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->SetStreamSource(p,a,b,c,d)
+#define IDirect3DDevice9Ex_GetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->GetStreamSource(p,a,b,c,d)
+#define IDirect3DDevice9Ex_SetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->SetStreamSourceFreq(p,a,b)
+#define IDirect3DDevice9Ex_GetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->GetStreamSourceFreq(p,a,b)
+#define IDirect3DDevice9Ex_SetIndices(p,a)                               (p)->lpVtbl->SetIndices(p,a)
+#define IDirect3DDevice9Ex_GetIndices(p,a)                               (p)->lpVtbl->GetIndices(p,a)
+#define IDirect3DDevice9Ex_CreatePixelShader(p,a,b)                      (p)->lpVtbl->CreatePixelShader(p,a,b)
+#define IDirect3DDevice9Ex_SetPixelShader(p,a)                           (p)->lpVtbl->SetPixelShader(p,a)
+#define IDirect3DDevice9Ex_GetPixelShader(p,a)                           (p)->lpVtbl->GetPixelShader(p,a)
+#define IDirect3DDevice9Ex_SetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9Ex_GetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9Ex_SetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9Ex_GetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9Ex_SetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9Ex_GetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9Ex_DrawRectPatch(p,a,b,c)                        (p)->lpVtbl->DrawRectPatch(p,a,b,c)
+#define IDirect3DDevice9Ex_DrawTriPatch(p,a,b,c)                         (p)->lpVtbl->DrawTriPatch(p,a,b,c)
+#define IDirect3DDevice9Ex_DeletePatch(p,a)                              (p)->lpVtbl->DeletePatch(p,a)
+#define IDirect3DDevice9Ex_CreateQuery(p,a,b)                            (p)->lpVtbl->CreateQuery(p,a,b)
+/* IDirect3DDevice9Ex */
+#define IDirect3DDevice9Ex_SetConvolutionMonoKernel(p,a,b,c,d)           (p)->lpVtbl->SetConvolutionMonoKernel(p,a,b,c,d)
+#define IDirect3DDevice9Ex_ComposeRects(p,a,b,c,d,e,f,g,h)               (p)->lpVtbl->ComposeRects(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_PresentEx(p,a,b,c,d,e)                        (p)->lpVtbl->PresentEx(p,a,b,c,d,e)
+#define IDirect3DDevice9Ex_GetGPUThreadPriority(p,a)                     (p)->lpVtbl->GetGPUThreadPriority(p,a)
+#define IDirect3DDevice9Ex_SetGPUThreadPriority(p,a)                     (p)->lpVtbl->SetGPUThreadPriority(p,a)
+#define IDirect3DDevice9Ex_WaitForVBlank(p,a)                            (p)->lpVtbl->WaitForVBlank(p,a)
+#define IDirect3DDevice9Ex_CheckResourceResidency(p,a,b)                 (p)->lpVtbl->CheckResourceResidency(p,a,b)
+#define IDirect3DDevice9Ex_SetMaximumFrameLatency(p,a)                   (p)->lpVtbl->SetMaximumFrameLatency(p,a)
+#define IDirect3DDevice9Ex_GetMaximumFrameLatency(p,a)                   (p)->lpVtbl->GetMaximumFrameLatency(p,a)
+#define IDirect3DDevice9Ex_CheckDeviceState(p,a)                         (p)->lpVtbl->CheckDeviceState(p,a)
+#define IDirect3DDevice9Ex_CreateRenderTargetEx(p,a,b,c,d,e,f,g,h,i)     (p)->lpVtbl->CreateRenderTargetEx(p,a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9Ex_CreateOffscreenPlainSurfaceEx(p,a,b,c,d,e,f,g)(p)->lpVtbl->CreateOffscreenPlainSurfaceEx(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice9Ex_CreateDepthStencilSurfaceEx(p,a,b,c,d,e,f,g,h,i)(p)->lpVtbl->CreateDepthStencilSurfaceEx(p,a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9Ex_ResetEx(p,a,b)                                 (p)->lpVtbl->ResetEx(p,a,b)
+#define IDirect3DDevice9Ex_GetDisplayModeEx(p,a,b,c)                     (p)->lpVtbl->GetDisplayModeEx(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirect3DDevice9Ex_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice9Ex_AddRef(p)             (p)->AddRef()
+#define IDirect3DDevice9Ex_Release(p)            (p)->Release()
+/*** IDirect3DDevice9 methods ***/
+#define IDirect3DDevice9Ex_TestCooperativeLevel(p)                       (p)->TestCooperativeLevel()
+#define IDirect3DDevice9Ex_GetAvailableTextureMem(p)                     (p)->GetAvailableTextureMem()
+#define IDirect3DDevice9Ex_EvictManagedResources(p)                      (p)->EvictManagedResources()
+#define IDirect3DDevice9Ex_GetDirect3D(p,a)                              (p)->GetDirect3D(a)
+#define IDirect3DDevice9Ex_GetDeviceCaps(p,a)                            (p)->GetDeviceCaps(a)
+#define IDirect3DDevice9Ex_GetDisplayMode(p,a,b)                         (p)->GetDisplayMode(a,b)
+#define IDirect3DDevice9Ex_GetCreationParameters(p,a)                    (p)->GetCreationParameters(a)
+#define IDirect3DDevice9Ex_SetCursorProperties(p,a,b,c)                  (p)->SetCursorProperties(a,b,c)
+#define IDirect3DDevice9Ex_SetCursorPosition(p,a,b,c)                    (p)->SetCursorPosition(a,b,c)
+#define IDirect3DDevice9Ex_ShowCursor(p,a)                               (p)->ShowCursor(a)
+#define IDirect3DDevice9Ex_CreateAdditionalSwapChain(p,a,b)              (p)->CreateAdditionalSwapChain(a,b)
+#define IDirect3DDevice9Ex_GetSwapChain(p,a,b)                           (p)->GetSwapChain(a,b)
+#define IDirect3DDevice9Ex_GetNumberOfSwapChains(p)                      (p)->GetNumberOfSwapChains()
+#define IDirect3DDevice9Ex_Reset(p,a)                                    (p)->Reset(a)
+#define IDirect3DDevice9Ex_Present(p,a,b,c,d)                            (p)->Present(a,b,c,d)
+#define IDirect3DDevice9Ex_GetBackBuffer(p,a,b,c,d)                      (p)->GetBackBuffer(a,b,c,d)
+#define IDirect3DDevice9Ex_GetRasterStatus(p,a,b)                        (p)->GetRasterStatus(a,b)
+#define IDirect3DDevice9Ex_SetDialogBoxMode(p,a)                         (p)->SetDialogBoxMode(a)
+#define IDirect3DDevice9Ex_SetGammaRamp(p,a,b,c)                         (p)->SetGammaRamp(a,b,c)
+#define IDirect3DDevice9Ex_GetGammaRamp(p,a,b)                           (p)->GetGammaRamp(a,b)
+#define IDirect3DDevice9Ex_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->CreateTexture(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9Ex_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->CreateCubeTexture(a,b,c,d,e,f,g)
+#define IDirect3DDevice9Ex_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->CreateVertexBuffer(a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->CreateIndexBuffer(a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->CreateRenderTarget(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->CreateDepthStencilSurface(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_UpdateSurface(p,a,b,c,d)                      (p)->UpdateSurface(a,b,c,d)
+#define IDirect3DDevice9Ex_UpdateTexture(p,a,b)                          (p)->UpdateTexture(a,b)
+#define IDirect3DDevice9Ex_GetRenderTargetData(p,a,b)                    (p)->GetRenderTargetData(a,b)
+#define IDirect3DDevice9Ex_GetFrontBufferData(p,a,b)                     (p)->GetFrontBufferData(a,b)
+#define IDirect3DDevice9Ex_StretchRect(p,a,b,c,d,e)                      (p)->StretchRect(a,b,c,d,e)
+#define IDirect3DDevice9Ex_ColorFill(p,a,b,c)                            (p)->ColorFill(a,b,c)
+#define IDirect3DDevice9Ex_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->CreateOffscreenPlainSurface(a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_SetRenderTarget(p,a,b)                        (p)->SetRenderTarget(a,b)
+#define IDirect3DDevice9Ex_GetRenderTarget(p,a,b)                        (p)->GetRenderTarget(a,b)
+#define IDirect3DDevice9Ex_SetDepthStencilSurface(p,a)                   (p)->SetDepthStencilSurface(a)
+#define IDirect3DDevice9Ex_GetDepthStencilSurface(p,a)                   (p)->GetDepthStencilSurface(a)
+#define IDirect3DDevice9Ex_BeginScene(p)                                 (p)->BeginScene()
+#define IDirect3DDevice9Ex_EndScene(p)                                   (p)->EndScene()
+#define IDirect3DDevice9Ex_Clear(p,a,b,c,d,e,f)                          (p)->Clear(a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_SetTransform(p,a,b)                           (p)->SetTransform(a,b)
+#define IDirect3DDevice9Ex_GetTransform(p,a,b)                           (p)->GetTransform(a,b)
+#define IDirect3DDevice9Ex_MultiplyTransform(p,a,b)                      (p)->MultiplyTransform(a,b)
+#define IDirect3DDevice9Ex_SetViewport(p,a)                              (p)->SetViewport(a)
+#define IDirect3DDevice9Ex_GetViewport(p,a)                              (p)->GetViewport(a)
+#define IDirect3DDevice9Ex_SetMaterial(p,a)                              (p)->SetMaterial(a)
+#define IDirect3DDevice9Ex_GetMaterial(p,a)                              (p)->GetMaterial(a)
+#define IDirect3DDevice9Ex_SetLight(p,a,b)                               (p)->SetLight(a,b)
+#define IDirect3DDevice9Ex_GetLight(p,a,b)                               (p)->GetLight(a,b)
+#define IDirect3DDevice9Ex_LightEnable(p,a,b)                            (p)->LightEnable(a,b)
+#define IDirect3DDevice9Ex_GetLightEnable(p,a,b)                         (p)->GetLightEnable(a,b)
+#define IDirect3DDevice9Ex_SetClipPlane(p,a,b)                           (p)->SetClipPlane(a,b)
+#define IDirect3DDevice9Ex_GetClipPlane(p,a,b)                           (p)->GetClipPlane(a,b)
+#define IDirect3DDevice9Ex_SetRenderState(p,a,b)                         (p)->SetRenderState(a,b)
+#define IDirect3DDevice9Ex_GetRenderState(p,a,b)                         (p)->GetRenderState(a,b)
+#define IDirect3DDevice9Ex_CreateStateBlock(p,a,b)                       (p)->CreateStateBlock(a,b)
+#define IDirect3DDevice9Ex_BeginStateBlock(p)                            (p)->BeginStateBlock()
+#define IDirect3DDevice9Ex_EndStateBlock(p,a)                            (p)->EndStateBlock(a)
+#define IDirect3DDevice9Ex_SetClipStatus(p,a)                            (p)->SetClipStatus(a)
+#define IDirect3DDevice9Ex_GetClipStatus(p,a)                            (p)->GetClipStatus(a)
+#define IDirect3DDevice9Ex_GetTexture(p,a,b)                             (p)->GetTexture(a,b)
+#define IDirect3DDevice9Ex_SetTexture(p,a,b)                             (p)->SetTexture(a,b)
+#define IDirect3DDevice9Ex_GetTextureStageState(p,a,b,c)                 (p)->GetTextureStageState(a,b,c)
+#define IDirect3DDevice9Ex_SetTextureStageState(p,a,b,c)                 (p)->SetTextureStageState(a,b,c)
+#define IDirect3DDevice9Ex_GetSamplerState(p,a,b,c)                      (p)->GetSamplerState(a,b,c)
+#define IDirect3DDevice9Ex_SetSamplerState(p,a,b,c)                      (p)->SetSamplerState(a,b,c)
+#define IDirect3DDevice9Ex_ValidateDevice(p,a)                           (p)->ValidateDevice(a)
+#define IDirect3DDevice9Ex_SetPaletteEntries(p,a,b)                      (p)->SetPaletteEntries(a,b)
+#define IDirect3DDevice9Ex_GetPaletteEntries(p,a,b)                      (p)->GetPaletteEntries(a,b)
+#define IDirect3DDevice9Ex_SetCurrentTexturePalette(p,a)                 (p)->SetCurrentTexturePalette(a)
+#define IDirect3DDevice9Ex_GetCurrentTexturePalette(p,a)                 (p)->GetCurrentTexturePalette(a)
+#define IDirect3DDevice9Ex_SetScissorRect(p,a)                           (p)->SetScissorRect(a)
+#define IDirect3DDevice9Ex_GetScissorRect(p,a)                           (p)->GetScissorRect(a)
+#define IDirect3DDevice9Ex_SetSoftwareVertexProcessing(p,a)              (p)->SetSoftwareVertexProcessing(a)
+#define IDirect3DDevice9Ex_GetSoftwareVertexProcessing(p)                (p)->GetSoftwareVertexProcessing()
+#define IDirect3DDevice9Ex_SetNPatchMode(p,a)                            (p)->SetNPatchMode(a)
+#define IDirect3DDevice9Ex_GetNPatchMode(p)                              (p)->GetNPatchMode()
+#define IDirect3DDevice9Ex_DrawPrimitive(p,a,b,c)                        (p)->DrawPrimitive(a,b,c)
+#define IDirect3DDevice9Ex_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->DrawIndexedPrimitive(a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_DrawPrimitiveUP(p,a,b,c,d)                    (p)->DrawPrimitiveUP(a,b,c,d)
+#define IDirect3DDevice9Ex_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_ProcessVertices(p,a,b,c,d,e,f)                (p)->ProcessVertices(a,b,c,d,e,f)
+#define IDirect3DDevice9Ex_CreateVertexDeclaration(p,a,b)                (p)->CreateVertexDeclaration(a,b)
+#define IDirect3DDevice9Ex_SetVertexDeclaration(p,a)                     (p)->SetVertexDeclaration(a)
+#define IDirect3DDevice9Ex_GetVertexDeclaration(p,a)                     (p)->GetVertexDeclaration(a)
+#define IDirect3DDevice9Ex_SetFVF(p,a)                                   (p)->SetFVF(a)
+#define IDirect3DDevice9Ex_GetFVF(p,a)                                   (p)->GetFVF(a)
+#define IDirect3DDevice9Ex_CreateVertexShader(p,a,b)                     (p)->CreateVertexShader(a,b)
+#define IDirect3DDevice9Ex_SetVertexShader(p,a)                          (p)->SetVertexShader(a)
+#define IDirect3DDevice9Ex_GetVertexShader(p,a)                          (p)->GetVertexShader(a)
+#define IDirect3DDevice9Ex_SetVertexShaderConstantF(p,a,b,c)             (p)->SetVertexShaderConstantF(a,b,c)
+#define IDirect3DDevice9Ex_GetVertexShaderConstantF(p,a,b,c)             (p)->GetVertexShaderConstantF(a,b,c)
+#define IDirect3DDevice9Ex_SetVertexShaderConstantI(p,a,b,c)             (p)->SetVertexShaderConstantI(a,b,c)
+#define IDirect3DDevice9Ex_GetVertexShaderConstantI(p,a,b,c)             (p)->GetVertexShaderConstantI(a,b,c)
+#define IDirect3DDevice9Ex_SetVertexShaderConstantB(p,a,b,c)             (p)->SetVertexShaderConstantB(a,b,c)
+#define IDirect3DDevice9Ex_GetVertexShaderConstantB(p,a,b,c)             (p)->GetVertexShaderConstantB(a,b,c)
+#define IDirect3DDevice9Ex_SetStreamSource(p,a,b,c,d)                    (p)->SetStreamSource(a,b,c,d)
+#define IDirect3DDevice9Ex_GetStreamSource(p,a,b,c,d)                    (p)->GetStreamSource(a,b,c,d)
+#define IDirect3DDevice9Ex_SetStreamSourceFreq(p,a,b)                    (p)->SetStreamSourceFreq(a,b)
+#define IDirect3DDevice9Ex_GetStreamSourceFreq(p,a,b)                    (p)->GetStreamSourceFreq(a,b)
+#define IDirect3DDevice9Ex_SetIndices(p,a)                               (p)->SetIndices(a)
+#define IDirect3DDevice9Ex_GetIndices(p,a)                               (p)->GetIndices(a)
+#define IDirect3DDevice9Ex_CreatePixelShader(p,a,b)                      (p)->CreatePixelShader(a,b)
+#define IDirect3DDevice9Ex_SetPixelShader(p,a)                           (p)->SetPixelShader(a)
+#define IDirect3DDevice9Ex_GetPixelShader(p,a)                           (p)->GetPixelShader(a)
+#define IDirect3DDevice9Ex_SetPixelShaderConstantF(p,a,b,c)              (p)->SetPixelShaderConstantF(a,b,c)
+#define IDirect3DDevice9Ex_GetPixelShaderConstantF(p,a,b,c)              (p)->GetPixelShaderConstantF(a,b,c)
+#define IDirect3DDevice9Ex_SetPixelShaderConstantI(p,a,b,c)              (p)->SetPixelShaderConstantI(a,b,c)
+#define IDirect3DDevice9Ex_GetPixelShaderConstantI(p,a,b,c)              (p)->GetPixelShaderConstantI(a,b,c)
+#define IDirect3DDevice9Ex_SetPixelShaderConstantB(p,a,b,c)              (p)->SetPixelShaderConstantB(a,b,c)
+#define IDirect3DDevice9Ex_GetPixelShaderConstantB(p,a,b,c)              (p)->GetPixelShaderConstantB(a,b,c)
+#define IDirect3DDevice9Ex_DrawRectPatch(p,a,b,c)                        (p)->DrawRectPatch(a,b,c)
+#define IDirect3DDevice9Ex_DrawTriPatch(p,a,b,c)                         (p)->DrawTriPatch(a,b,c)
+#define IDirect3DDevice9Ex_DeletePatch(p,a)                              (p)->DeletePatch(a)
+#define IDirect3DDevice9Ex_CreateQuery(p,a,b)                            (p)->CreateQuery(a,b)
+/* IDirect3DDevice9Ex */
+#define IDirect3DDevice9Ex_SetConvolutionMonoKernel(p,a,b,c,d)           (p)->SetConvolutionMonoKernel(a,b,c,d)
+#define IDirect3DDevice9Ex_ComposeRects(p,a,b,c,d,e,f,g,h)               (p)->ComposeRects(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9Ex_PresentEx(p,a,b,c,d,e)                        (p)->PresentEx(a,b,c,d,e)
+#define IDirect3DDevice9Ex_GetGPUThreadPriority(p,a)                     (p)->GetGPUThreadPriority(a)
+#define IDirect3DDevice9Ex_SetGPUThreadPriority(p,a)                     (p)->SetGPUThreadPriority(a)
+#define IDirect3DDevice9Ex_WaitForVBlank(p,a)                            (p)->WaitForVBlank(a)
+#define IDirect3DDevice9Ex_CheckResourceResidency(p,a,b)                 (p)->CheckResourceResidency(a,b)
+#define IDirect3DDevice9Ex_SetMaximumFrameLatency(p,a)                   (p)->SetMaximumFrameLatency(a)
+#define IDirect3DDevice9Ex_GetMaximumFrameLatency(p,a)                   (p)->GetMaximumFrameLatency(a)
+#define IDirect3DDevice9Ex_CheckDeviceState(p,a)                         (p)->CheckDeviceState(a)
+#define IDirect3DDevice9Ex_CreateRenderTargetEx(p,a,b,c,d,e,f,g,h,i)     (p)->CreateRenderTargetEx(a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9Ex_CreateOffscreenPlainSurfaceEx(p,a,b,c,d,e,f,g)(p)->CreateOffscreenPlainSurfaceEx(a,b,c,d,e,f,g)
+#define IDirect3DDevice9Ex_CreateDepthStencilSurfaceEx(p,a,b,c,d,e,f,g,h,i)(p)->CreateDepthStencilSurfaceEx(a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9Ex_ResetEx(p,a,b)                                (p)->ResetEx(a,b)
+#define IDirect3DDevice9Ex_GetDisplayModeEx(p,a,b,c)                     (p)->GetDisplayModeEx(a,b,c)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif  /* defined(__cplusplus) */
+
+int         WINAPI D3DPERF_BeginEvent(D3DCOLOR,LPCWSTR);
+int         WINAPI D3DPERF_EndEvent(void);
+DWORD       WINAPI D3DPERF_GetStatus(void);
+BOOL        WINAPI D3DPERF_QueryRepeatFrame(void);
+void        WINAPI D3DPERF_SetMarker(D3DCOLOR,LPCWSTR);
+void        WINAPI D3DPERF_SetOptions(DWORD);
+void        WINAPI D3DPERF_SetRegion(D3DCOLOR,LPCWSTR);
+
+/* Define the main entrypoint as well */
+IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+
+#endif /* __WINE_D3D9_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/debug.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/debug.h	(revision 35052)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/debug.h	(revision 35052)
@@ -0,0 +1,302 @@
+/*
+ * Wine debugging interface
+ *
+ * Copyright 1999 Patrik Stridvall
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef __WINE_WINE_DEBUG_H
+#define __WINE_WINE_DEBUG_H
+
+#include <stdarg.h>
+#include <windef.h>
+#ifndef GUID_DEFINED
+#include <guiddef.h>
+#endif
+
+#ifdef __WINE_WINE_TEST_H
+#error This file should not be used in Wine tests
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct _GUID;
+
+#ifdef inline
+#undef inline
+#endif
+#define inline __inline
+
+/*
+ * Internal definitions (do not use these directly)
+ */
+
+enum __wine_debug_class
+{
+    __WINE_DBCL_FIXME,
+    __WINE_DBCL_ERR,
+    __WINE_DBCL_WARN,
+    __WINE_DBCL_TRACE,
+
+    __WINE_DBCL_INIT = 7  /* lazy init flag */
+};
+
+struct __wine_debug_channel
+{
+    unsigned char flags;
+    char name[15];
+};
+
+#ifndef WINE_NO_TRACE_MSGS
+# define __WINE_GET_DEBUGGING_TRACE(dbch) ((dbch)->flags & (1 << __WINE_DBCL_TRACE))
+#else
+# define __WINE_GET_DEBUGGING_TRACE(dbch) 0
+#endif
+
+#ifndef WINE_NO_DEBUG_MSGS
+# define __WINE_GET_DEBUGGING_WARN(dbch)  ((dbch)->flags & (1 << __WINE_DBCL_WARN))
+# define __WINE_GET_DEBUGGING_FIXME(dbch) ((dbch)->flags & (1 << __WINE_DBCL_FIXME))
+#else
+# define __WINE_GET_DEBUGGING_WARN(dbch)  0
+# define __WINE_GET_DEBUGGING_FIXME(dbch) 0
+#endif
+
+/* define error macro regardless of what is configured */
+#define __WINE_GET_DEBUGGING_ERR(dbch)  ((dbch)->flags & (1 << __WINE_DBCL_ERR))
+
+#define __WINE_GET_DEBUGGING(dbcl,dbch)  __WINE_GET_DEBUGGING##dbcl(dbch)
+
+#define __WINE_IS_DEBUG_ON(dbcl,dbch) \
+  (__WINE_GET_DEBUGGING##dbcl(dbch) && (__wine_dbg_get_channel_flags(dbch) & (1 << __WINE_DBCL##dbcl)))
+
+#ifdef __GNUC__
+
+#define __WINE_DPRINTF(dbcl,dbch) \
+  do { if(__WINE_GET_DEBUGGING(dbcl,(dbch))) { \
+       struct __wine_debug_channel * const __dbch = (dbch); \
+       const enum __wine_debug_class __dbcl = __WINE_DBCL##dbcl; \
+       __WINE_DBG_LOG
+
+#define __WINE_DBG_LOG(args...) \
+    wine_dbg_log( __dbcl, __dbch, __FUNCTION__, args); } } while(0)
+
+#define __WINE_PRINTF_ATTR(fmt,args) __attribute__((format (printf,fmt,args)))
+
+
+#ifdef WINE_NO_TRACE_MSGS
+#define WINE_TRACE(args...) do { } while(0)
+#define WINE_TRACE_(ch) WINE_TRACE
+#endif
+
+#ifdef WINE_NO_DEBUG_MSGS
+#define WINE_WARN(args...) do { } while(0)
+#define WINE_WARN_(ch) WINE_WARN
+#define WINE_FIXME(args...) do { } while(0)
+#define WINE_FIXME_(ch) WINE_FIXME
+#endif
+
+#elif defined(__SUNPRO_C)
+
+#define __WINE_DPRINTF(dbcl,dbch) \
+  do { if(__WINE_GET_DEBUGGING(dbcl,(dbch))) { \
+       struct __wine_debug_channel * const __dbch = (dbch); \
+       const enum __WINE_DEBUG_CLASS __dbcl = __WINE_DBCL##dbcl; \
+       __WINE_DBG_LOG
+
+#define __WINE_DBG_LOG(...) \
+   wine_dbg_log( __dbcl, __dbch, __func__, __VA_ARGS__); } } while(0)
+
+#define __WINE_PRINTF_ATTR(fmt,args)
+
+#ifdef WINE_NO_TRACE_MSGS
+#define WINE_TRACE(...) do { } while(0)
+#define WINE_TRACE_(ch) WINE_TRACE
+#endif
+
+#ifdef WINE_NO_DEBUG_MSGS
+#define WINE_WARN(...) do { } while(0)
+#define WINE_WARN_(ch) WINE_WARN
+#define WINE_FIXME(...) do { } while(0)
+#define WINE_FIXME_(ch) WINE_FIXME
+#endif
+
+#else  /* !__GNUC__ && !__SUNPRO_C */
+
+#define __WINE_DPRINTF(dbcl,dbch) \
+    (!__WINE_GET_DEBUGGING(dbcl,(dbch)) || \
+     (wine_dbg_log(__WINE_DBCL##dbcl,(dbch),__FILE__,"%d: ",__LINE__) == -1)) ? \
+     (void)0 : (void)wine_dbg_printf
+
+#define __WINE_PRINTF_ATTR(fmt, args)
+
+#endif  /* !__GNUC__ && !__SUNPRO_C */
+
+struct __wine_debug_functions
+{
+    char * (*get_temp_buffer)( size_t n );
+    void   (*release_temp_buffer)( char *buffer, size_t n );
+    const char * (*dbgstr_an)( const char * s, int n );
+    const char * (*dbgstr_wn)( const WCHAR *s, int n );
+    int (*dbg_vprintf)( const char *format, va_list args );
+    int (*dbg_vlog)( enum __wine_debug_class cls, struct __wine_debug_channel *channel,
+                     const char *function, const char *format, va_list args );
+};
+
+extern unsigned char __wine_dbg_get_channel_flags( struct __wine_debug_channel *channel );
+extern int __wine_dbg_set_channel_flags( struct __wine_debug_channel *channel,
+                                         unsigned char set, unsigned char clear );
+extern void __wine_dbg_set_functions( const struct __wine_debug_functions *new_funcs,
+                                      struct __wine_debug_functions *old_funcs, size_t size );
+
+/*
+ * Exported definitions and macros
+ */
+
+/* These functions return a printable version of a string, including
+   quotes.  The string will be valid for some time, but not indefinitely
+   as strings are re-used.  */
+extern const char *wine_dbgstr_an( const char * s, int n );
+extern const char *wine_dbgstr_wn( const WCHAR *s, int n );
+extern const char *wine_dbg_sprintf( const char *format, ... ) __WINE_PRINTF_ATTR(1,2);
+
+extern int wine_dbg_printf( const char *format, ... ) __WINE_PRINTF_ATTR(1,2);
+extern int wine_dbg_log( enum __wine_debug_class cls, struct __wine_debug_channel *ch, const char *func,
+                         const char *format, ... ) __WINE_PRINTF_ATTR(4,5);
+
+static inline const char *wine_dbgstr_a( const char *s )
+{
+    return wine_dbgstr_an( s, -1 );
+}
+
+static inline const char *wine_dbgstr_w( const WCHAR *s )
+{
+    return wine_dbgstr_wn( s, -1 );
+}
+
+static inline const char *wine_dbgstr_guid( const GUID *id )
+{
+    if (!id) return "(null)";
+    if (!((ULONG_PTR)id >> 16)) return wine_dbg_sprintf( "<guid-0x%04hx>", (WORD)(ULONG_PTR)id );
+    return wine_dbg_sprintf( "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
+                             id->Data1, id->Data2, id->Data3,
+                             id->Data4[0], id->Data4[1], id->Data4[2], id->Data4[3],
+                             id->Data4[4], id->Data4[5], id->Data4[6], id->Data4[7] );
+}
+
+static inline const char *wine_dbgstr_point( const POINT *pt )
+{
+    if (!pt) return "(null)";
+    return wine_dbg_sprintf( "(%d,%d)", pt->x, pt->y );
+}
+
+static inline const char *wine_dbgstr_size( const SIZE *size )
+{
+    if (!size) return "(null)";
+    return wine_dbg_sprintf( "(%d,%d)", size->cx, size->cy );
+}
+
+static inline const char *wine_dbgstr_rect( const RECT *rect )
+{
+    if (!rect) return "(null)";
+    return wine_dbg_sprintf( "(%d,%d)-(%d,%d)", rect->left, rect->top,
+                             rect->right, rect->bottom );
+}
+
+static inline const char *wine_dbgstr_longlong( ULONGLONG ll )
+{
+    if (sizeof(ll) > sizeof(unsigned long) && ll >> 32)
+        return wine_dbg_sprintf( "%lx%08lx", (unsigned long)(ll >> 32), (unsigned long)ll );
+    else return wine_dbg_sprintf( "%lx", (unsigned long)ll );
+}
+
+#ifndef WINE_TRACE
+#define WINE_TRACE                 __WINE_DPRINTF(_TRACE,__wine_dbch___default)
+#define WINE_TRACE_(ch)            __WINE_DPRINTF(_TRACE,&__wine_dbch_##ch)
+#endif
+#define WINE_TRACE_ON(ch)          __WINE_IS_DEBUG_ON(_TRACE,&__wine_dbch_##ch)
+
+#ifndef WINE_WARN
+#define WINE_WARN                  __WINE_DPRINTF(_WARN,__wine_dbch___default)
+#define WINE_WARN_(ch)             __WINE_DPRINTF(_WARN,&__wine_dbch_##ch)
+#endif
+#define WINE_WARN_ON(ch)           __WINE_IS_DEBUG_ON(_WARN,&__wine_dbch_##ch)
+
+#ifndef WINE_FIXME
+#define WINE_FIXME                 __WINE_DPRINTF(_FIXME,__wine_dbch___default)
+#define WINE_FIXME_(ch)            __WINE_DPRINTF(_FIXME,&__wine_dbch_##ch)
+#endif
+#define WINE_FIXME_ON(ch)          __WINE_IS_DEBUG_ON(_FIXME,&__wine_dbch_##ch)
+
+#define WINE_ERR                   __WINE_DPRINTF(_ERR,__wine_dbch___default)
+#define WINE_ERR_(ch)              __WINE_DPRINTF(_ERR,&__wine_dbch_##ch)
+#define WINE_ERR_ON(ch)            __WINE_IS_DEBUG_ON(_ERR,&__wine_dbch_##ch)
+
+#define WINE_DECLARE_DEBUG_CHANNEL(ch) \
+    static struct __wine_debug_channel __wine_dbch_##ch = { ~0, #ch }
+#define WINE_DEFAULT_DEBUG_CHANNEL(ch) \
+    static struct __wine_debug_channel __wine_dbch_##ch = { ~0, #ch }; \
+    static struct __wine_debug_channel * const __wine_dbch___default = &__wine_dbch_##ch
+
+#define WINE_DPRINTF               wine_dbg_printf
+#define WINE_MESSAGE               wine_dbg_printf
+
+#ifdef __WINESRC__
+/* Wine uses shorter names that are very likely to conflict with other software */
+
+static inline const char *debugstr_an( const char * s, int n ) { return wine_dbgstr_an( s, n ); }
+static inline const char *debugstr_wn( const WCHAR *s, int n ) { return wine_dbgstr_wn( s, n ); }
+static inline const char *debugstr_guid( const struct _GUID *id ) { return wine_dbgstr_guid(id); }
+static inline const char *debugstr_a( const char *s )  { return wine_dbgstr_an( s, -1 ); }
+static inline const char *debugstr_w( const WCHAR *s ) { return wine_dbgstr_wn( s, -1 ); }
+
+#define TRACE                      WINE_TRACE
+#define TRACE_(ch)                 WINE_TRACE_(ch)
+#define TRACE_ON(ch)               WINE_TRACE_ON(ch)
+
+#define WARN                       WINE_WARN
+#define WARN_(ch)                  WINE_WARN_(ch)
+#define WARN_ON(ch)                WINE_WARN_ON(ch)
+
+#define FIXME                      WINE_FIXME
+#define FIXME_(ch)                 WINE_FIXME_(ch)
+#define FIXME_ON(ch)               WINE_FIXME_ON(ch)
+
+#undef ERR  /* Solaris got an 'ERR' define in <sys/reg.h> */
+#define ERR                        WINE_ERR
+#define ERR_(ch)                   WINE_ERR_(ch)
+#define ERR_ON(ch)                 WINE_ERR_ON(ch)
+
+#define DPRINTF                    WINE_DPRINTF
+#define MESSAGE                    WINE_MESSAGE
+
+#endif /* __WINESRC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_WINE_DEBUG_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/list.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/list.h	(revision 35052)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/list.h	(revision 35052)
@@ -0,0 +1,246 @@
+/*
+ * Linked lists support
+ *
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef __WINE_SERVER_LIST_H
+#define __WINE_SERVER_LIST_H
+
+#ifdef inline
+#undef inline
+#endif
+#define inline __inline
+
+struct list
+{
+    struct list *next;
+    struct list *prev;
+};
+
+/* Define a list like so:
+ *
+ *   struct gadget
+ *   {
+ *       struct list  entry;   <-- doesn't have to be the first item in the struct
+ *       int          a, b;
+ *   };
+ *
+ *   static struct list global_gadgets = LIST_INIT( global_gadgets );
+ *
+ * or
+ *
+ *   struct some_global_thing
+ *   {
+ *       struct list gadgets;
+ *   };
+ *
+ *   list_init( &some_global_thing->gadgets );
+ *
+ * Manipulate it like this:
+ *
+ *   list_add_head( &global_gadgets, &new_gadget->entry );
+ *   list_remove( &new_gadget->entry );
+ *   list_add_after( &some_random_gadget->entry, &new_gadget->entry );
+ *
+ * And to iterate over it:
+ *
+ *   struct gadget *gadget;
+ *   LIST_FOR_EACH_ENTRY( gadget, &global_gadgets, struct gadget, entry )
+ *   {
+ *       ...
+ *   }
+ *
+ */
+
+/* add an element after the specified one */
+static inline void list_add_after( struct list *elem, struct list *to_add )
+{
+    to_add->next = elem->next;
+    to_add->prev = elem;
+    elem->next->prev = to_add;
+    elem->next = to_add;
+}
+
+/* add an element before the specified one */
+static inline void list_add_before( struct list *elem, struct list *to_add )
+{
+    to_add->next = elem;
+    to_add->prev = elem->prev;
+    elem->prev->next = to_add;
+    elem->prev = to_add;
+}
+
+/* add element at the head of the list */
+static inline void list_add_head( struct list *list, struct list *elem )
+{
+    list_add_after( list, elem );
+}
+
+/* add element at the tail of the list */
+static inline void list_add_tail( struct list *list, struct list *elem )
+{
+    list_add_before( list, elem );
+}
+
+/* remove an element from its list */
+static inline void list_remove( struct list *elem )
+{
+    elem->next->prev = elem->prev;
+    elem->prev->next = elem->next;
+}
+
+/* get the next element */
+static inline struct list *list_next( const struct list *list, const struct list *elem )
+{
+    struct list *ret = elem->next;
+    if (elem->next == list) ret = NULL;
+    return ret;
+}
+
+/* get the previous element */
+static inline struct list *list_prev( const struct list *list, const struct list *elem )
+{
+    struct list *ret = elem->prev;
+    if (elem->prev == list) ret = NULL;
+    return ret;
+}
+
+/* get the first element */
+static inline struct list *list_head( const struct list *list )
+{
+    return list_next( list, list );
+}
+
+/* get the last element */
+static inline struct list *list_tail( const struct list *list )
+{
+    return list_prev( list, list );
+}
+
+/* check if a list is empty */
+static inline int list_empty( const struct list *list )
+{
+    return list->next == list;
+}
+
+/* initialize a list */
+static inline void list_init( struct list *list )
+{
+    list->next = list->prev = list;
+}
+
+/* count the elements of a list */
+static inline unsigned int list_count( const struct list *list )
+{
+    unsigned count = 0;
+    const struct list *ptr;
+    for (ptr = list->next; ptr != list; ptr = ptr->next) count++;
+    return count;
+}
+
+/* move all elements from src to the tail of dst */
+static inline void list_move_tail( struct list *dst, struct list *src )
+{
+    if (list_empty(src)) return;
+
+    dst->prev->next = src->next;
+    src->next->prev = dst->prev;
+    dst->prev = src->prev;
+    src->prev->next = dst;
+    list_init(src);
+}
+
+/* move all elements from src to the head of dst */
+static inline void list_move_head( struct list *dst, struct list *src )
+{
+    if (list_empty(src)) return;
+
+    dst->next->prev = src->prev;
+    src->prev->next = dst->next;
+    dst->next = src->next;
+    src->next->prev = dst;
+    list_init(src);
+}
+
+/* iterate through the list */
+#define LIST_FOR_EACH(cursor,list) \
+    for ((cursor) = (list)->next; (cursor) != (list); (cursor) = (cursor)->next)
+
+/* iterate through the list, with safety against removal */
+#define LIST_FOR_EACH_SAFE(cursor, cursor2, list) \
+    for ((cursor) = (list)->next, (cursor2) = (cursor)->next; \
+         (cursor) != (list); \
+         (cursor) = (cursor2), (cursor2) = (cursor)->next)
+
+/* iterate through the list using a list entry */
+#define LIST_FOR_EACH_ENTRY(elem, list, type, field) \
+    for ((elem) = LIST_ENTRY((list)->next, type, field); \
+         &(elem)->field != (list); \
+         (elem) = LIST_ENTRY((elem)->field.next, type, field))
+
+/* iterate through the list using a list entry, with safety against removal */
+#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field) \
+    for ((cursor) = LIST_ENTRY((list)->next, type, field), \
+         (cursor2) = LIST_ENTRY((cursor)->field.next, type, field); \
+         &(cursor)->field != (list); \
+         (cursor) = (cursor2), \
+         (cursor2) = LIST_ENTRY((cursor)->field.next, type, field))
+
+/* iterate through the list in reverse order */
+#define LIST_FOR_EACH_REV(cursor,list) \
+    for ((cursor) = (list)->prev; (cursor) != (list); (cursor) = (cursor)->prev)
+
+/* iterate through the list in reverse order, with safety against removal */
+#define LIST_FOR_EACH_SAFE_REV(cursor, cursor2, list) \
+    for ((cursor) = (list)->prev, (cursor2) = (cursor)->prev; \
+         (cursor) != (list); \
+         (cursor) = (cursor2), (cursor2) = (cursor)->prev)
+
+/* iterate through the list in reverse order using a list entry */
+#define LIST_FOR_EACH_ENTRY_REV(elem, list, type, field) \
+    for ((elem) = LIST_ENTRY((list)->prev, type, field); \
+         &(elem)->field != (list); \
+         (elem) = LIST_ENTRY((elem)->field.prev, type, field))
+
+/* iterate through the list in reverse order using a list entry, with safety against removal */
+#define LIST_FOR_EACH_ENTRY_SAFE_REV(cursor, cursor2, list, type, field) \
+    for ((cursor) = LIST_ENTRY((list)->prev, type, field), \
+         (cursor2) = LIST_ENTRY((cursor)->field.prev, type, field); \
+         &(cursor)->field != (list); \
+         (cursor) = (cursor2), \
+         (cursor2) = LIST_ENTRY((cursor)->field.prev, type, field))
+
+/* macros for statically initialized lists */
+#undef LIST_INIT
+#define LIST_INIT(list)  { &(list), &(list) }
+
+/* get pointer to object containing list element */
+#undef LIST_ENTRY
+#define LIST_ENTRY(elem, type, field) \
+    ((type *)((char *)(elem) - (unsigned long)(&((type *)0)->field)))
+
+#endif  /* __WINE_SERVER_LIST_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/port.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/port.h	(revision 35052)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/port.h	(revision 35052)
@@ -0,0 +1,489 @@
+/*
+ * Wine porting definitions
+ *
+ * Copyright 1996 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef __WINE_WINE_PORT_H
+#define __WINE_WINE_PORT_H
+
+#ifndef __WINE_CONFIG_H
+# error You must include config.h to use this header
+#endif
+
+#ifdef __WINE_BASETSD_H
+# error You must include port.h before all other headers
+#endif
+
+#define _GNU_SOURCE  /* for pread/pwrite */
+#include <fcntl.h>
+#include <math.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef HAVE_DIRECT_H
+# include <direct.h>
+#endif
+#ifdef HAVE_IO_H
+# include <io.h>
+#endif
+#ifdef HAVE_PROCESS_H
+# include <process.h>
+#endif
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+/* Can't use windef.h here, cause it'd cause problems with NONAMELESSUNION/STRUCT later */
+#ifndef inline
+#define inline
+#endif
+
+/****************************************************************
+ * Type definitions
+ */
+
+#if !defined(_MSC_VER) && !defined(__int64)
+#  if defined(__x86_64__) || defined(_WIN64)
+#    define __int64 long
+#  else
+#    define __int64 long long
+#  endif
+#endif
+
+#ifndef HAVE_MODE_T
+typedef int mode_t;
+#endif
+#ifndef HAVE_OFF_T
+typedef long off_t;
+#endif
+#ifndef HAVE_PID_T
+typedef int pid_t;
+#endif
+#ifndef HAVE_SIZE_T
+typedef unsigned int size_t;
+#endif
+#ifndef HAVE_SSIZE_T
+typedef int ssize_t;
+#endif
+#ifndef HAVE_FSBLKCNT_T
+typedef unsigned long fsblkcnt_t;
+#endif
+#ifndef HAVE_FSFILCNT_T
+typedef unsigned long fsfilcnt_t;
+#endif
+
+#ifndef HAVE_STRUCT_STATVFS_F_BLOCKS
+struct statvfs
+{
+    unsigned long f_bsize;
+    unsigned long f_frsize;
+    fsblkcnt_t    f_blocks;
+    fsblkcnt_t    f_bfree;
+    fsblkcnt_t    f_bavail;
+    fsfilcnt_t    f_files;
+    fsfilcnt_t    f_ffree;
+    fsfilcnt_t    f_favail;
+    unsigned long f_fsid;
+    unsigned long f_flag;
+    unsigned long f_namemax;
+};
+#endif /* HAVE_STRUCT_STATVFS_F_BLOCKS */
+
+
+/****************************************************************
+ * Macro definitions
+ */
+
+#ifdef HAVE_DLFCN_H
+#include <dlfcn.h>
+#else
+#define RTLD_LAZY    0x001
+#define RTLD_NOW     0x002
+#define RTLD_GLOBAL  0x100
+#endif
+
+#ifdef HAVE_ONE_ARG_MKDIR
+#define mkdir(path,mode) mkdir(path)
+#endif
+
+#if !defined(HAVE_FTRUNCATE) && defined(HAVE_CHSIZE)
+#define ftruncate chsize
+#endif
+
+#if !defined(HAVE_POPEN) && defined(HAVE__POPEN)
+#define popen _popen
+#endif
+
+#if !defined(HAVE_PCLOSE) && defined(HAVE__PCLOSE)
+#define pclose _pclose
+#endif
+
+#if !defined(HAVE_STRDUP) && defined(HAVE__STRDUP)
+#define strdup _strdup
+#endif
+
+#if !defined(HAVE_SNPRINTF) && defined(HAVE__SNPRINTF)
+#define snprintf _snprintf
+#endif
+
+#if !defined(HAVE_VSNPRINTF) && defined(HAVE__VSNPRINTF)
+#define vsnprintf _vsnprintf
+#endif
+
+#if !defined(HAVE_STRTOLL) && defined(HAVE__STRTOI64)
+#define strtoll _strtoi64
+#endif
+
+#if !defined(HAVE_STRTOULL) && defined(HAVE__STRTOUI64)
+#define strtoull _strtoui64
+#endif
+
+#ifndef S_ISLNK
+# define S_ISLNK(mod) (0)
+#endif
+
+#ifndef S_ISSOCK
+# define S_ISSOCK(mod) (0)
+#endif
+
+#ifndef S_ISDIR
+# define S_ISDIR(mod) (((mod) & _S_IFMT) == _S_IFDIR)
+#endif
+
+#ifndef S_ISCHR
+# define S_ISCHR(mod) (((mod) & _S_IFMT) == _S_IFCHR)
+#endif
+
+#ifndef S_ISFIFO
+# define S_ISFIFO(mod) (((mod) & _S_IFMT) == _S_IFIFO)
+#endif
+
+#ifndef S_ISREG
+# define S_ISREG(mod) (((mod) & _S_IFMT) == _S_IFREG)
+#endif
+
+/* So we open files in 64 bit access mode on Linux */
+#ifndef O_LARGEFILE
+# define O_LARGEFILE 0
+#endif
+
+#ifndef O_NONBLOCK
+# define O_NONBLOCK 0
+#endif
+
+#ifndef O_BINARY
+# define O_BINARY 0
+#endif
+
+
+/****************************************************************
+ * Constants
+ */
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+#ifndef M_PI_2
+#define M_PI_2 1.570796326794896619
+#endif
+
+
+/****************************************************************
+ * Function definitions (only when using libwine_port)
+ */
+
+#ifndef NO_LIBWINE_PORT
+
+#ifndef HAVE_FSTATVFS
+int fstatvfs( int fd, struct statvfs *buf );
+#endif
+
+#ifndef HAVE_GETOPT_LONG
+extern char *optarg;
+extern int optind;
+extern int opterr;
+extern int optopt;
+struct option;
+
+#ifndef HAVE_STRUCT_OPTION_NAME
+struct option
+{
+    const char *name;
+    int has_arg;
+    int *flag;
+    int val;
+};
+#endif
+
+extern int getopt_long (int ___argc, char *const *___argv,
+                        const char *__shortopts,
+                        const struct option *__longopts, int *__longind);
+extern int getopt_long_only (int ___argc, char *const *___argv,
+                             const char *__shortopts,
+                             const struct option *__longopts, int *__longind);
+#endif  /* HAVE_GETOPT_LONG */
+
+#ifndef HAVE_FFS
+int ffs( int x );
+#endif
+
+#ifndef HAVE_FUTIMES
+struct timeval;
+int futimes(int fd, const struct timeval *tv);
+#endif
+
+#ifndef HAVE_GETPAGESIZE
+size_t getpagesize(void);
+#endif  /* HAVE_GETPAGESIZE */
+
+#ifndef HAVE_GETTID
+pid_t gettid(void);
+#endif /* HAVE_GETTID */
+
+#ifndef HAVE_ISINF
+int isinf(double x);
+#endif
+
+#ifndef HAVE_ISNAN
+int isnan(double x);
+#endif
+
+#ifndef HAVE_LSTAT
+int lstat(const char *file_name, struct stat *buf);
+#endif /* HAVE_LSTAT */
+
+#ifndef HAVE_MEMMOVE
+void *memmove(void *dest, const void *src, size_t len);
+#endif /* !defined(HAVE_MEMMOVE) */
+
+#ifndef HAVE_POLL
+struct pollfd
+{
+    int fd;
+    short events;
+    short revents;
+};
+#define POLLIN   0x01
+#define POLLPRI  0x02
+#define POLLOUT  0x04
+#define POLLERR  0x08
+#define POLLHUP  0x10
+#define POLLNVAL 0x20
+int poll( struct pollfd *fds, unsigned int count, int timeout );
+#endif /* HAVE_POLL */
+
+#ifndef HAVE_PREAD
+ssize_t pread( int fd, void *buf, size_t count, off_t offset );
+#endif /* HAVE_PREAD */
+
+#ifndef HAVE_PWRITE
+ssize_t pwrite( int fd, const void *buf, size_t count, off_t offset );
+#endif /* HAVE_PWRITE */
+
+#ifndef HAVE_READLINK
+int readlink( const char *path, char *buf, size_t size );
+#endif /* HAVE_READLINK */
+
+#ifndef HAVE_STATVFS
+int statvfs( const char *path, struct statvfs *buf );
+#endif
+
+#ifndef HAVE_STRNCASECMP
+# ifndef HAVE__STRNICMP
+int strncasecmp(const char *str1, const char *str2, size_t n);
+# else
+# define strncasecmp _strnicmp
+# endif
+#endif /* !defined(HAVE_STRNCASECMP) */
+
+#ifndef HAVE_STRERROR
+const char *strerror(int err);
+#endif /* !defined(HAVE_STRERROR) */
+
+#ifndef HAVE_STRCASECMP
+# ifndef HAVE__STRICMP
+int strcasecmp(const char *str1, const char *str2);
+# else
+# define strcasecmp _stricmp
+# endif
+#endif /* !defined(HAVE_STRCASECMP) */
+
+#ifndef HAVE_SYMLINK
+int symlink(const char *from, const char *to);
+#endif
+
+#ifndef HAVE_USLEEP
+int usleep (unsigned int useconds);
+#endif /* !defined(HAVE_USLEEP) */
+
+#ifdef __i386__
+static inline void *memcpy_unaligned( void *dst, const void *src, size_t size )
+{
+    return memcpy( dst, src, size );
+}
+#else
+extern void *memcpy_unaligned( void *dst, const void *src, size_t size );
+#endif /* __i386__ */
+
+extern int mkstemps(char *template, int suffix_len);
+
+/* Process creation flags */
+#ifndef _P_WAIT
+# define _P_WAIT    0
+# define _P_NOWAIT  1
+# define _P_OVERLAY 2
+# define _P_NOWAITO 3
+# define _P_DETACH  4
+#endif
+#ifndef HAVE_SPAWNVP
+extern int spawnvp(int mode, const char *cmdname, const char * const argv[]);
+#endif
+
+/* Interlocked functions */
+
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+
+extern inline int interlocked_cmpxchg( int *dest, int xchg, int compare );
+extern inline void *interlocked_cmpxchg_ptr( void **dest, void *xchg, void *compare );
+extern __int64 interlocked_cmpxchg64( __int64 *dest, __int64 xchg, __int64 compare );
+extern inline int interlocked_xchg( int *dest, int val );
+extern inline void *interlocked_xchg_ptr( void **dest, void *val );
+extern inline int interlocked_xchg_add( int *dest, int incr );
+
+extern inline int interlocked_cmpxchg( int *dest, int xchg, int compare )
+{
+    int ret;
+    __asm__ __volatile__( "lock; cmpxchgl %2,(%1)"
+                          : "=a" (ret) : "r" (dest), "r" (xchg), "0" (compare) : "memory" );
+    return ret;
+}
+
+extern inline void *interlocked_cmpxchg_ptr( void **dest, void *xchg, void *compare )
+{
+    void *ret;
+#ifdef __x86_64__
+    __asm__ __volatile__( "lock; cmpxchgq %2,(%1)"
+                          : "=a" (ret) : "r" (dest), "r" (xchg), "0" (compare) : "memory" );
+#else
+    __asm__ __volatile__( "lock; cmpxchgl %2,(%1)"
+                          : "=a" (ret) : "r" (dest), "r" (xchg), "0" (compare) : "memory" );
+#endif
+    return ret;
+}
+
+extern inline int interlocked_xchg( int *dest, int val )
+{
+    int ret;
+    __asm__ __volatile__( "lock; xchgl %0,(%1)"
+                          : "=r" (ret) : "r" (dest), "0" (val) : "memory" );
+    return ret;
+}
+
+extern inline void *interlocked_xchg_ptr( void **dest, void *val )
+{
+    void *ret;
+#ifdef __x86_64__
+    __asm__ __volatile__( "lock; xchgq %0,(%1)"
+                          : "=r" (ret) :"r" (dest), "0" (val) : "memory" );
+#else
+    __asm__ __volatile__( "lock; xchgl %0,(%1)"
+                          : "=r" (ret) : "r" (dest), "0" (val) : "memory" );
+#endif
+    return ret;
+}
+
+extern inline int interlocked_xchg_add( int *dest, int incr )
+{
+    int ret;
+    __asm__ __volatile__( "lock; xaddl %0,(%1)"
+                          : "=r" (ret) : "r" (dest), "0" (incr) : "memory" );
+    return ret;
+}
+
+#ifdef __x86_64__
+extern inline unsigned char interlocked_cmpxchg128( __int64 *dest, __int64 xchg_high,
+                                                    __int64 xchg_low, __int64 *compare );
+extern inline unsigned char interlocked_cmpxchg128( __int64 *dest, __int64 xchg_high,
+                                                    __int64 xchg_low, __int64 *compare )
+{
+    unsigned char ret;
+    __asm__ __volatile__( "lock cmpxchg16b %0; setz %b2"
+                          : "=m" (dest[0]), "=m" (dest[1]), "=r" (ret),
+                            "=a" (compare[0]), "=d" (compare[1])
+                          : "m" (dest[0]), "m" (dest[1]), "3" (compare[0]), "4" (compare[1]),
+                            "c" (xchg_high), "b" (xchg_low) );
+    return ret;
+}
+#endif
+
+#else  /* __GNUC__ */
+
+extern int interlocked_cmpxchg( int *dest, int xchg, int compare );
+extern void *interlocked_cmpxchg_ptr( void **dest, void *xchg, void *compare );
+extern __int64 interlocked_cmpxchg64( __int64 *dest, __int64 xchg, __int64 compare );
+extern int interlocked_xchg( int *dest, int val );
+extern void *interlocked_xchg_ptr( void **dest, void *val );
+extern int interlocked_xchg_add( int *dest, int incr );
+#ifdef _WIN64
+extern unsigned char interlocked_cmpxchg128( __int64 *dest, __int64 xchg_high,
+                                             __int64 xchg_low, __int64 *compare );
+#endif
+
+#endif  /* __GNUC__ */
+
+#else /* NO_LIBWINE_PORT */
+
+#define __WINE_NOT_PORTABLE(func) func##_is_not_portable func##_is_not_portable
+
+#define ffs                     __WINE_NOT_PORTABLE(ffs)
+#define fstatvfs                __WINE_NOT_PORTABLE(fstatvfs)
+#define futimes                 __WINE_NOT_PORTABLE(futimes)
+#define getopt_long             __WINE_NOT_PORTABLE(getopt_long)
+#define getopt_long_only        __WINE_NOT_PORTABLE(getopt_long_only)
+#define getpagesize             __WINE_NOT_PORTABLE(getpagesize)
+#define interlocked_cmpxchg     __WINE_NOT_PORTABLE(interlocked_cmpxchg)
+#define interlocked_cmpxchg_ptr __WINE_NOT_PORTABLE(interlocked_cmpxchg_ptr)
+#define interlocked_xchg        __WINE_NOT_PORTABLE(interlocked_xchg)
+#define interlocked_xchg_ptr    __WINE_NOT_PORTABLE(interlocked_xchg_ptr)
+#define interlocked_xchg_add    __WINE_NOT_PORTABLE(interlocked_xchg_add)
+#define lstat                   __WINE_NOT_PORTABLE(lstat)
+#define memcpy_unaligned        __WINE_NOT_PORTABLE(memcpy_unaligned)
+#undef memmove
+#define memmove                 __WINE_NOT_PORTABLE(memmove)
+#define pread                   __WINE_NOT_PORTABLE(pread)
+#define pwrite                  __WINE_NOT_PORTABLE(pwrite)
+#define spawnvp                 __WINE_NOT_PORTABLE(spawnvp)
+#define statvfs                 __WINE_NOT_PORTABLE(statvfs)
+#define strcasecmp              __WINE_NOT_PORTABLE(strcasecmp)
+#define strerror                __WINE_NOT_PORTABLE(strerror)
+#define strncasecmp             __WINE_NOT_PORTABLE(strncasecmp)
+#define usleep                  __WINE_NOT_PORTABLE(usleep)
+
+#endif /* NO_LIBWINE_PORT */
+
+#endif /* !defined(__WINE_WINE_PORT_H) */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/rbtree.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/rbtree.h	(revision 35052)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/rbtree.h	(revision 35052)
@@ -0,0 +1,357 @@
+/*
+ * Red-black search tree support
+ *
+ * Copyright 2009 Henri Verbeet
+ * Copyright 2009 Andrew Riedi
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef __WINE_WINE_RBTREE_H
+#define __WINE_WINE_RBTREE_H
+
+#ifdef inline
+#undef inline
+#endif
+#define inline __inline
+
+
+#define WINE_RB_ENTRY_VALUE(element, type, field) \
+    ((type *)((char *)(element) - FIELD_OFFSET(type, field)))
+
+struct wine_rb_entry
+{
+    struct wine_rb_entry *left;
+    struct wine_rb_entry *right;
+    unsigned int flags;
+};
+
+struct wine_rb_stack
+{
+    struct wine_rb_entry ***entries;
+    size_t count;
+    size_t size;
+};
+
+struct wine_rb_functions
+{
+    void *(*alloc)(size_t size);
+    void *(*realloc)(void *ptr, size_t size);
+    void (*free)(void *ptr);
+    int (*compare)(const void *key, const struct wine_rb_entry *entry);
+};
+
+struct wine_rb_tree
+{
+    const struct wine_rb_functions *functions;
+    struct wine_rb_entry *root;
+    struct wine_rb_stack stack;
+};
+
+typedef void (wine_rb_traverse_func_t)(struct wine_rb_entry *entry, void *context);
+
+#define WINE_RB_FLAG_RED                0x1
+#define WINE_RB_FLAG_STOP               0x2
+#define WINE_RB_FLAG_TRAVERSED_LEFT     0x4
+#define WINE_RB_FLAG_TRAVERSED_RIGHT    0x8
+
+static inline void wine_rb_stack_clear(struct wine_rb_stack *stack)
+{
+    stack->count = 0;
+}
+
+static inline void wine_rb_stack_push(struct wine_rb_stack *stack, struct wine_rb_entry **entry)
+{
+    stack->entries[stack->count++] = entry;
+}
+
+static inline int wine_rb_ensure_stack_size(struct wine_rb_tree *tree, size_t size)
+{
+    struct wine_rb_stack *stack = &tree->stack;
+
+    if (size > stack->size)
+    {
+        size_t new_size = stack->size << 1;
+        struct wine_rb_entry ***new_entries = tree->functions->realloc(stack->entries,
+                new_size * sizeof(*stack->entries));
+
+        if (!new_entries) return -1;
+
+        stack->entries = new_entries;
+        stack->size = new_size;
+    }
+
+    return 0;
+}
+
+static inline int wine_rb_is_red(struct wine_rb_entry *entry)
+{
+    return entry && (entry->flags & WINE_RB_FLAG_RED);
+}
+
+static inline void wine_rb_rotate_left(struct wine_rb_entry **entry)
+{
+    struct wine_rb_entry *e = *entry;
+    struct wine_rb_entry *right = e->right;
+
+    e->right = right->left;
+    right->left = e;
+    right->flags &= ~WINE_RB_FLAG_RED;
+    right->flags |= e->flags & WINE_RB_FLAG_RED;
+    e->flags |= WINE_RB_FLAG_RED;
+    *entry = right;
+}
+
+static inline void wine_rb_rotate_right(struct wine_rb_entry **entry)
+{
+    struct wine_rb_entry *e = *entry;
+    struct wine_rb_entry *left = e->left;
+
+    e->left = left->right;
+    left->right = e;
+    left->flags &= ~WINE_RB_FLAG_RED;
+    left->flags |= e->flags & WINE_RB_FLAG_RED;
+    e->flags |= WINE_RB_FLAG_RED;
+    *entry = left;
+}
+
+static inline void wine_rb_flip_color(struct wine_rb_entry *entry)
+{
+    entry->flags ^= WINE_RB_FLAG_RED;
+    entry->left->flags ^= WINE_RB_FLAG_RED;
+    entry->right->flags ^= WINE_RB_FLAG_RED;
+}
+
+static inline void wine_rb_fixup(struct wine_rb_stack *stack)
+{
+    while (stack->count)
+    {
+        struct wine_rb_entry **entry = stack->entries[stack->count - 1];
+
+        if ((*entry)->flags & WINE_RB_FLAG_STOP)
+        {
+            (*entry)->flags &= ~WINE_RB_FLAG_STOP;
+            return;
+        }
+
+        if (wine_rb_is_red((*entry)->right) && !wine_rb_is_red((*entry)->left)) wine_rb_rotate_left(entry);
+        if (wine_rb_is_red((*entry)->left) && wine_rb_is_red((*entry)->left->left)) wine_rb_rotate_right(entry);
+        if (wine_rb_is_red((*entry)->left) && wine_rb_is_red((*entry)->right)) wine_rb_flip_color(*entry);
+        --stack->count;
+    }
+}
+
+static inline void wine_rb_move_red_left(struct wine_rb_entry **entry)
+{
+    wine_rb_flip_color(*entry);
+    if (wine_rb_is_red((*entry)->right->left))
+    {
+        wine_rb_rotate_right(&(*entry)->right);
+        wine_rb_rotate_left(entry);
+        wine_rb_flip_color(*entry);
+    }
+}
+
+static inline void wine_rb_move_red_right(struct wine_rb_entry **entry)
+{
+    wine_rb_flip_color(*entry);
+    if (wine_rb_is_red((*entry)->left->left))
+    {
+        wine_rb_rotate_right(entry);
+        wine_rb_flip_color(*entry);
+    }
+}
+
+static inline void wine_rb_postorder(struct wine_rb_tree *tree, wine_rb_traverse_func_t *callback, void *context)
+{
+    struct wine_rb_entry **entry;
+
+    if (!tree->root) return;
+
+    for (entry = &tree->root;;)
+    {
+        struct wine_rb_entry *e = *entry;
+
+        if (e->left && !(e->flags & WINE_RB_FLAG_TRAVERSED_LEFT))
+        {
+            wine_rb_stack_push(&tree->stack, entry);
+            e->flags |= WINE_RB_FLAG_TRAVERSED_LEFT;
+            entry = &e->left;
+            continue;
+        }
+
+        if (e->right && !(e->flags & WINE_RB_FLAG_TRAVERSED_RIGHT))
+        {
+            wine_rb_stack_push(&tree->stack, entry);
+            e->flags |= WINE_RB_FLAG_TRAVERSED_RIGHT;
+            entry = &e->right;
+            continue;
+        }
+
+        e->flags &= ~(WINE_RB_FLAG_TRAVERSED_LEFT | WINE_RB_FLAG_TRAVERSED_RIGHT);
+        callback(e, context);
+
+        if (!tree->stack.count) break;
+        entry = tree->stack.entries[--tree->stack.count];
+    }
+}
+
+static inline int wine_rb_init(struct wine_rb_tree *tree, const struct wine_rb_functions *functions)
+{
+    tree->functions = functions;
+    tree->root = NULL;
+
+    tree->stack.entries = functions->alloc(16 * sizeof(*tree->stack.entries));
+    if (!tree->stack.entries) return -1;
+    tree->stack.size = 16;
+    tree->stack.count = 0;
+
+    return 0;
+}
+
+static inline void wine_rb_for_each_entry(struct wine_rb_tree *tree, wine_rb_traverse_func_t *callback, void *context)
+{
+    wine_rb_postorder(tree, callback, context);
+}
+
+static inline void wine_rb_destroy(struct wine_rb_tree *tree, wine_rb_traverse_func_t *callback, void *context)
+{
+    /* Note that we use postorder here because the callback will likely free the entry. */
+    if (callback) wine_rb_postorder(tree, callback, context);
+
+    tree->root = NULL;
+    tree->functions->free(tree->stack.entries);
+}
+
+static inline struct wine_rb_entry *wine_rb_get(const struct wine_rb_tree *tree, const void *key)
+{
+    struct wine_rb_entry *entry = tree->root;
+    while (entry)
+    {
+        int c = tree->functions->compare(key, entry);
+        if (!c) return entry;
+        entry = c < 0 ? entry->left : entry->right;
+    }
+    return NULL;
+}
+
+static inline int wine_rb_put(struct wine_rb_tree *tree, const void *key, struct wine_rb_entry *entry)
+{
+    struct wine_rb_entry **parent = &tree->root;
+    size_t black_height = 1;
+
+    while (*parent)
+    {
+        int c;
+
+        if (!wine_rb_is_red(*parent)) ++black_height;
+
+        wine_rb_stack_push(&tree->stack, parent);
+
+        c = tree->functions->compare(key, *parent);
+        if (!c)
+        {
+            wine_rb_stack_clear(&tree->stack);
+            return -1;
+        }
+        else if (c < 0) parent = &(*parent)->left;
+        else parent = &(*parent)->right;
+    }
+
+    /* After insertion, the path length to any node should be <= (black_height + 1) * 2. */
+    if (wine_rb_ensure_stack_size(tree, black_height << 1) == -1)
+    {
+        wine_rb_stack_clear(&tree->stack);
+        return -1;
+    }
+
+    entry->flags = WINE_RB_FLAG_RED;
+    entry->left = NULL;
+    entry->right = NULL;
+    *parent = entry;
+
+    wine_rb_fixup(&tree->stack);
+    tree->root->flags &= ~WINE_RB_FLAG_RED;
+
+    return 0;
+}
+
+static inline void wine_rb_remove(struct wine_rb_tree *tree, const void *key)
+{
+    struct wine_rb_entry **entry = &tree->root;
+
+    while (*entry)
+    {
+        if (tree->functions->compare(key, *entry) < 0)
+        {
+            wine_rb_stack_push(&tree->stack, entry);
+            if (!wine_rb_is_red((*entry)->left) && !wine_rb_is_red((*entry)->left->left)) wine_rb_move_red_left(entry);
+            entry = &(*entry)->left;
+        }
+        else
+        {
+            if (wine_rb_is_red((*entry)->left)) wine_rb_rotate_right(entry);
+            if (!tree->functions->compare(key, *entry) && !(*entry)->right)
+            {
+                *entry = NULL;
+                break;
+            }
+            if (!wine_rb_is_red((*entry)->right) && !wine_rb_is_red((*entry)->right->left))
+                wine_rb_move_red_right(entry);
+            if (!tree->functions->compare(key, *entry))
+            {
+                struct wine_rb_entry **e = &(*entry)->right;
+                struct wine_rb_entry *m = *e;
+                while (m->left) m = m->left;
+
+                wine_rb_stack_push(&tree->stack, entry);
+                (*entry)->flags |= WINE_RB_FLAG_STOP;
+
+                while ((*e)->left)
+                {
+                    wine_rb_stack_push(&tree->stack, e);
+                    if (!wine_rb_is_red((*e)->left) && !wine_rb_is_red((*e)->left->left)) wine_rb_move_red_left(e);
+                    e = &(*e)->left;
+                }
+                *e = NULL;
+                wine_rb_fixup(&tree->stack);
+
+                *m = **entry;
+                *entry = m;
+
+                break;
+            }
+            else
+            {
+                wine_rb_stack_push(&tree->stack, entry);
+                entry = &(*entry)->right;
+            }
+        }
+    }
+
+    wine_rb_fixup(&tree->stack);
+    if (tree->root) tree->root->flags &= ~WINE_RB_FLAG_RED;
+}
+
+#endif  /* __WINE_WINE_RBTREE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/unicode.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/unicode.h	(revision 35052)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/unicode.h	(revision 35052)
@@ -0,0 +1,355 @@
+/*
+ * Wine internal Unicode definitions
+ *
+ * Copyright 2000 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef __WINE_WINE_UNICODE_H
+#define __WINE_WINE_UNICODE_H
+
+#include <stdarg.h>
+
+#include <windef.h>
+#include <winbase.h>
+#include <winnls.h>
+
+#ifdef __WINE_WINE_TEST_H
+#error This file should not be used in Wine tests
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WINE_UNICODE_API
+# if defined(_MSC_VER) || defined(__MINGW32__)
+#  define WINE_UNICODE_API DECLSPEC_IMPORT
+# else
+#  define WINE_UNICODE_API
+# endif
+#endif
+
+/*#ifndef WINE_UNICODE_INLINE
+#define WINE_UNICODE_INLINE extern inline
+#endif*/
+#define WINE_UNICODE_INLINE static __inline
+
+/* code page info common to SBCS and DBCS */
+struct cp_info
+{
+    unsigned int          codepage;          /* codepage id */
+    unsigned int          char_size;         /* char size (1 or 2 bytes) */
+    WCHAR                 def_char;          /* default char value (can be double-byte) */
+    WCHAR                 def_unicode_char;  /* default Unicode char value */
+    const char           *name;              /* code page name */
+};
+
+struct sbcs_table
+{
+    struct cp_info        info;
+    const WCHAR          *cp2uni;            /* code page -> Unicode map */
+    const WCHAR          *cp2uni_glyphs;     /* code page -> Unicode map with glyph chars */
+    const unsigned char  *uni2cp_low;        /* Unicode -> code page map */
+    const unsigned short *uni2cp_high;
+};
+
+struct dbcs_table
+{
+    struct cp_info        info;
+    const WCHAR          *cp2uni;            /* code page -> Unicode map */
+    const unsigned char  *cp2uni_leadbytes;
+    const unsigned short *uni2cp_low;        /* Unicode -> code page map */
+    const unsigned short *uni2cp_high;
+    unsigned char         lead_bytes[12];    /* lead bytes ranges */
+};
+
+union cptable
+{
+    struct cp_info    info;
+    struct sbcs_table sbcs;
+    struct dbcs_table dbcs;
+};
+
+extern const union cptable *wine_cp_get_table( unsigned int codepage );
+extern const union cptable *wine_cp_enum_table( unsigned int index );
+
+extern int wine_cp_mbstowcs( const union cptable *table, int flags,
+                             const char *src, int srclen,
+                             WCHAR *dst, int dstlen );
+extern int wine_cp_wcstombs( const union cptable *table, int flags,
+                             const WCHAR *src, int srclen,
+                             char *dst, int dstlen, const char *defchar, int *used );
+extern int wine_cpsymbol_mbstowcs( const char *src, int srclen, WCHAR *dst, int dstlen );
+extern int wine_cpsymbol_wcstombs( const WCHAR *src, int srclen, char *dst, int dstlen );
+extern int wine_utf8_mbstowcs( int flags, const char *src, int srclen, WCHAR *dst, int dstlen );
+extern int wine_utf8_wcstombs( int flags, const WCHAR *src, int srclen, char *dst, int dstlen );
+
+extern int wine_compare_string( int flags, const WCHAR *str1, int len1, const WCHAR *str2, int len2 );
+extern int wine_get_sortkey( int flags, const WCHAR *src, int srclen, char *dst, int dstlen );
+extern int wine_fold_string( int flags, const WCHAR *src, int srclen , WCHAR *dst, int dstlen );
+
+extern int strcmpiW( const WCHAR *str1, const WCHAR *str2 );
+extern int strncmpiW( const WCHAR *str1, const WCHAR *str2, int n );
+extern int memicmpW( const WCHAR *str1, const WCHAR *str2, int n );
+extern WCHAR *strstrW( const WCHAR *str, const WCHAR *sub );
+extern long int strtolW( const WCHAR *nptr, WCHAR **endptr, int base );
+extern unsigned long int strtoulW( const WCHAR *nptr, WCHAR **endptr, int base );
+extern int sprintfW( WCHAR *str, const WCHAR *format, ... );
+extern int snprintfW( WCHAR *str, size_t len, const WCHAR *format, ... );
+extern int vsprintfW( WCHAR *str, const WCHAR *format, va_list valist );
+extern int vsnprintfW( WCHAR *str, size_t len, const WCHAR *format, va_list valist );
+
+#ifdef WINE_UNICODE_INLINE
+
+WINE_UNICODE_INLINE int wine_is_dbcs_leadbyte( const union cptable *table, unsigned char ch );
+WINE_UNICODE_INLINE int wine_is_dbcs_leadbyte( const union cptable *table, unsigned char ch )
+{
+    return (table->info.char_size == 2) && (table->dbcs.cp2uni_leadbytes[ch]);
+}
+
+WINE_UNICODE_INLINE WCHAR tolowerW( WCHAR ch );
+WINE_UNICODE_INLINE WCHAR tolowerW( WCHAR ch )
+{
+    extern WINE_UNICODE_API const WCHAR wine_casemap_lower[];
+    return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)];
+}
+
+WINE_UNICODE_INLINE WCHAR toupperW( WCHAR ch );
+WINE_UNICODE_INLINE WCHAR toupperW( WCHAR ch )
+{
+    extern WINE_UNICODE_API const WCHAR wine_casemap_upper[];
+    return ch + wine_casemap_upper[wine_casemap_upper[ch >> 8] + (ch & 0xff)];
+}
+
+/* the character type contains the C1_* flags in the low 12 bits */
+/* and the C2_* type in the high 4 bits */
+WINE_UNICODE_INLINE unsigned short get_char_typeW( WCHAR ch );
+WINE_UNICODE_INLINE unsigned short get_char_typeW( WCHAR ch )
+{
+    extern WINE_UNICODE_API const unsigned short wine_wctype_table[];
+    return wine_wctype_table[wine_wctype_table[ch >> 8] + (ch & 0xff)];
+}
+
+WINE_UNICODE_INLINE int iscntrlW( WCHAR wc );
+WINE_UNICODE_INLINE int iscntrlW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_CNTRL;
+}
+
+WINE_UNICODE_INLINE int ispunctW( WCHAR wc );
+WINE_UNICODE_INLINE int ispunctW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_PUNCT;
+}
+
+WINE_UNICODE_INLINE int isspaceW( WCHAR wc );
+WINE_UNICODE_INLINE int isspaceW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_SPACE;
+}
+
+WINE_UNICODE_INLINE int isdigitW( WCHAR wc );
+WINE_UNICODE_INLINE int isdigitW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_DIGIT;
+}
+
+WINE_UNICODE_INLINE int isxdigitW( WCHAR wc );
+WINE_UNICODE_INLINE int isxdigitW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_XDIGIT;
+}
+
+WINE_UNICODE_INLINE int islowerW( WCHAR wc );
+WINE_UNICODE_INLINE int islowerW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_LOWER;
+}
+
+WINE_UNICODE_INLINE int isupperW( WCHAR wc );
+WINE_UNICODE_INLINE int isupperW( WCHAR wc )
+{
+    return get_char_typeW(wc) & C1_UPPER;
+}
+
+WINE_UNICODE_INLINE int isalnumW( WCHAR wc );
+WINE_UNICODE_INLINE int isalnumW( WCHAR wc )
+{
+    return get_char_typeW(wc) & (C1_ALPHA|C1_DIGIT|C1_LOWER|C1_UPPER);
+}
+
+WINE_UNICODE_INLINE int isalphaW( WCHAR wc );
+WINE_UNICODE_INLINE int isalphaW( WCHAR wc )
+{
+    return get_char_typeW(wc) & (C1_ALPHA|C1_LOWER|C1_UPPER);
+}
+
+WINE_UNICODE_INLINE int isgraphW( WCHAR wc );
+WINE_UNICODE_INLINE int isgraphW( WCHAR wc )
+{
+    return get_char_typeW(wc) & (C1_ALPHA|C1_PUNCT|C1_DIGIT|C1_LOWER|C1_UPPER);
+}
+
+WINE_UNICODE_INLINE int isprintW( WCHAR wc );
+WINE_UNICODE_INLINE int isprintW( WCHAR wc )
+{
+    return get_char_typeW(wc) & (C1_ALPHA|C1_BLANK|C1_PUNCT|C1_DIGIT|C1_LOWER|C1_UPPER);
+}
+
+/* some useful string manipulation routines */
+
+WINE_UNICODE_INLINE unsigned int strlenW( const WCHAR *str );
+WINE_UNICODE_INLINE unsigned int strlenW( const WCHAR *str )
+{
+    const WCHAR *s = str;
+    while (*s) s++;
+    return s - str;
+}
+
+WINE_UNICODE_INLINE WCHAR *strcpyW( WCHAR *dst, const WCHAR *src );
+WINE_UNICODE_INLINE WCHAR *strcpyW( WCHAR *dst, const WCHAR *src )
+{
+    WCHAR *p = dst;
+    while ((*p++ = *src++));
+    return dst;
+}
+
+/* strncpy doesn't do what you think, don't use it */
+#define strncpyW(d,s,n) error do_not_use_strncpyW_use_lstrcpynW_or_memcpy_instead
+
+WINE_UNICODE_INLINE int strcmpW( const WCHAR *str1, const WCHAR *str2 );
+WINE_UNICODE_INLINE int strcmpW( const WCHAR *str1, const WCHAR *str2 )
+{
+    while (*str1 && (*str1 == *str2)) { str1++; str2++; }
+    return *str1 - *str2;
+}
+
+WINE_UNICODE_INLINE int strncmpW( const WCHAR *str1, const WCHAR *str2, int n );
+WINE_UNICODE_INLINE int strncmpW( const WCHAR *str1, const WCHAR *str2, int n )
+{
+    if (n <= 0) return 0;
+    while ((--n > 0) && *str1 && (*str1 == *str2)) { str1++; str2++; }
+    return *str1 - *str2;
+}
+
+WINE_UNICODE_INLINE WCHAR *strcatW( WCHAR *dst, const WCHAR *src );
+WINE_UNICODE_INLINE WCHAR *strcatW( WCHAR *dst, const WCHAR *src )
+{
+    strcpyW( dst + strlenW(dst), src );
+    return dst;
+}
+
+WINE_UNICODE_INLINE WCHAR *strchrW( const WCHAR *str, WCHAR ch );
+WINE_UNICODE_INLINE WCHAR *strchrW( const WCHAR *str, WCHAR ch )
+{
+    do { if (*str == ch) return (WCHAR *)(ULONG_PTR)str; } while (*str++);
+    return NULL;
+}
+
+WINE_UNICODE_INLINE WCHAR *strrchrW( const WCHAR *str, WCHAR ch );
+WINE_UNICODE_INLINE WCHAR *strrchrW( const WCHAR *str, WCHAR ch )
+{
+    WCHAR *ret = NULL;
+    do { if (*str == ch) ret = (WCHAR *)(ULONG_PTR)str; } while (*str++);
+    return ret;
+}
+
+WINE_UNICODE_INLINE WCHAR *strpbrkW( const WCHAR *str, const WCHAR *accept );
+WINE_UNICODE_INLINE WCHAR *strpbrkW( const WCHAR *str, const WCHAR *accept )
+{
+    for ( ; *str; str++) if (strchrW( accept, *str )) return (WCHAR *)(ULONG_PTR)str;
+    return NULL;
+}
+
+WINE_UNICODE_INLINE size_t strspnW( const WCHAR *str, const WCHAR *accept );
+WINE_UNICODE_INLINE size_t strspnW( const WCHAR *str, const WCHAR *accept )
+{
+    const WCHAR *ptr;
+    for (ptr = str; *ptr; ptr++) if (!strchrW( accept, *ptr )) break;
+    return ptr - str;
+}
+
+WINE_UNICODE_INLINE size_t strcspnW( const WCHAR *str, const WCHAR *reject );
+WINE_UNICODE_INLINE size_t strcspnW( const WCHAR *str, const WCHAR *reject )
+{
+    const WCHAR *ptr;
+    for (ptr = str; *ptr; ptr++) if (strchrW( reject, *ptr )) break;
+    return ptr - str;
+}
+
+WINE_UNICODE_INLINE WCHAR *strlwrW( WCHAR *str );
+WINE_UNICODE_INLINE WCHAR *strlwrW( WCHAR *str )
+{
+    WCHAR *ret = str;
+    while ((*str = tolowerW(*str))) str++;
+    return ret;
+}
+
+WINE_UNICODE_INLINE WCHAR *struprW( WCHAR *str );
+WINE_UNICODE_INLINE WCHAR *struprW( WCHAR *str )
+{
+    WCHAR *ret = str;
+    while ((*str = toupperW(*str))) str++;
+    return ret;
+}
+
+WINE_UNICODE_INLINE WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n );
+WINE_UNICODE_INLINE WCHAR *memchrW( const WCHAR *ptr, WCHAR ch, size_t n )
+{
+    const WCHAR *end;
+    for (end = ptr + n; ptr < end; ptr++) if (*ptr == ch) return (WCHAR *)(ULONG_PTR)ptr;
+    return NULL;
+}
+
+WINE_UNICODE_INLINE WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n );
+WINE_UNICODE_INLINE WCHAR *memrchrW( const WCHAR *ptr, WCHAR ch, size_t n )
+{
+    const WCHAR *end;
+    WCHAR *ret = NULL;
+    for (end = ptr + n; ptr < end; ptr++) if (*ptr == ch) ret = (WCHAR *)(ULONG_PTR)ptr;
+    return ret;
+}
+
+WINE_UNICODE_INLINE long int atolW( const WCHAR *str );
+WINE_UNICODE_INLINE long int atolW( const WCHAR *str )
+{
+    return strtolW( str, (WCHAR **)0, 10 );
+}
+
+WINE_UNICODE_INLINE int atoiW( const WCHAR *str );
+WINE_UNICODE_INLINE int atoiW( const WCHAR *str )
+{
+    return (int)atolW( str );
+}
+#endif //#ifdef WINE_UNICODE_INLINE
+
+#undef WINE_UNICODE_INLINE
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* __WINE_WINE_UNICODE_H */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/wined3d.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/wined3d.h	(revision 35052)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/wined3d.h	(revision 35052)
@@ -0,0 +1,9541 @@
+/*** Autogenerated by WIDL 1.1.43 from ../../include/wine/wined3d.idl - Do not edit ***/
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_WINED3D_H
+#define __WIDL_WINED3D_H
+
+# define DECLSPEC_HIDDEN
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Headers for imported files */
+
+#include <unknwn.h>
+
+/* Forward declarations */
+
+#ifndef __IWineD3DDeviceParent_FWD_DEFINED__
+#define __IWineD3DDeviceParent_FWD_DEFINED__
+typedef interface IWineD3DDeviceParent IWineD3DDeviceParent;
+#endif
+
+#ifndef __IWineD3DBase_FWD_DEFINED__
+#define __IWineD3DBase_FWD_DEFINED__
+typedef interface IWineD3DBase IWineD3DBase;
+#endif
+
+#ifndef __IWineD3D_FWD_DEFINED__
+#define __IWineD3D_FWD_DEFINED__
+typedef interface IWineD3D IWineD3D;
+#endif
+
+#ifndef __IWineD3DResource_FWD_DEFINED__
+#define __IWineD3DResource_FWD_DEFINED__
+typedef interface IWineD3DResource IWineD3DResource;
+#endif
+
+#ifndef __IWineD3DRendertargetView_FWD_DEFINED__
+#define __IWineD3DRendertargetView_FWD_DEFINED__
+typedef interface IWineD3DRendertargetView IWineD3DRendertargetView;
+#endif
+
+#ifndef __IWineD3DPalette_FWD_DEFINED__
+#define __IWineD3DPalette_FWD_DEFINED__
+typedef interface IWineD3DPalette IWineD3DPalette;
+#endif
+
+#ifndef __IWineD3DClipper_FWD_DEFINED__
+#define __IWineD3DClipper_FWD_DEFINED__
+typedef interface IWineD3DClipper IWineD3DClipper;
+#endif
+
+#ifndef __IWineD3DSurface_FWD_DEFINED__
+#define __IWineD3DSurface_FWD_DEFINED__
+typedef interface IWineD3DSurface IWineD3DSurface;
+#endif
+
+#ifndef __IWineD3DVolume_FWD_DEFINED__
+#define __IWineD3DVolume_FWD_DEFINED__
+typedef interface IWineD3DVolume IWineD3DVolume;
+#endif
+
+#ifndef __IWineD3DBaseTexture_FWD_DEFINED__
+#define __IWineD3DBaseTexture_FWD_DEFINED__
+typedef interface IWineD3DBaseTexture IWineD3DBaseTexture;
+#endif
+
+#ifndef __IWineD3DTexture_FWD_DEFINED__
+#define __IWineD3DTexture_FWD_DEFINED__
+typedef interface IWineD3DTexture IWineD3DTexture;
+#endif
+
+#ifndef __IWineD3DCubeTexture_FWD_DEFINED__
+#define __IWineD3DCubeTexture_FWD_DEFINED__
+typedef interface IWineD3DCubeTexture IWineD3DCubeTexture;
+#endif
+
+#ifndef __IWineD3DVolumeTexture_FWD_DEFINED__
+#define __IWineD3DVolumeTexture_FWD_DEFINED__
+typedef interface IWineD3DVolumeTexture IWineD3DVolumeTexture;
+#endif
+
+#ifndef __IWineD3DVertexDeclaration_FWD_DEFINED__
+#define __IWineD3DVertexDeclaration_FWD_DEFINED__
+typedef interface IWineD3DVertexDeclaration IWineD3DVertexDeclaration;
+#endif
+
+#ifndef __IWineD3DStateBlock_FWD_DEFINED__
+#define __IWineD3DStateBlock_FWD_DEFINED__
+typedef interface IWineD3DStateBlock IWineD3DStateBlock;
+#endif
+
+#ifndef __IWineD3DQuery_FWD_DEFINED__
+#define __IWineD3DQuery_FWD_DEFINED__
+typedef interface IWineD3DQuery IWineD3DQuery;
+#endif
+
+#ifndef __IWineD3DSwapChain_FWD_DEFINED__
+#define __IWineD3DSwapChain_FWD_DEFINED__
+typedef interface IWineD3DSwapChain IWineD3DSwapChain;
+#endif
+
+#ifndef __IWineD3DBuffer_FWD_DEFINED__
+#define __IWineD3DBuffer_FWD_DEFINED__
+typedef interface IWineD3DBuffer IWineD3DBuffer;
+#endif
+
+#ifndef __IWineD3DBaseShader_FWD_DEFINED__
+#define __IWineD3DBaseShader_FWD_DEFINED__
+typedef interface IWineD3DBaseShader IWineD3DBaseShader;
+#endif
+
+#ifndef __IWineD3DVertexShader_FWD_DEFINED__
+#define __IWineD3DVertexShader_FWD_DEFINED__
+typedef interface IWineD3DVertexShader IWineD3DVertexShader;
+#endif
+
+#ifndef __IWineD3DGeometryShader_FWD_DEFINED__
+#define __IWineD3DGeometryShader_FWD_DEFINED__
+typedef interface IWineD3DGeometryShader IWineD3DGeometryShader;
+#endif
+
+#ifndef __IWineD3DPixelShader_FWD_DEFINED__
+#define __IWineD3DPixelShader_FWD_DEFINED__
+typedef interface IWineD3DPixelShader IWineD3DPixelShader;
+#endif
+
+#ifndef __IWineD3DDevice_FWD_DEFINED__
+#define __IWineD3DDevice_FWD_DEFINED__
+typedef interface IWineD3DDevice IWineD3DDevice;
+#endif
+
+
+#if 0
+typedef HANDLE HMONITOR;
+typedef struct _RGNDATAHEADER {
+    DWORD dwSize;
+    DWORD iType;
+    DWORD nCount;
+    DWORD nRgnSize;
+    RECT rcBound;
+} RGNDATAHEADER;
+typedef struct _RGNDATA {
+    RGNDATAHEADER rdh;
+    char Buffer[1];
+} RGNDATA;
+typedef struct _LUID {
+    DWORD LowPart;
+    LONG HighPart;
+} LUID;
+typedef struct _LUID *PLUID;
+#endif
+#define WINED3D_OK                                  S_OK
+#define _FACWINED3D (0x876)
+
+#define MAKE_WINED3DSTATUS(code)                    MAKE_HRESULT(0, _FACWINED3D, code)
+#define WINED3DOK_NOAUTOGEN                         MAKE_WINED3DSTATUS(2159)
+#define MAKE_WINED3DHRESULT(code)                   MAKE_HRESULT(1, _FACWINED3D, code)
+#define WINED3DERR_WRONGTEXTUREFORMAT               MAKE_WINED3DHRESULT(2072)
+#define WINED3DERR_UNSUPPORTEDCOLOROPERATION        MAKE_WINED3DHRESULT(2073)
+#define WINED3DERR_UNSUPPORTEDCOLORARG              MAKE_WINED3DHRESULT(2074)
+#define WINED3DERR_UNSUPPORTEDALPHAOPERATION        MAKE_WINED3DHRESULT(2075)
+#define WINED3DERR_UNSUPPORTEDALPHAARG              MAKE_WINED3DHRESULT(2076)
+#define WINED3DERR_TOOMANYOPERATIONS                MAKE_WINED3DHRESULT(2077)
+#define WINED3DERR_CONFLICTINGTEXTUREFILTER         MAKE_WINED3DHRESULT(2078)
+#define WINED3DERR_UNSUPPORTEDFACTORVALUE           MAKE_WINED3DHRESULT(2079)
+#define WINED3DERR_CONFLICTINGRENDERSTATE           MAKE_WINED3DHRESULT(2081)
+#define WINED3DERR_UNSUPPORTEDTEXTUREFILTER         MAKE_WINED3DHRESULT(2082)
+#define WINED3DERR_CONFLICTINGTEXTUREPALETTE        MAKE_WINED3DHRESULT(2086)
+#define WINED3DERR_DRIVERINTERNALERROR              MAKE_WINED3DHRESULT(2087)
+#define WINED3DERR_NOTFOUND                         MAKE_WINED3DHRESULT(2150)
+#define WINED3DERR_MOREDATA                         MAKE_WINED3DHRESULT(2151)
+#define WINED3DERR_DEVICELOST                       MAKE_WINED3DHRESULT(2152)
+#define WINED3DERR_DEVICENOTRESET                   MAKE_WINED3DHRESULT(2153)
+#define WINED3DERR_NOTAVAILABLE                     MAKE_WINED3DHRESULT(2154)
+#define WINED3DERR_OUTOFVIDEOMEMORY                 MAKE_WINED3DHRESULT(380)
+#define WINED3DERR_INVALIDDEVICE                    MAKE_WINED3DHRESULT(2155)
+#define WINED3DERR_INVALIDCALL                      MAKE_WINED3DHRESULT(2156)
+#define WINED3DERR_DRIVERINVALIDCALL                MAKE_WINED3DHRESULT(2157)
+#define WINED3DERR_WASSTILLDRAWING                  MAKE_WINED3DHRESULT(540)
+#define WINEDDERR_NOTAOVERLAYSURFACE                MAKE_WINED3DHRESULT(580)
+#define WINEDDERR_NOTLOCKED                         MAKE_WINED3DHRESULT(584)
+#define WINEDDERR_NODC                              MAKE_WINED3DHRESULT(586)
+#define WINEDDERR_DCALREADYCREATED                  MAKE_WINED3DHRESULT(620)
+#define WINEDDERR_NOTFLIPPABLE                      MAKE_WINED3DHRESULT(582)
+#define WINEDDERR_SURFACEBUSY                       MAKE_WINED3DHRESULT(430)
+#define WINEDDERR_INVALIDRECT                       MAKE_WINED3DHRESULT(150)
+#define WINEDDERR_NOCLIPLIST                        MAKE_WINED3DHRESULT(205)
+#define WINEDDERR_OVERLAYNOTVISIBLE                 MAKE_WINED3DHRESULT(577)
+typedef DWORD WINED3DCOLOR;
+typedef enum _WINED3DLIGHTTYPE {
+    WINED3DLIGHT_POINT = 1,
+    WINED3DLIGHT_SPOT = 2,
+    WINED3DLIGHT_DIRECTIONAL = 3,
+    WINED3DLIGHT_PARALLELPOINT = 4,
+    WINED3DLIGHT_GLSPOT = 5,
+    WINED3DLIGHT_FORCE_DWORD = 0x7fffffff
+} WINED3DLIGHTTYPE;
+typedef enum _WINED3DPRIMITIVETYPE {
+    WINED3DPT_UNDEFINED = 0,
+    WINED3DPT_POINTLIST = 1,
+    WINED3DPT_LINELIST = 2,
+    WINED3DPT_LINESTRIP = 3,
+    WINED3DPT_TRIANGLELIST = 4,
+    WINED3DPT_TRIANGLESTRIP = 5,
+    WINED3DPT_TRIANGLEFAN = 6,
+    WINED3DPT_LINELIST_ADJ = 10,
+    WINED3DPT_LINESTRIP_ADJ = 11,
+    WINED3DPT_TRIANGLELIST_ADJ = 12,
+    WINED3DPT_TRIANGLESTRIP_ADJ = 13,
+    WINED3DPT_FORCE_DWORD = 0x7fffffff
+} WINED3DPRIMITIVETYPE;
+typedef enum _WINED3DDEVTYPE {
+    WINED3DDEVTYPE_HAL = 1,
+    WINED3DDEVTYPE_REF = 2,
+    WINED3DDEVTYPE_SW = 3,
+    WINED3DDEVTYPE_NULLREF = 4,
+    WINED3DDEVTYPE_FORCE_DWORD = 0xffffffff
+} WINED3DDEVTYPE;
+typedef enum _WINED3DDEGREETYPE {
+    WINED3DDEGREE_LINEAR = 1,
+    WINED3DDEGREE_QUADRATIC = 2,
+    WINED3DDEGREE_CUBIC = 3,
+    WINED3DDEGREE_QUINTIC = 5,
+    WINED3DDEGREE_FORCE_DWORD = 0x7fffffff
+} WINED3DDEGREETYPE;
+typedef enum _WINED3DFORMAT {
+    WINED3DFMT_UNKNOWN = 0,
+    WINED3DFMT_B8G8R8_UNORM = 1,
+    WINED3DFMT_B5G5R5X1_UNORM = 2,
+    WINED3DFMT_B4G4R4A4_UNORM = 3,
+    WINED3DFMT_B2G3R3_UNORM = 4,
+    WINED3DFMT_B2G3R3A8_UNORM = 5,
+    WINED3DFMT_B4G4R4X4_UNORM = 6,
+    WINED3DFMT_R8G8B8X8_UNORM = 7,
+    WINED3DFMT_B10G10R10A2_UNORM = 8,
+    WINED3DFMT_P8_UINT_A8_UNORM = 9,
+    WINED3DFMT_P8_UINT = 10,
+    WINED3DFMT_L8_UNORM = 11,
+    WINED3DFMT_L8A8_UNORM = 12,
+    WINED3DFMT_L4A4_UNORM = 13,
+    WINED3DFMT_R5G5_SNORM_L6_UNORM = 14,
+    WINED3DFMT_R8G8_SNORM_L8X8_UNORM = 15,
+    WINED3DFMT_R10G11B11_SNORM = 16,
+    WINED3DFMT_R10G10B10_SNORM_A2_UNORM = 17,
+    WINED3DFMT_D16_LOCKABLE = 18,
+    WINED3DFMT_D32_UNORM = 19,
+    WINED3DFMT_S1_UINT_D15_UNORM = 20,
+    WINED3DFMT_X8D24_UNORM = 21,
+    WINED3DFMT_S4X4_UINT_D24_UNORM = 22,
+    WINED3DFMT_L16_UNORM = 23,
+    WINED3DFMT_S8_UINT_D24_FLOAT = 24,
+    WINED3DFMT_VERTEXDATA = 25,
+    WINED3DFMT_R8G8_SNORM_Cx = 26,
+    WINED3DFMT_R32G32B32A32_TYPELESS = 27,
+    WINED3DFMT_R32G32B32A32_FLOAT = 28,
+    WINED3DFMT_R32G32B32A32_UINT = 29,
+    WINED3DFMT_R32G32B32A32_SINT = 30,
+    WINED3DFMT_R32G32B32_TYPELESS = 31,
+    WINED3DFMT_R32G32B32_FLOAT = 32,
+    WINED3DFMT_R32G32B32_UINT = 33,
+    WINED3DFMT_R32G32B32_SINT = 34,
+    WINED3DFMT_R16G16B16A16_TYPELESS = 35,
+    WINED3DFMT_R16G16B16A16_FLOAT = 36,
+    WINED3DFMT_R16G16B16A16_UNORM = 37,
+    WINED3DFMT_R16G16B16A16_UINT = 38,
+    WINED3DFMT_R16G16B16A16_SNORM = 39,
+    WINED3DFMT_R16G16B16A16_SINT = 40,
+    WINED3DFMT_R32G32_TYPELESS = 41,
+    WINED3DFMT_R32G32_FLOAT = 42,
+    WINED3DFMT_R32G32_UINT = 43,
+    WINED3DFMT_R32G32_SINT = 44,
+    WINED3DFMT_R32G8X24_TYPELESS = 45,
+    WINED3DFMT_D32_FLOAT_S8X24_UINT = 46,
+    WINED3DFMT_R32_FLOAT_X8X24_TYPELESS = 47,
+    WINED3DFMT_X32_TYPELESS_G8X24_UINT = 48,
+    WINED3DFMT_R10G10B10A2_TYPELESS = 49,
+    WINED3DFMT_R10G10B10A2_UNORM = 50,
+    WINED3DFMT_R10G10B10A2_UINT = 51,
+    WINED3DFMT_R10G10B10A2_SNORM = 52,
+    WINED3DFMT_R11G11B10_FLOAT = 53,
+    WINED3DFMT_R8G8B8A8_TYPELESS = 54,
+    WINED3DFMT_R8G8B8A8_UNORM = 55,
+    WINED3DFMT_R8G8B8A8_UNORM_SRGB = 56,
+    WINED3DFMT_R8G8B8A8_UINT = 57,
+    WINED3DFMT_R8G8B8A8_SNORM = 58,
+    WINED3DFMT_R8G8B8A8_SINT = 59,
+    WINED3DFMT_R16G16_TYPELESS = 60,
+    WINED3DFMT_R16G16_FLOAT = 61,
+    WINED3DFMT_R16G16_UNORM = 62,
+    WINED3DFMT_R16G16_UINT = 63,
+    WINED3DFMT_R16G16_SNORM = 64,
+    WINED3DFMT_R16G16_SINT = 65,
+    WINED3DFMT_R32_TYPELESS = 66,
+    WINED3DFMT_D32_FLOAT = 67,
+    WINED3DFMT_R32_FLOAT = 68,
+    WINED3DFMT_R32_UINT = 69,
+    WINED3DFMT_R32_SINT = 70,
+    WINED3DFMT_R24G8_TYPELESS = 71,
+    WINED3DFMT_D24_UNORM_S8_UINT = 72,
+    WINED3DFMT_R24_UNORM_X8_TYPELESS = 73,
+    WINED3DFMT_X24_TYPELESS_G8_UINT = 74,
+    WINED3DFMT_R8G8_TYPELESS = 75,
+    WINED3DFMT_R8G8_UNORM = 76,
+    WINED3DFMT_R8G8_UINT = 77,
+    WINED3DFMT_R8G8_SNORM = 78,
+    WINED3DFMT_R8G8_SINT = 79,
+    WINED3DFMT_R16_TYPELESS = 80,
+    WINED3DFMT_R16_FLOAT = 81,
+    WINED3DFMT_D16_UNORM = 82,
+    WINED3DFMT_R16_UNORM = 83,
+    WINED3DFMT_R16_UINT = 84,
+    WINED3DFMT_R16_SNORM = 85,
+    WINED3DFMT_R16_SINT = 86,
+    WINED3DFMT_R8_TYPELESS = 87,
+    WINED3DFMT_R8_UNORM = 88,
+    WINED3DFMT_R8_UINT = 89,
+    WINED3DFMT_R8_SNORM = 90,
+    WINED3DFMT_R8_SINT = 91,
+    WINED3DFMT_A8_UNORM = 92,
+    WINED3DFMT_R1_UNORM = 93,
+    WINED3DFMT_R9G9B9E5_SHAREDEXP = 94,
+    WINED3DFMT_R8G8_B8G8_UNORM = 95,
+    WINED3DFMT_G8R8_G8B8_UNORM = 96,
+    WINED3DFMT_BC1_TYPELESS = 97,
+    WINED3DFMT_BC1_UNORM = 98,
+    WINED3DFMT_BC1_UNORM_SRGB = 99,
+    WINED3DFMT_BC2_TYPELESS = 100,
+    WINED3DFMT_BC2_UNORM = 101,
+    WINED3DFMT_BC2_UNORM_SRGB = 102,
+    WINED3DFMT_BC3_TYPELESS = 103,
+    WINED3DFMT_BC3_UNORM = 104,
+    WINED3DFMT_BC3_UNORM_SRGB = 105,
+    WINED3DFMT_BC4_TYPELESS = 106,
+    WINED3DFMT_BC4_UNORM = 107,
+    WINED3DFMT_BC4_SNORM = 108,
+    WINED3DFMT_BC5_TYPELESS = 109,
+    WINED3DFMT_BC5_UNORM = 110,
+    WINED3DFMT_BC5_SNORM = 111,
+    WINED3DFMT_B5G6R5_UNORM = 112,
+    WINED3DFMT_B5G5R5A1_UNORM = 113,
+    WINED3DFMT_B8G8R8A8_UNORM = 114,
+    WINED3DFMT_B8G8R8X8_UNORM = 115,
+    WINED3DFMT_UYVY = (((ULONG)(unsigned char)'U' | ((ULONG)(unsigned char)'Y' << 8)) | ((ULONG)(unsigned char)'V' << 16)) | ((ULONG)(unsigned char)'Y' << 24),
+    WINED3DFMT_YUY2 = (((ULONG)(unsigned char)'Y' | ((ULONG)(unsigned char)'U' << 8)) | ((ULONG)(unsigned char)'Y' << 16)) | ((ULONG)(unsigned char)'2' << 24),
+    WINED3DFMT_YV12 = (((ULONG)(unsigned char)'Y' | ((ULONG)(unsigned char)'V' << 8)) | ((ULONG)(unsigned char)'1' << 16)) | ((ULONG)(unsigned char)'2' << 24),
+    WINED3DFMT_DXT1 = (((ULONG)(unsigned char)'D' | ((ULONG)(unsigned char)'X' << 8)) | ((ULONG)(unsigned char)'T' << 16)) | ((ULONG)(unsigned char)'1' << 24),
+    WINED3DFMT_DXT2 = (((ULONG)(unsigned char)'D' | ((ULONG)(unsigned char)'X' << 8)) | ((ULONG)(unsigned char)'T' << 16)) | ((ULONG)(unsigned char)'2' << 24),
+    WINED3DFMT_DXT3 = (((ULONG)(unsigned char)'D' | ((ULONG)(unsigned char)'X' << 8)) | ((ULONG)(unsigned char)'T' << 16)) | ((ULONG)(unsigned char)'3' << 24),
+    WINED3DFMT_DXT4 = (((ULONG)(unsigned char)'D' | ((ULONG)(unsigned char)'X' << 8)) | ((ULONG)(unsigned char)'T' << 16)) | ((ULONG)(unsigned char)'4' << 24),
+    WINED3DFMT_DXT5 = (((ULONG)(unsigned char)'D' | ((ULONG)(unsigned char)'X' << 8)) | ((ULONG)(unsigned char)'T' << 16)) | ((ULONG)(unsigned char)'5' << 24),
+    WINED3DFMT_MULTI2_ARGB8 = (((ULONG)(unsigned char)'M' | ((ULONG)(unsigned char)'E' << 8)) | ((ULONG)(unsigned char)'T' << 16)) | ((ULONG)(unsigned char)'1' << 24),
+    WINED3DFMT_G8R8_G8B8 = (((ULONG)(unsigned char)'G' | ((ULONG)(unsigned char)'R' << 8)) | ((ULONG)(unsigned char)'G' << 16)) | ((ULONG)(unsigned char)'B' << 24),
+    WINED3DFMT_R8G8_B8G8 = (((ULONG)(unsigned char)'R' | ((ULONG)(unsigned char)'G' << 8)) | ((ULONG)(unsigned char)'B' << 16)) | ((ULONG)(unsigned char)'G' << 24),
+    WINED3DFMT_ATI2N = (((ULONG)(unsigned char)'A' | ((ULONG)(unsigned char)'T' << 8)) | ((ULONG)(unsigned char)'I' << 16)) | ((ULONG)(unsigned char)'2' << 24),
+    WINED3DFMT_INST = (((ULONG)(unsigned char)'I' | ((ULONG)(unsigned char)'N' << 8)) | ((ULONG)(unsigned char)'S' << 16)) | ((ULONG)(unsigned char)'T' << 24),
+    WINED3DFMT_NVHU = (((ULONG)(unsigned char)'N' | ((ULONG)(unsigned char)'V' << 8)) | ((ULONG)(unsigned char)'H' << 16)) | ((ULONG)(unsigned char)'U' << 24),
+    WINED3DFMT_NVHS = (((ULONG)(unsigned char)'N' | ((ULONG)(unsigned char)'V' << 8)) | ((ULONG)(unsigned char)'H' << 16)) | ((ULONG)(unsigned char)'S' << 24),
+    WINED3DFMT_FORCE_DWORD = 0xffffffff
+} WINED3DFORMAT;
+typedef enum _WINED3DRENDERSTATETYPE {
+    WINED3DRS_ANTIALIAS = 2,
+    WINED3DRS_TEXTUREPERSPECTIVE = 4,
+    WINED3DRS_WRAPU = 5,
+    WINED3DRS_WRAPV = 6,
+    WINED3DRS_ZENABLE = 7,
+    WINED3DRS_FILLMODE = 8,
+    WINED3DRS_SHADEMODE = 9,
+    WINED3DRS_LINEPATTERN = 10,
+    WINED3DRS_MONOENABLE = 11,
+    WINED3DRS_ROP2 = 12,
+    WINED3DRS_PLANEMASK = 13,
+    WINED3DRS_ZWRITEENABLE = 14,
+    WINED3DRS_ALPHATESTENABLE = 15,
+    WINED3DRS_LASTPIXEL = 16,
+    WINED3DRS_SRCBLEND = 19,
+    WINED3DRS_DESTBLEND = 20,
+    WINED3DRS_CULLMODE = 22,
+    WINED3DRS_ZFUNC = 23,
+    WINED3DRS_ALPHAREF = 24,
+    WINED3DRS_ALPHAFUNC = 25,
+    WINED3DRS_DITHERENABLE = 26,
+    WINED3DRS_ALPHABLENDENABLE = 27,
+    WINED3DRS_FOGENABLE = 28,
+    WINED3DRS_SPECULARENABLE = 29,
+    WINED3DRS_ZVISIBLE = 30,
+    WINED3DRS_SUBPIXEL = 31,
+    WINED3DRS_SUBPIXELX = 32,
+    WINED3DRS_STIPPLEDALPHA = 33,
+    WINED3DRS_FOGCOLOR = 34,
+    WINED3DRS_FOGTABLEMODE = 35,
+    WINED3DRS_FOGSTART = 36,
+    WINED3DRS_FOGEND = 37,
+    WINED3DRS_FOGDENSITY = 38,
+    WINED3DRS_STIPPLEENABLE = 39,
+    WINED3DRS_EDGEANTIALIAS = 40,
+    WINED3DRS_COLORKEYENABLE = 41,
+    WINED3DRS_MIPMAPLODBIAS = 46,
+    WINED3DRS_ZBIAS = 47,
+    WINED3DRS_RANGEFOGENABLE = 48,
+    WINED3DRS_ANISOTROPY = 49,
+    WINED3DRS_FLUSHBATCH = 50,
+    WINED3DRS_TRANSLUCENTSORTINDEPENDENT = 51,
+    WINED3DRS_STENCILENABLE = 52,
+    WINED3DRS_STENCILFAIL = 53,
+    WINED3DRS_STENCILZFAIL = 54,
+    WINED3DRS_STENCILPASS = 55,
+    WINED3DRS_STENCILFUNC = 56,
+    WINED3DRS_STENCILREF = 57,
+    WINED3DRS_STENCILMASK = 58,
+    WINED3DRS_STENCILWRITEMASK = 59,
+    WINED3DRS_TEXTUREFACTOR = 60,
+    WINED3DRS_WRAP0 = 128,
+    WINED3DRS_WRAP1 = 129,
+    WINED3DRS_WRAP2 = 130,
+    WINED3DRS_WRAP3 = 131,
+    WINED3DRS_WRAP4 = 132,
+    WINED3DRS_WRAP5 = 133,
+    WINED3DRS_WRAP6 = 134,
+    WINED3DRS_WRAP7 = 135,
+    WINED3DRS_CLIPPING = 136,
+    WINED3DRS_LIGHTING = 137,
+    WINED3DRS_EXTENTS = 138,
+    WINED3DRS_AMBIENT = 139,
+    WINED3DRS_FOGVERTEXMODE = 140,
+    WINED3DRS_COLORVERTEX = 141,
+    WINED3DRS_LOCALVIEWER = 142,
+    WINED3DRS_NORMALIZENORMALS = 143,
+    WINED3DRS_COLORKEYBLENDENABLE = 144,
+    WINED3DRS_DIFFUSEMATERIALSOURCE = 145,
+    WINED3DRS_SPECULARMATERIALSOURCE = 146,
+    WINED3DRS_AMBIENTMATERIALSOURCE = 147,
+    WINED3DRS_EMISSIVEMATERIALSOURCE = 148,
+    WINED3DRS_VERTEXBLEND = 151,
+    WINED3DRS_CLIPPLANEENABLE = 152,
+    WINED3DRS_SOFTWAREVERTEXPROCESSING = 153,
+    WINED3DRS_POINTSIZE = 154,
+    WINED3DRS_POINTSIZE_MIN = 155,
+    WINED3DRS_POINTSPRITEENABLE = 156,
+    WINED3DRS_POINTSCALEENABLE = 157,
+    WINED3DRS_POINTSCALE_A = 158,
+    WINED3DRS_POINTSCALE_B = 159,
+    WINED3DRS_POINTSCALE_C = 160,
+    WINED3DRS_MULTISAMPLEANTIALIAS = 161,
+    WINED3DRS_MULTISAMPLEMASK = 162,
+    WINED3DRS_PATCHEDGESTYLE = 163,
+    WINED3DRS_PATCHSEGMENTS = 164,
+    WINED3DRS_DEBUGMONITORTOKEN = 165,
+    WINED3DRS_POINTSIZE_MAX = 166,
+    WINED3DRS_INDEXEDVERTEXBLENDENABLE = 167,
+    WINED3DRS_COLORWRITEENABLE = 168,
+    WINED3DRS_TWEENFACTOR = 170,
+    WINED3DRS_BLENDOP = 171,
+    WINED3DRS_POSITIONDEGREE = 172,
+    WINED3DRS_NORMALDEGREE = 173,
+    WINED3DRS_SCISSORTESTENABLE = 174,
+    WINED3DRS_SLOPESCALEDEPTHBIAS = 175,
+    WINED3DRS_ANTIALIASEDLINEENABLE = 176,
+    WINED3DRS_MINTESSELLATIONLEVEL = 178,
+    WINED3DRS_MAXTESSELLATIONLEVEL = 179,
+    WINED3DRS_ADAPTIVETESS_X = 180,
+    WINED3DRS_ADAPTIVETESS_Y = 181,
+    WINED3DRS_ADAPTIVETESS_Z = 182,
+    WINED3DRS_ADAPTIVETESS_W = 183,
+    WINED3DRS_ENABLEADAPTIVETESSELLATION = 184,
+    WINED3DRS_TWOSIDEDSTENCILMODE = 185,
+    WINED3DRS_CCW_STENCILFAIL = 186,
+    WINED3DRS_CCW_STENCILZFAIL = 187,
+    WINED3DRS_CCW_STENCILPASS = 188,
+    WINED3DRS_CCW_STENCILFUNC = 189,
+    WINED3DRS_COLORWRITEENABLE1 = 190,
+    WINED3DRS_COLORWRITEENABLE2 = 191,
+    WINED3DRS_COLORWRITEENABLE3 = 192,
+    WINED3DRS_BLENDFACTOR = 193,
+    WINED3DRS_SRGBWRITEENABLE = 194,
+    WINED3DRS_DEPTHBIAS = 195,
+    WINED3DRS_WRAP8 = 198,
+    WINED3DRS_WRAP9 = 199,
+    WINED3DRS_WRAP10 = 200,
+    WINED3DRS_WRAP11 = 201,
+    WINED3DRS_WRAP12 = 202,
+    WINED3DRS_WRAP13 = 203,
+    WINED3DRS_WRAP14 = 204,
+    WINED3DRS_WRAP15 = 205,
+    WINED3DRS_SEPARATEALPHABLENDENABLE = 206,
+    WINED3DRS_SRCBLENDALPHA = 207,
+    WINED3DRS_DESTBLENDALPHA = 208,
+    WINED3DRS_BLENDOPALPHA = 209,
+    WINED3DRS_FORCE_DWORD = 0x7fffffff
+} WINED3DRENDERSTATETYPE;
+#define WINEHIGHEST_RENDER_STATE (WINED3DRS_BLENDOPALPHA)
+
+typedef enum _WINED3DBLEND {
+    WINED3DBLEND_ZERO = 1,
+    WINED3DBLEND_ONE = 2,
+    WINED3DBLEND_SRCCOLOR = 3,
+    WINED3DBLEND_INVSRCCOLOR = 4,
+    WINED3DBLEND_SRCALPHA = 5,
+    WINED3DBLEND_INVSRCALPHA = 6,
+    WINED3DBLEND_DESTALPHA = 7,
+    WINED3DBLEND_INVDESTALPHA = 8,
+    WINED3DBLEND_DESTCOLOR = 9,
+    WINED3DBLEND_INVDESTCOLOR = 10,
+    WINED3DBLEND_SRCALPHASAT = 11,
+    WINED3DBLEND_BOTHSRCALPHA = 12,
+    WINED3DBLEND_BOTHINVSRCALPHA = 13,
+    WINED3DBLEND_BLENDFACTOR = 14,
+    WINED3DBLEND_INVBLENDFACTOR = 15,
+    WINED3DBLEND_FORCE_DWORD = 0x7fffffff
+} WINED3DBLEND;
+typedef enum _WINED3DBLENDOP {
+    WINED3DBLENDOP_ADD = 1,
+    WINED3DBLENDOP_SUBTRACT = 2,
+    WINED3DBLENDOP_REVSUBTRACT = 3,
+    WINED3DBLENDOP_MIN = 4,
+    WINED3DBLENDOP_MAX = 5,
+    WINED3DBLENDOP_FORCE_DWORD = 0x7fffffff
+} WINED3DBLENDOP;
+typedef enum _WINED3DVERTEXBLENDFLAGS {
+    WINED3DVBF_DISABLE = 0,
+    WINED3DVBF_1WEIGHTS = 1,
+    WINED3DVBF_2WEIGHTS = 2,
+    WINED3DVBF_3WEIGHTS = 3,
+    WINED3DVBF_TWEENING = 255,
+    WINED3DVBF_0WEIGHTS = 256
+} WINED3DVERTEXBLENDFLAGS;
+typedef enum _WINED3DCMPFUNC {
+    WINED3DCMP_NEVER = 1,
+    WINED3DCMP_LESS = 2,
+    WINED3DCMP_EQUAL = 3,
+    WINED3DCMP_LESSEQUAL = 4,
+    WINED3DCMP_GREATER = 5,
+    WINED3DCMP_NOTEQUAL = 6,
+    WINED3DCMP_GREATEREQUAL = 7,
+    WINED3DCMP_ALWAYS = 8,
+    WINED3DCMP_FORCE_DWORD = 0x7fffffff
+} WINED3DCMPFUNC;
+typedef enum _WINED3DZBUFFERTYPE {
+    WINED3DZB_FALSE = 0,
+    WINED3DZB_TRUE = 1,
+    WINED3DZB_USEW = 2,
+    WINED3DZB_FORCE_DWORD = 0x7fffffff
+} WINED3DZBUFFERTYPE;
+typedef enum _WINED3DFOGMODE {
+    WINED3DFOG_NONE = 0,
+    WINED3DFOG_EXP = 1,
+    WINED3DFOG_EXP2 = 2,
+    WINED3DFOG_LINEAR = 3,
+    WINED3DFOG_FORCE_DWORD = 0x7fffffff
+} WINED3DFOGMODE;
+typedef enum _WINED3DSHADEMODE {
+    WINED3DSHADE_FLAT = 1,
+    WINED3DSHADE_GOURAUD = 2,
+    WINED3DSHADE_PHONG = 3,
+    WINED3DSHADE_FORCE_DWORD = 0x7fffffff
+} WINED3DSHADEMODE;
+typedef enum _WINED3DFILLMODE {
+    WINED3DFILL_POINT = 1,
+    WINED3DFILL_WIREFRAME = 2,
+    WINED3DFILL_SOLID = 3,
+    WINED3DFILL_FORCE_DWORD = 0x7fffffff
+} WINED3DFILLMODE;
+typedef enum _WINED3DCULL {
+    WINED3DCULL_NONE = 1,
+    WINED3DCULL_CW = 2,
+    WINED3DCULL_CCW = 3,
+    WINED3DCULL_FORCE_DWORD = 0x7fffffff
+} WINED3DCULL;
+typedef enum _WINED3DSTENCILOP {
+    WINED3DSTENCILOP_KEEP = 1,
+    WINED3DSTENCILOP_ZERO = 2,
+    WINED3DSTENCILOP_REPLACE = 3,
+    WINED3DSTENCILOP_INCRSAT = 4,
+    WINED3DSTENCILOP_DECRSAT = 5,
+    WINED3DSTENCILOP_INVERT = 6,
+    WINED3DSTENCILOP_INCR = 7,
+    WINED3DSTENCILOP_DECR = 8,
+    WINED3DSTENCILOP_FORCE_DWORD = 0x7fffffff
+} WINED3DSTENCILOP;
+typedef enum _WINED3DMATERIALCOLORSOURCE {
+    WINED3DMCS_MATERIAL = 0,
+    WINED3DMCS_COLOR1 = 1,
+    WINED3DMCS_COLOR2 = 2,
+    WINED3DMCS_FORCE_DWORD = 0x7fffffff
+} WINED3DMATERIALCOLORSOURCE;
+typedef enum _WINED3DPATCHEDGESTYLE {
+    WINED3DPATCHEDGE_DISCRETE = 0,
+    WINED3DPATCHEDGE_CONTINUOUS = 1,
+    WINED3DPATCHEDGE_FORCE_DWORD = 0x7fffffff
+} WINED3DPATCHEDGESTYLE;
+typedef enum _WINED3DBACKBUFFER_TYPE {
+    WINED3DBACKBUFFER_TYPE_MONO = 0,
+    WINED3DBACKBUFFER_TYPE_LEFT = 1,
+    WINED3DBACKBUFFER_TYPE_RIGHT = 2,
+    WINED3DBACKBUFFER_TYPE_FORCE_DWORD = 0x7fffffff
+} WINED3DBACKBUFFER_TYPE;
+typedef enum _WINED3DSWAPEFFECT {
+    WINED3DSWAPEFFECT_DISCARD = 1,
+    WINED3DSWAPEFFECT_FLIP = 2,
+    WINED3DSWAPEFFECT_COPY = 3,
+    WINED3DSWAPEFFECT_COPY_VSYNC = 4,
+    WINED3DSWAPEFFECT_FORCE_DWORD = 0xffffffff
+} WINED3DSWAPEFFECT;
+typedef enum _WINED3DSAMPLERSTATETYPE {
+    WINED3DSAMP_ADDRESSU = 1,
+    WINED3DSAMP_ADDRESSV = 2,
+    WINED3DSAMP_ADDRESSW = 3,
+    WINED3DSAMP_BORDERCOLOR = 4,
+    WINED3DSAMP_MAGFILTER = 5,
+    WINED3DSAMP_MINFILTER = 6,
+    WINED3DSAMP_MIPFILTER = 7,
+    WINED3DSAMP_MIPMAPLODBIAS = 8,
+    WINED3DSAMP_MAXMIPLEVEL = 9,
+    WINED3DSAMP_MAXANISOTROPY = 10,
+    WINED3DSAMP_SRGBTEXTURE = 11,
+    WINED3DSAMP_ELEMENTINDEX = 12,
+    WINED3DSAMP_DMAPOFFSET = 13,
+    WINED3DSAMP_FORCE_DWORD = 0x7fffffff
+} WINED3DSAMPLERSTATETYPE;
+#define WINED3D_HIGHEST_SAMPLER_STATE (WINED3DSAMP_DMAPOFFSET)
+
+typedef enum _WINED3DMULTISAMPLE_TYPE {
+    WINED3DMULTISAMPLE_NONE = 0,
+    WINED3DMULTISAMPLE_NONMASKABLE = 1,
+    WINED3DMULTISAMPLE_2_SAMPLES = 2,
+    WINED3DMULTISAMPLE_3_SAMPLES = 3,
+    WINED3DMULTISAMPLE_4_SAMPLES = 4,
+    WINED3DMULTISAMPLE_5_SAMPLES = 5,
+    WINED3DMULTISAMPLE_6_SAMPLES = 6,
+    WINED3DMULTISAMPLE_7_SAMPLES = 7,
+    WINED3DMULTISAMPLE_8_SAMPLES = 8,
+    WINED3DMULTISAMPLE_9_SAMPLES = 9,
+    WINED3DMULTISAMPLE_10_SAMPLES = 10,
+    WINED3DMULTISAMPLE_11_SAMPLES = 11,
+    WINED3DMULTISAMPLE_12_SAMPLES = 12,
+    WINED3DMULTISAMPLE_13_SAMPLES = 13,
+    WINED3DMULTISAMPLE_14_SAMPLES = 14,
+    WINED3DMULTISAMPLE_15_SAMPLES = 15,
+    WINED3DMULTISAMPLE_16_SAMPLES = 16,
+    WINED3DMULTISAMPLE_FORCE_DWORD = 0xffffffff
+} WINED3DMULTISAMPLE_TYPE;
+typedef enum _WINED3DTEXTURESTAGESTATETYPE {
+    WINED3DTSS_COLOROP = 0,
+    WINED3DTSS_COLORARG1 = 1,
+    WINED3DTSS_COLORARG2 = 2,
+    WINED3DTSS_ALPHAOP = 3,
+    WINED3DTSS_ALPHAARG1 = 4,
+    WINED3DTSS_ALPHAARG2 = 5,
+    WINED3DTSS_BUMPENVMAT00 = 6,
+    WINED3DTSS_BUMPENVMAT01 = 7,
+    WINED3DTSS_BUMPENVMAT10 = 8,
+    WINED3DTSS_BUMPENVMAT11 = 9,
+    WINED3DTSS_TEXCOORDINDEX = 10,
+    WINED3DTSS_BUMPENVLSCALE = 11,
+    WINED3DTSS_BUMPENVLOFFSET = 12,
+    WINED3DTSS_TEXTURETRANSFORMFLAGS = 13,
+    WINED3DTSS_COLORARG0 = 14,
+    WINED3DTSS_ALPHAARG0 = 15,
+    WINED3DTSS_RESULTARG = 16,
+    WINED3DTSS_CONSTANT = 17,
+    WINED3DTSS_FORCE_DWORD = 0x7fffffff
+} WINED3DTEXTURESTAGESTATETYPE;
+#define WINED3D_HIGHEST_TEXTURE_STATE (WINED3DTSS_CONSTANT)
+
+typedef enum _WINED3DTEXTURETRANSFORMFLAGS {
+    WINED3DTTFF_DISABLE = 0,
+    WINED3DTTFF_COUNT1 = 1,
+    WINED3DTTFF_COUNT2 = 2,
+    WINED3DTTFF_COUNT3 = 3,
+    WINED3DTTFF_COUNT4 = 4,
+    WINED3DTTFF_PROJECTED = 256,
+    WINED3DTTFF_FORCE_DWORD = 0x7fffffff
+} WINED3DTEXTURETRANSFORMFLAGS;
+typedef enum _WINED3DTEXTUREOP {
+    WINED3DTOP_DISABLE = 1,
+    WINED3DTOP_SELECTARG1 = 2,
+    WINED3DTOP_SELECTARG2 = 3,
+    WINED3DTOP_MODULATE = 4,
+    WINED3DTOP_MODULATE2X = 5,
+    WINED3DTOP_MODULATE4X = 6,
+    WINED3DTOP_ADD = 7,
+    WINED3DTOP_ADDSIGNED = 8,
+    WINED3DTOP_ADDSIGNED2X = 9,
+    WINED3DTOP_SUBTRACT = 10,
+    WINED3DTOP_ADDSMOOTH = 11,
+    WINED3DTOP_BLENDDIFFUSEALPHA = 12,
+    WINED3DTOP_BLENDTEXTUREALPHA = 13,
+    WINED3DTOP_BLENDFACTORALPHA = 14,
+    WINED3DTOP_BLENDTEXTUREALPHAPM = 15,
+    WINED3DTOP_BLENDCURRENTALPHA = 16,
+    WINED3DTOP_PREMODULATE = 17,
+    WINED3DTOP_MODULATEALPHA_ADDCOLOR = 18,
+    WINED3DTOP_MODULATECOLOR_ADDALPHA = 19,
+    WINED3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
+    WINED3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
+    WINED3DTOP_BUMPENVMAP = 22,
+    WINED3DTOP_BUMPENVMAPLUMINANCE = 23,
+    WINED3DTOP_DOTPRODUCT3 = 24,
+    WINED3DTOP_MULTIPLYADD = 25,
+    WINED3DTOP_LERP = 26,
+    WINED3DTOP_FORCE_DWORD = 0x7fffffff
+} WINED3DTEXTUREOP;
+typedef enum _WINED3DTEXTUREADDRESS {
+    WINED3DTADDRESS_WRAP = 1,
+    WINED3DTADDRESS_MIRROR = 2,
+    WINED3DTADDRESS_CLAMP = 3,
+    WINED3DTADDRESS_BORDER = 4,
+    WINED3DTADDRESS_MIRRORONCE = 5,
+    WINED3DTADDRESS_FORCE_DWORD = 0x7fffffff
+} WINED3DTEXTUREADDRESS;
+typedef enum _WINED3DTRANSFORMSTATETYPE {
+    WINED3DTS_VIEW = 2,
+    WINED3DTS_PROJECTION = 3,
+    WINED3DTS_TEXTURE0 = 16,
+    WINED3DTS_TEXTURE1 = 17,
+    WINED3DTS_TEXTURE2 = 18,
+    WINED3DTS_TEXTURE3 = 19,
+    WINED3DTS_TEXTURE4 = 20,
+    WINED3DTS_TEXTURE5 = 21,
+    WINED3DTS_TEXTURE6 = 22,
+    WINED3DTS_TEXTURE7 = 23,
+    WINED3DTS_WORLD = 256,
+    WINED3DTS_WORLD1 = 257,
+    WINED3DTS_WORLD2 = 258,
+    WINED3DTS_WORLD3 = 259,
+    WINED3DTS_FORCE_DWORD = 0x7fffffff
+} WINED3DTRANSFORMSTATETYPE;
+#define WINED3DTS_WORLDMATRIX(index) (WINED3DTRANSFORMSTATETYPE)(index + 256)
+typedef enum _WINED3DBASISTYPE {
+    WINED3DBASIS_BEZIER = 0,
+    WINED3DBASIS_BSPLINE = 1,
+    WINED3DBASIS_INTERPOLATE = 2,
+    WINED3DBASIS_FORCE_DWORD = 0x7fffffff
+} WINED3DBASISTYPE;
+typedef enum _WINED3DCUBEMAP_FACES {
+    WINED3DCUBEMAP_FACE_POSITIVE_X = 0,
+    WINED3DCUBEMAP_FACE_NEGATIVE_X = 1,
+    WINED3DCUBEMAP_FACE_POSITIVE_Y = 2,
+    WINED3DCUBEMAP_FACE_NEGATIVE_Y = 3,
+    WINED3DCUBEMAP_FACE_POSITIVE_Z = 4,
+    WINED3DCUBEMAP_FACE_NEGATIVE_Z = 5,
+    WINED3DCUBEMAP_FACE_FORCE_DWORD = 0xffffffff
+} WINED3DCUBEMAP_FACES;
+typedef enum _WINED3DTEXTUREFILTERTYPE {
+    WINED3DTEXF_NONE = 0,
+    WINED3DTEXF_POINT = 1,
+    WINED3DTEXF_LINEAR = 2,
+    WINED3DTEXF_ANISOTROPIC = 3,
+    WINED3DTEXF_FLATCUBIC = 4,
+    WINED3DTEXF_GAUSSIANCUBIC = 5,
+    WINED3DTEXF_PYRAMIDALQUAD = 6,
+    WINED3DTEXF_GAUSSIANQUAD = 7,
+    WINED3DTEXF_FORCE_DWORD = 0x7fffffff
+} WINED3DTEXTUREFILTERTYPE;
+typedef enum _WINED3DRESOURCETYPE {
+    WINED3DRTYPE_SURFACE = 1,
+    WINED3DRTYPE_VOLUME = 2,
+    WINED3DRTYPE_TEXTURE = 3,
+    WINED3DRTYPE_VOLUMETEXTURE = 4,
+    WINED3DRTYPE_CUBETEXTURE = 5,
+    WINED3DRTYPE_BUFFER = 6,
+    WINED3DRTYPE_FORCE_DWORD = 0x7fffffff
+} WINED3DRESOURCETYPE;
+#define WINED3DRTYPECOUNT (WINED3DRTYPE_BUFFER + 1)
+
+typedef enum _WINED3DPOOL {
+    WINED3DPOOL_DEFAULT = 0,
+    WINED3DPOOL_MANAGED = 1,
+    WINED3DPOOL_SYSTEMMEM = 2,
+    WINED3DPOOL_SCRATCH = 3,
+    WINED3DPOOL_FORCE_DWORD = 0x7fffffff
+} WINED3DPOOL;
+typedef enum _WINED3DQUERYTYPE {
+    WINED3DQUERYTYPE_VCACHE = 4,
+    WINED3DQUERYTYPE_RESOURCEMANAGER = 5,
+    WINED3DQUERYTYPE_VERTEXSTATS = 6,
+    WINED3DQUERYTYPE_EVENT = 8,
+    WINED3DQUERYTYPE_OCCLUSION = 9,
+    WINED3DQUERYTYPE_TIMESTAMP = 10,
+    WINED3DQUERYTYPE_TIMESTAMPDISJOINT = 11,
+    WINED3DQUERYTYPE_TIMESTAMPFREQ = 12,
+    WINED3DQUERYTYPE_PIPELINETIMINGS = 13,
+    WINED3DQUERYTYPE_INTERFACETIMINGS = 14,
+    WINED3DQUERYTYPE_VERTEXTIMINGS = 15,
+    WINED3DQUERYTYPE_PIXELTIMINGS = 16,
+    WINED3DQUERYTYPE_BANDWIDTHTIMINGS = 17,
+    WINED3DQUERYTYPE_CACHEUTILIZATION = 18
+} WINED3DQUERYTYPE;
+#define WINED3DISSUE_BEGIN (1 << 1)
+
+#define WINED3DISSUE_END (1 << 0)
+
+#define WINED3DGETDATA_FLUSH (1 << 0)
+
+typedef enum _WINED3DSTATEBLOCKTYPE {
+    WINED3DSBT_INIT = 0,
+    WINED3DSBT_ALL = 1,
+    WINED3DSBT_PIXELSTATE = 2,
+    WINED3DSBT_VERTEXSTATE = 3,
+    WINED3DSBT_RECORDED = 4,
+    WINED3DSBT_FORCE_DWORD = 0xffffffff
+} WINED3DSTATEBLOCKTYPE;
+typedef enum _WINED3DDECLMETHOD {
+    WINED3DDECLMETHOD_DEFAULT = 0,
+    WINED3DDECLMETHOD_PARTIALU = 1,
+    WINED3DDECLMETHOD_PARTIALV = 2,
+    WINED3DDECLMETHOD_CROSSUV = 3,
+    WINED3DDECLMETHOD_UV = 4,
+    WINED3DDECLMETHOD_LOOKUP = 5,
+    WINED3DDECLMETHOD_LOOKUPPRESAMPLED = 6
+} WINED3DDECLMETHOD;
+typedef enum _WINED3DDECLUSAGE {
+    WINED3DDECLUSAGE_POSITION = 0,
+    WINED3DDECLUSAGE_BLENDWEIGHT = 1,
+    WINED3DDECLUSAGE_BLENDINDICES = 2,
+    WINED3DDECLUSAGE_NORMAL = 3,
+    WINED3DDECLUSAGE_PSIZE = 4,
+    WINED3DDECLUSAGE_TEXCOORD = 5,
+    WINED3DDECLUSAGE_TANGENT = 6,
+    WINED3DDECLUSAGE_BINORMAL = 7,
+    WINED3DDECLUSAGE_TESSFACTOR = 8,
+    WINED3DDECLUSAGE_POSITIONT = 9,
+    WINED3DDECLUSAGE_COLOR = 10,
+    WINED3DDECLUSAGE_FOG = 11,
+    WINED3DDECLUSAGE_DEPTH = 12,
+    WINED3DDECLUSAGE_SAMPLE = 13
+} WINED3DDECLUSAGE;
+typedef enum _WINED3DSURFTYPE {
+    SURFACE_UNKNOWN = 0,
+    SURFACE_OPENGL = 1,
+    SURFACE_GDI = 2
+} WINED3DSURFTYPE;
+enum wined3d_sysval_semantic {
+    WINED3D_SV_DEPTH = 0xffffffff,
+    WINED3D_SV_TARGET0 = 0,
+    WINED3D_SV_TARGET1 = 1,
+    WINED3D_SV_TARGET2 = 2,
+    WINED3D_SV_TARGET3 = 3,
+    WINED3D_SV_TARGET4 = 4,
+    WINED3D_SV_TARGET5 = 5,
+    WINED3D_SV_TARGET6 = 6,
+    WINED3D_SV_TARGET7 = 7
+};
+
+#define WINED3DCOLORWRITEENABLE_RED (1 << 0)
+
+#define WINED3DCOLORWRITEENABLE_GREEN (1 << 1)
+
+#define WINED3DCOLORWRITEENABLE_BLUE (1 << 2)
+
+#define WINED3DCOLORWRITEENABLE_ALPHA (1 << 3)
+
+#define WINED3DADAPTER_DEFAULT (0)
+
+#define WINED3DENUM_NO_WHQL_LEVEL (2)
+
+#define WINED3DPRESENT_BACK_BUFFER_MAX (3)
+
+#define WINED3DTSS_TCI_PASSTHRU (0x0)
+
+#define WINED3DTSS_TCI_CAMERASPACENORMAL (0x10000)
+
+#define WINED3DTSS_TCI_CAMERASPACEPOSITION (0x20000)
+
+#define WINED3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR (0x30000)
+
+#define WINED3DTSS_TCI_SPHEREMAP (0x40000)
+
+#define WINED3DTA_SELECTMASK (0xf)
+
+#define WINED3DTA_DIFFUSE (0x0)
+
+#define WINED3DTA_CURRENT (0x1)
+
+#define WINED3DTA_TEXTURE (0x2)
+
+#define WINED3DTA_TFACTOR (0x3)
+
+#define WINED3DTA_SPECULAR (0x4)
+
+#define WINED3DTA_TEMP (0x5)
+
+#define WINED3DTA_CONSTANT (0x6)
+
+#define WINED3DTA_COMPLEMENT (0x10)
+
+#define WINED3DTA_ALPHAREPLICATE (0x20)
+
+#define WINED3DPRESENTFLAG_LOCKABLE_BACKBUFFER (0x1)
+
+#define WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL (0x2)
+
+#define WINED3DPRESENTFLAG_DEVICECLIP (0x4)
+
+#define WINED3DPRESENTFLAG_VIDEO (0x10)
+
+#define WINED3DPRESENTFLAG_NOAUTOROTATE (0x20)
+
+#define WINED3DPRESENTFLAG_UNPRUNEDMODE (0x40)
+
+#define WINED3DDP_MAXTEXCOORD (8)
+
+#define WINED3DUSAGE_RENDERTARGET (0x1)
+
+#define WINED3DUSAGE_DEPTHSTENCIL (0x2)
+
+#define WINED3DUSAGE_WRITEONLY (0x8)
+
+#define WINED3DUSAGE_SOFTWAREPROCESSING (0x10)
+
+#define WINED3DUSAGE_DONOTCLIP (0x20)
+
+#define WINED3DUSAGE_POINTS (0x40)
+
+#define WINED3DUSAGE_RTPATCHES (0x80)
+
+#define WINED3DUSAGE_NPATCHES (0x100)
+
+#define WINED3DUSAGE_DYNAMIC (0x200)
+
+#define WINED3DUSAGE_AUTOGENMIPMAP (0x400)
+
+#define WINED3DUSAGE_DMAP (0x4000)
+
+#define WINED3DUSAGE_MASK (0x4fff)
+
+#define WINED3DUSAGE_STATICDECL (0x40000000)
+
+#define WINED3DUSAGE_OVERLAY (0x80000000)
+
+#define WINED3DUSAGE_QUERY_LEGACYBUMPMAP (0x8000)
+
+#define WINED3DUSAGE_QUERY_FILTER (0x20000)
+
+#define WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING (0x80000)
+
+#define WINED3DUSAGE_QUERY_SRGBREAD (0x10000)
+
+#define WINED3DUSAGE_QUERY_SRGBWRITE (0x40000)
+
+#define WINED3DUSAGE_QUERY_VERTEXTEXTURE (0x100000)
+
+#define WINED3DUSAGE_QUERY_WRAPANDMIP (0x200000)
+
+#define WINED3DUSAGE_QUERY_MASK (0x3f8000)
+
+#define WINED3DLOCK_READONLY (0x10)
+
+#define WINED3DLOCK_NOSYSLOCK (0x800)
+
+#define WINED3DLOCK_NOOVERWRITE (0x1000)
+
+#define WINED3DLOCK_DISCARD (0x2000)
+
+#define WINED3DLOCK_DONOTWAIT (0x4000)
+
+#define WINED3DLOCK_NO_DIRTY_UPDATE (0x8000)
+
+#define WINED3DPRESENT_RATE_DEFAULT (0x0)
+
+#define WINED3DPRESENT_INTERVAL_DEFAULT (0x0)
+
+#define WINED3DPRESENT_INTERVAL_ONE (0x1)
+
+#define WINED3DPRESENT_INTERVAL_TWO (0x2)
+
+#define WINED3DPRESENT_INTERVAL_THREE (0x4)
+
+#define WINED3DPRESENT_INTERVAL_FOUR (0x8)
+
+#define WINED3DPRESENT_INTERVAL_IMMEDIATE (0x80000000)
+
+#define WINED3DMAXUSERCLIPPLANES (32)
+
+#define WINED3DCLIPPLANE0 (1 << 0)
+
+#define WINED3DCLIPPLANE1 (1 << 1)
+
+#define WINED3DCLIPPLANE2 (1 << 2)
+
+#define WINED3DCLIPPLANE3 (1 << 3)
+
+#define WINED3DCLIPPLANE4 (1 << 4)
+
+#define WINED3DCLIPPLANE5 (1 << 5)
+
+#define WINED3DFVF_RESERVED0 (0x1)
+
+#define WINED3DFVF_POSITION_MASK (0x400e)
+
+#define WINED3DFVF_XYZ (0x2)
+
+#define WINED3DFVF_XYZRHW (0x4)
+
+#define WINED3DFVF_XYZB1 (0x6)
+
+#define WINED3DFVF_XYZB2 (0x8)
+
+#define WINED3DFVF_XYZB3 (0xa)
+
+#define WINED3DFVF_XYZB4 (0xc)
+
+#define WINED3DFVF_XYZB5 (0xe)
+
+#define WINED3DFVF_XYZW (0x4002)
+
+#define WINED3DFVF_NORMAL (0x10)
+
+#define WINED3DFVF_PSIZE (0x20)
+
+#define WINED3DFVF_DIFFUSE (0x40)
+
+#define WINED3DFVF_SPECULAR (0x80)
+
+#define WINED3DFVF_TEXCOUNT_MASK (0xf00)
+
+#define WINED3DFVF_TEXCOUNT_SHIFT (8)
+
+#define WINED3DFVF_TEX0 (0x0)
+
+#define WINED3DFVF_TEX1 (0x100)
+
+#define WINED3DFVF_TEX2 (0x200)
+
+#define WINED3DFVF_TEX3 (0x300)
+
+#define WINED3DFVF_TEX4 (0x400)
+
+#define WINED3DFVF_TEX5 (0x500)
+
+#define WINED3DFVF_TEX6 (0x600)
+
+#define WINED3DFVF_TEX7 (0x700)
+
+#define WINED3DFVF_TEX8 (0x800)
+
+#define WINED3DFVF_LASTBETA_UBYTE4 (0x1000)
+
+#define WINED3DFVF_LASTBETA_D3DCOLOR (0x8000)
+
+#define WINED3DFVF_RESERVED2 (0x6000)
+
+#define WINED3DFVF_TEXTUREFORMAT1 (3)
+
+#define WINED3DFVF_TEXTUREFORMAT2 (0)
+
+#define WINED3DFVF_TEXTUREFORMAT3 (1)
+
+#define WINED3DFVF_TEXTUREFORMAT4 (2)
+
+#define WINED3DFVF_TEXCOORDSIZE1(CoordIndex) (WINED3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
+#define WINED3DFVF_TEXCOORDSIZE2(CoordIndex) (WINED3DFVF_TEXTUREFORMAT2)
+#define WINED3DFVF_TEXCOORDSIZE3(CoordIndex) (WINED3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
+#define WINED3DFVF_TEXCOORDSIZE4(CoordIndex) (WINED3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
+#define WINED3DCLEAR_TARGET (0x1)
+
+#define WINED3DCLEAR_ZBUFFER (0x2)
+
+#define WINED3DCLEAR_STENCIL (0x4)
+
+#define WINED3DSTREAMSOURCE_INDEXEDDATA (1 << 30)
+
+#define WINED3DSTREAMSOURCE_INSTANCEDATA (2 << 30)
+
+#define WINED3DSPD_IUNKNOWN (0x1)
+
+#define WINED3DCREATE_FPU_PRESERVE (0x2)
+
+#define WINED3DCREATE_PUREDEVICE (0x10)
+
+#define WINED3DCREATE_SOFTWARE_VERTEXPROCESSING (0x20)
+
+#define WINED3DCREATE_HARDWARE_VERTEXPROCESSING (0x40)
+
+#define WINED3DCREATE_MIXED_VERTEXPROCESSING (0x80)
+
+#define WINED3DCREATE_DISABLE_DRIVER_MANAGEMENT (0x100)
+
+#define WINED3DCREATE_ADAPTERGROUP_DEVICE (0x200)
+
+#define WINED3DDMAPSAMPLER (0x100)
+
+#define WINED3DVERTEXTEXTURESAMPLER0 (WINED3DDMAPSAMPLER + 1)
+
+#define WINED3DVERTEXTEXTURESAMPLER1 (WINED3DDMAPSAMPLER + 2)
+
+#define WINED3DVERTEXTEXTURESAMPLER2 (WINED3DDMAPSAMPLER + 3)
+
+#define WINED3DVERTEXTEXTURESAMPLER3 (WINED3DDMAPSAMPLER + 4)
+
+#define WINED3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD (0x20)
+
+#define WINED3DCAPS3_LINEAR_TO_SRGB_PRESENTATION (0x80)
+
+#define WINED3DCAPS3_COPY_TO_VIDMEM (0x100)
+
+#define WINED3DCAPS3_COPY_TO_SYSTEMMEM (0x200)
+
+#define WINED3DCAPS3_RESERVED (0x8000001f)
+
+#define WINED3DDEVCAPS2_STREAMOFFSET (0x1)
+
+#define WINED3DDEVCAPS2_DMAPNPATCH (0x2)
+
+#define WINED3DDEVCAPS2_ADAPTIVETESSRTPATCH (0x4)
+
+#define WINED3DDEVCAPS2_ADAPTIVETESSNPATCH (0x8)
+
+#define WINED3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES (0x10)
+
+#define WINED3DDEVCAPS2_PRESAMPLEDDMAPNPATCH (0x20)
+
+#define WINED3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET (0x40)
+
+#define WINED3DDTCAPS_UBYTE4 (0x1)
+
+#define WINED3DDTCAPS_UBYTE4N (0x2)
+
+#define WINED3DDTCAPS_SHORT2N (0x4)
+
+#define WINED3DDTCAPS_SHORT4N (0x8)
+
+#define WINED3DDTCAPS_USHORT2N (0x10)
+
+#define WINED3DDTCAPS_USHORT4N (0x20)
+
+#define WINED3DDTCAPS_UDEC3 (0x40)
+
+#define WINED3DDTCAPS_DEC3N (0x80)
+
+#define WINED3DDTCAPS_FLOAT16_2 (0x100)
+
+#define WINED3DDTCAPS_FLOAT16_4 (0x200)
+
+#define WINED3DFVFCAPS_TEXCOORDCOUNTMASK (0xffff)
+
+#define WINED3DFVFCAPS_DONOTSTRIPELEMENTS (0x80000)
+
+#define WINED3DFVFCAPS_PSIZE (0x100000)
+
+#define WINED3DLINECAPS_TEXTURE (0x1)
+
+#define WINED3DLINECAPS_ZTEST (0x2)
+
+#define WINED3DLINECAPS_BLEND (0x4)
+
+#define WINED3DLINECAPS_ALPHACMP (0x8)
+
+#define WINED3DLINECAPS_FOG (0x10)
+
+#define WINED3DLINECAPS_ANTIALIAS (0x20)
+
+#define WINED3DMAX30SHADERINSTRUCTIONS (32768)
+
+#define WINED3DMIN30SHADERINSTRUCTIONS (512)
+
+#define WINED3DPBLENDCAPS_ZERO (0x1)
+
+#define WINED3DPBLENDCAPS_ONE (0x2)
+
+#define WINED3DPBLENDCAPS_SRCCOLOR (0x4)
+
+#define WINED3DPBLENDCAPS_INVSRCCOLOR (0x8)
+
+#define WINED3DPBLENDCAPS_SRCALPHA (0x10)
+
+#define WINED3DPBLENDCAPS_INVSRCALPHA (0x20)
+
+#define WINED3DPBLENDCAPS_DESTALPHA (0x40)
+
+#define WINED3DPBLENDCAPS_INVDESTALPHA (0x80)
+
+#define WINED3DPBLENDCAPS_DESTCOLOR (0x100)
+
+#define WINED3DPBLENDCAPS_INVDESTCOLOR (0x200)
+
+#define WINED3DPBLENDCAPS_SRCALPHASAT (0x400)
+
+#define WINED3DPBLENDCAPS_BOTHSRCALPHA (0x800)
+
+#define WINED3DPBLENDCAPS_BOTHINVSRCALPHA (0x1000)
+
+#define WINED3DPBLENDCAPS_BLENDFACTOR (0x2000)
+
+#define WINED3DPCMPCAPS_NEVER (0x1)
+
+#define WINED3DPCMPCAPS_LESS (0x2)
+
+#define WINED3DPCMPCAPS_EQUAL (0x4)
+
+#define WINED3DPCMPCAPS_LESSEQUAL (0x8)
+
+#define WINED3DPCMPCAPS_GREATER (0x10)
+
+#define WINED3DPCMPCAPS_NOTEQUAL (0x20)
+
+#define WINED3DPCMPCAPS_GREATEREQUAL (0x40)
+
+#define WINED3DPCMPCAPS_ALWAYS (0x80)
+
+#define WINED3DPMISCCAPS_MASKZ (0x2)
+
+#define WINED3DPMISCCAPS_LINEPATTERNREP (0x4)
+
+#define WINED3DPMISCCAPS_CULLNONE (0x10)
+
+#define WINED3DPMISCCAPS_CULLCW (0x20)
+
+#define WINED3DPMISCCAPS_CULLCCW (0x40)
+
+#define WINED3DPMISCCAPS_COLORWRITEENABLE (0x80)
+
+#define WINED3DPMISCCAPS_CLIPPLANESCALEDPOINTS (0x100)
+
+#define WINED3DPMISCCAPS_CLIPTLVERTS (0x200)
+
+#define WINED3DPMISCCAPS_TSSARGTEMP (0x400)
+
+#define WINED3DPMISCCAPS_BLENDOP (0x800)
+
+#define WINED3DPMISCCAPS_NULLREFERENCE (0x1000)
+
+#define WINED3DPMISCCAPS_INDEPENDENTWRITEMASKS (0x4000)
+
+#define WINED3DPMISCCAPS_PERSTAGECONSTANT (0x8000)
+
+#define WINED3DPMISCCAPS_FOGANDSPECULARALPHA (0x10000)
+
+#define WINED3DPMISCCAPS_SEPARATEALPHABLEND (0x20000)
+
+#define WINED3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS (0x40000)
+
+#define WINED3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING (0x80000)
+
+#define WINED3DPMISCCAPS_FOGVERTEXCLAMPED (0x100000)
+
+#define WINED3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH (24)
+
+#define WINED3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH (0)
+
+#define WINED3DPS20_MAX_NUMTEMPS (32)
+
+#define WINED3DPS20_MIN_NUMTEMPS (12)
+
+#define WINED3DPS20_MAX_STATICFLOWCONTROLDEPTH (4)
+
+#define WINED3DPS20_MIN_STATICFLOWCONTROLDEPTH (0)
+
+#define WINED3DPS20_MAX_NUMINSTRUCTIONSLOTS (512)
+
+#define WINED3DPS20_MIN_NUMINSTRUCTIONSLOTS (96)
+
+#define WINED3DPS20CAPS_ARBITRARYSWIZZLE (0x1)
+
+#define WINED3DPS20CAPS_GRADIENTINSTRUCTIONS (0x2)
+
+#define WINED3DPS20CAPS_PREDICATION (0x4)
+
+#define WINED3DPS20CAPS_NODEPENDENTREADLIMIT (0x8)
+
+#define WINED3DPS20CAPS_NOTEXINSTRUCTIONLIMIT (0x10)
+
+#define WINED3DPTADDRESSCAPS_WRAP (0x1)
+
+#define WINED3DPTADDRESSCAPS_MIRROR (0x2)
+
+#define WINED3DPTADDRESSCAPS_CLAMP (0x4)
+
+#define WINED3DPTADDRESSCAPS_BORDER (0x8)
+
+#define WINED3DPTADDRESSCAPS_INDEPENDENTUV (0x10)
+
+#define WINED3DPTADDRESSCAPS_MIRRORONCE (0x20)
+
+#define WINED3DSTENCILCAPS_KEEP (0x1)
+
+#define WINED3DSTENCILCAPS_ZERO (0x2)
+
+#define WINED3DSTENCILCAPS_REPLACE (0x4)
+
+#define WINED3DSTENCILCAPS_INCRSAT (0x8)
+
+#define WINED3DSTENCILCAPS_DECRSAT (0x10)
+
+#define WINED3DSTENCILCAPS_INVERT (0x20)
+
+#define WINED3DSTENCILCAPS_INCR (0x40)
+
+#define WINED3DSTENCILCAPS_DECR (0x80)
+
+#define WINED3DSTENCILCAPS_TWOSIDED (0x100)
+
+#define WINED3DTEXOPCAPS_DISABLE (0x1)
+
+#define WINED3DTEXOPCAPS_SELECTARG1 (0x2)
+
+#define WINED3DTEXOPCAPS_SELECTARG2 (0x4)
+
+#define WINED3DTEXOPCAPS_MODULATE (0x8)
+
+#define WINED3DTEXOPCAPS_MODULATE2X (0x10)
+
+#define WINED3DTEXOPCAPS_MODULATE4X (0x20)
+
+#define WINED3DTEXOPCAPS_ADD (0x40)
+
+#define WINED3DTEXOPCAPS_ADDSIGNED (0x80)
+
+#define WINED3DTEXOPCAPS_ADDSIGNED2X (0x100)
+
+#define WINED3DTEXOPCAPS_SUBTRACT (0x200)
+
+#define WINED3DTEXOPCAPS_ADDSMOOTH (0x400)
+
+#define WINED3DTEXOPCAPS_BLENDDIFFUSEALPHA (0x800)
+
+#define WINED3DTEXOPCAPS_BLENDTEXTUREALPHA (0x1000)
+
+#define WINED3DTEXOPCAPS_BLENDFACTORALPHA (0x2000)
+
+#define WINED3DTEXOPCAPS_BLENDTEXTUREALPHAPM (0x4000)
+
+#define WINED3DTEXOPCAPS_BLENDCURRENTALPHA (0x8000)
+
+#define WINED3DTEXOPCAPS_PREMODULATE (0x10000)
+
+#define WINED3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR (0x20000)
+
+#define WINED3DTEXOPCAPS_MODULATECOLOR_ADDALPHA (0x40000)
+
+#define WINED3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR (0x80000)
+
+#define WINED3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA (0x100000)
+
+#define WINED3DTEXOPCAPS_BUMPENVMAP (0x200000)
+
+#define WINED3DTEXOPCAPS_BUMPENVMAPLUMINANCE (0x400000)
+
+#define WINED3DTEXOPCAPS_DOTPRODUCT3 (0x800000)
+
+#define WINED3DTEXOPCAPS_MULTIPLYADD (0x1000000)
+
+#define WINED3DTEXOPCAPS_LERP (0x2000000)
+
+#define WINED3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH (24)
+
+#define WINED3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH (0)
+
+#define WINED3DVS20_MAX_NUMTEMPS (32)
+
+#define WINED3DVS20_MIN_NUMTEMPS (12)
+
+#define WINED3DVS20_MAX_STATICFLOWCONTROLDEPTH (4)
+
+#define WINED3DVS20_MIN_STATICFLOWCONTROLDEPTH (1)
+
+#define WINED3DVS20CAPS_PREDICATION (0x1)
+
+#define WINED3DCAPS2_NO2DDURING3DSCENE (0x2)
+
+#define WINED3DCAPS2_FULLSCREENGAMMA (0x20000)
+
+#define WINED3DCAPS2_CANRENDERWINDOWED (0x80000)
+
+#define WINED3DCAPS2_CANCALIBRATEGAMMA (0x100000)
+
+#define WINED3DCAPS2_RESERVED (0x2000000)
+
+#define WINED3DCAPS2_CANMANAGERESOURCE (0x10000000)
+
+#define WINED3DCAPS2_DYNAMICTEXTURES (0x20000000)
+
+#define WINED3DCAPS2_CANAUTOGENMIPMAP (0x40000000)
+
+#define WINED3DPRASTERCAPS_DITHER (0x1)
+
+#define WINED3DPRASTERCAPS_ROP2 (0x2)
+
+#define WINED3DPRASTERCAPS_XOR (0x4)
+
+#define WINED3DPRASTERCAPS_PAT (0x8)
+
+#define WINED3DPRASTERCAPS_ZTEST (0x10)
+
+#define WINED3DPRASTERCAPS_SUBPIXEL (0x20)
+
+#define WINED3DPRASTERCAPS_SUBPIXELX (0x40)
+
+#define WINED3DPRASTERCAPS_FOGVERTEX (0x80)
+
+#define WINED3DPRASTERCAPS_FOGTABLE (0x100)
+
+#define WINED3DPRASTERCAPS_STIPPLE (0x200)
+
+#define WINED3DPRASTERCAPS_ANTIALIASSORTDEPENDENT (0x400)
+
+#define WINED3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT (0x800)
+
+#define WINED3DPRASTERCAPS_ANTIALIASEDGES (0x1000)
+
+#define WINED3DPRASTERCAPS_MIPMAPLODBIAS (0x2000)
+
+#define WINED3DPRASTERCAPS_ZBIAS (0x4000)
+
+#define WINED3DPRASTERCAPS_ZBUFFERLESSHSR (0x8000)
+
+#define WINED3DPRASTERCAPS_FOGRANGE (0x10000)
+
+#define WINED3DPRASTERCAPS_ANISOTROPY (0x20000)
+
+#define WINED3DPRASTERCAPS_WBUFFER (0x40000)
+
+#define WINED3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT (0x80000)
+
+#define WINED3DPRASTERCAPS_WFOG (0x100000)
+
+#define WINED3DPRASTERCAPS_ZFOG (0x200000)
+
+#define WINED3DPRASTERCAPS_COLORPERSPECTIVE (0x400000)
+
+#define WINED3DPRASTERCAPS_SCISSORTEST (0x1000000)
+
+#define WINED3DPRASTERCAPS_SLOPESCALEDEPTHBIAS (0x2000000)
+
+#define WINED3DPRASTERCAPS_DEPTHBIAS (0x4000000)
+
+#define WINED3DPRASTERCAPS_MULTISAMPLE_TOGGLE (0x8000000)
+
+#define WINED3DPSHADECAPS_COLORFLATMONO (0x1)
+
+#define WINED3DPSHADECAPS_COLORFLATRGB (0x2)
+
+#define WINED3DPSHADECAPS_COLORGOURAUDMONO (0x4)
+
+#define WINED3DPSHADECAPS_COLORGOURAUDRGB (0x8)
+
+#define WINED3DPSHADECAPS_COLORPHONGMONO (0x10)
+
+#define WINED3DPSHADECAPS_COLORPHONGRGB (0x20)
+
+#define WINED3DPSHADECAPS_SPECULARFLATMONO (0x40)
+
+#define WINED3DPSHADECAPS_SPECULARFLATRGB (0x80)
+
+#define WINED3DPSHADECAPS_SPECULARGOURAUDMONO (0x100)
+
+#define WINED3DPSHADECAPS_SPECULARGOURAUDRGB (0x200)
+
+#define WINED3DPSHADECAPS_SPECULARPHONGMONO (0x400)
+
+#define WINED3DPSHADECAPS_SPECULARPHONGRGB (0x800)
+
+#define WINED3DPSHADECAPS_ALPHAFLATBLEND (0x1000)
+
+#define WINED3DPSHADECAPS_ALPHAFLATSTIPPLED (0x2000)
+
+#define WINED3DPSHADECAPS_ALPHAGOURAUDBLEND (0x4000)
+
+#define WINED3DPSHADECAPS_ALPHAGOURAUDSTIPPLED (0x8000)
+
+#define WINED3DPSHADECAPS_ALPHAPHONGBLEND (0x10000)
+
+#define WINED3DPSHADECAPS_ALPHAPHONGSTIPPLED (0x20000)
+
+#define WINED3DPSHADECAPS_FOGFLAT (0x40000)
+
+#define WINED3DPSHADECAPS_FOGGOURAUD (0x80000)
+
+#define WINED3DPSHADECAPS_FOGPHONG (0x100000)
+
+#define WINED3DPTEXTURECAPS_PERSPECTIVE (0x1)
+
+#define WINED3DPTEXTURECAPS_POW2 (0x2)
+
+#define WINED3DPTEXTURECAPS_ALPHA (0x4)
+
+#define WINED3DPTEXTURECAPS_TRANSPARENCY (0x8)
+
+#define WINED3DPTEXTURECAPS_BORDER (0x10)
+
+#define WINED3DPTEXTURECAPS_SQUAREONLY (0x20)
+
+#define WINED3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE (0x40)
+
+#define WINED3DPTEXTURECAPS_ALPHAPALETTE (0x80)
+
+#define WINED3DPTEXTURECAPS_NONPOW2CONDITIONAL (0x100)
+
+#define WINED3DPTEXTURECAPS_PROJECTED (0x400)
+
+#define WINED3DPTEXTURECAPS_CUBEMAP (0x800)
+
+#define WINED3DPTEXTURECAPS_COLORKEYBLEND (0x1000)
+
+#define WINED3DPTEXTURECAPS_VOLUMEMAP (0x2000)
+
+#define WINED3DPTEXTURECAPS_MIPMAP (0x4000)
+
+#define WINED3DPTEXTURECAPS_MIPVOLUMEMAP (0x8000)
+
+#define WINED3DPTEXTURECAPS_MIPCUBEMAP (0x10000)
+
+#define WINED3DPTEXTURECAPS_CUBEMAP_POW2 (0x20000)
+
+#define WINED3DPTEXTURECAPS_VOLUMEMAP_POW2 (0x40000)
+
+#define WINED3DPTEXTURECAPS_NOPROJECTEDBUMPENV (0x200000)
+
+#define WINED3DPTFILTERCAPS_NEAREST (0x1)
+
+#define WINED3DPTFILTERCAPS_LINEAR (0x2)
+
+#define WINED3DPTFILTERCAPS_MIPNEAREST (0x4)
+
+#define WINED3DPTFILTERCAPS_MIPLINEAR (0x8)
+
+#define WINED3DPTFILTERCAPS_LINEARMIPNEAREST (0x10)
+
+#define WINED3DPTFILTERCAPS_LINEARMIPLINEAR (0x20)
+
+#define WINED3DPTFILTERCAPS_MINFPOINT (0x100)
+
+#define WINED3DPTFILTERCAPS_MINFLINEAR (0x200)
+
+#define WINED3DPTFILTERCAPS_MINFANISOTROPIC (0x400)
+
+#define WINED3DPTFILTERCAPS_MIPFPOINT (0x10000)
+
+#define WINED3DPTFILTERCAPS_MIPFLINEAR (0x20000)
+
+#define WINED3DPTFILTERCAPS_MAGFPOINT (0x1000000)
+
+#define WINED3DPTFILTERCAPS_MAGFLINEAR (0x2000000)
+
+#define WINED3DPTFILTERCAPS_MAGFANISOTROPIC (0x4000000)
+
+#define WINED3DPTFILTERCAPS_MAGFPYRAMIDALQUAD (0x8000000)
+
+#define WINED3DPTFILTERCAPS_MAGFGAUSSIANQUAD (0x10000000)
+
+#define WINED3DVTXPCAPS_TEXGEN (0x1)
+
+#define WINED3DVTXPCAPS_MATERIALSOURCE7 (0x2)
+
+#define WINED3DVTXPCAPS_VERTEXFOG (0x4)
+
+#define WINED3DVTXPCAPS_DIRECTIONALLIGHTS (0x8)
+
+#define WINED3DVTXPCAPS_POSITIONALLIGHTS (0x10)
+
+#define WINED3DVTXPCAPS_LOCALVIEWER (0x20)
+
+#define WINED3DVTXPCAPS_TWEENING (0x40)
+
+#define WINED3DVTXPCAPS_TEXGEN_SPHEREMAP (0x100)
+
+#define WINED3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER (0x200)
+
+#define WINED3DCURSORCAPS_COLOR (0x1)
+
+#define WINED3DCURSORCAPS_LOWRES (0x2)
+
+#define WINED3DDEVCAPS_FLOATTLVERTEX (0x1)
+
+#define WINED3DDEVCAPS_SORTINCREASINGZ (0x2)
+
+#define WINED3DDEVCAPS_SORTDECREASINGZ (0x4)
+
+#define WINED3DDEVCAPS_SORTEXACT (0x8)
+
+#define WINED3DDEVCAPS_EXECUTESYSTEMMEMORY (0x10)
+
+#define WINED3DDEVCAPS_EXECUTEVIDEOMEMORY (0x20)
+
+#define WINED3DDEVCAPS_TLVERTEXSYSTEMMEMORY (0x40)
+
+#define WINED3DDEVCAPS_TLVERTEXVIDEOMEMORY (0x80)
+
+#define WINED3DDEVCAPS_TEXTURESYSTEMMEMORY (0x100)
+
+#define WINED3DDEVCAPS_TEXTUREVIDEOMEMORY (0x200)
+
+#define WINED3DDEVCAPS_DRAWPRIMTLVERTEX (0x400)
+
+#define WINED3DDEVCAPS_CANRENDERAFTERFLIP (0x800)
+
+#define WINED3DDEVCAPS_TEXTURENONLOCALVIDMEM (0x1000)
+
+#define WINED3DDEVCAPS_DRAWPRIMITIVES2 (0x2000)
+
+#define WINED3DDEVCAPS_SEPARATETEXTUREMEMORIES (0x4000)
+
+#define WINED3DDEVCAPS_DRAWPRIMITIVES2EX (0x8000)
+
+#define WINED3DDEVCAPS_HWTRANSFORMANDLIGHT (0x10000)
+
+#define WINED3DDEVCAPS_CANBLTSYSTONONLOCAL (0x20000)
+
+#define WINED3DDEVCAPS_HWRASTERIZATION (0x80000)
+
+#define WINED3DDEVCAPS_PUREDEVICE (0x100000)
+
+#define WINED3DDEVCAPS_QUINTICRTPATCHES (0x200000)
+
+#define WINED3DDEVCAPS_RTPATCHES (0x400000)
+
+#define WINED3DDEVCAPS_RTPATCHHANDLEZERO (0x800000)
+
+#define WINED3DDEVCAPS_NPATCHES (0x1000000)
+
+#define WINEDDBLTFX_ARITHSTRETCHY (0x1)
+
+#define WINEDDBLTFX_MIRRORLEFTRIGHT (0x2)
+
+#define WINEDDBLTFX_MIRRORUPDOWN (0x4)
+
+#define WINEDDBLTFX_NOTEARING (0x8)
+
+#define WINEDDBLTFX_ROTATE180 (0x10)
+
+#define WINEDDBLTFX_ROTATE270 (0x20)
+
+#define WINEDDBLTFX_ROTATE90 (0x40)
+
+#define WINEDDBLTFX_ZBUFFERRANGE (0x80)
+
+#define WINEDDBLTFX_ZBUFFERBASEDEST (0x100)
+
+#define WINEDDBLT_ALPHADEST (0x1)
+
+#define WINEDDBLT_ALPHADESTCONSTOVERRIDE (0x2)
+
+#define WINEDDBLT_ALPHADESTNEG (0x4)
+
+#define WINEDDBLT_ALPHADESTSURFACEOVERRIDE (0x8)
+
+#define WINEDDBLT_ALPHAEDGEBLEND (0x10)
+
+#define WINEDDBLT_ALPHASRC (0x20)
+
+#define WINEDDBLT_ALPHASRCCONSTOVERRIDE (0x40)
+
+#define WINEDDBLT_ALPHASRCNEG (0x80)
+
+#define WINEDDBLT_ALPHASRCSURFACEOVERRIDE (0x100)
+
+#define WINEDDBLT_ASYNC (0x200)
+
+#define WINEDDBLT_COLORFILL (0x400)
+
+#define WINEDDBLT_DDFX (0x800)
+
+#define WINEDDBLT_DDROPS (0x1000)
+
+#define WINEDDBLT_KEYDEST (0x2000)
+
+#define WINEDDBLT_KEYDESTOVERRIDE (0x4000)
+
+#define WINEDDBLT_KEYSRC (0x8000)
+
+#define WINEDDBLT_KEYSRCOVERRIDE (0x10000)
+
+#define WINEDDBLT_ROP (0x20000)
+
+#define WINEDDBLT_ROTATIONANGLE (0x40000)
+
+#define WINEDDBLT_ZBUFFER (0x80000)
+
+#define WINEDDBLT_ZBUFFERDESTCONSTOVERRIDE (0x100000)
+
+#define WINEDDBLT_ZBUFFERDESTOVERRIDE (0x200000)
+
+#define WINEDDBLT_ZBUFFERSRCCONSTOVERRIDE (0x400000)
+
+#define WINEDDBLT_ZBUFFERSRCOVERRIDE (0x800000)
+
+#define WINEDDBLT_WAIT (0x1000000)
+
+#define WINEDDBLT_DEPTHFILL (0x2000000)
+
+#define WINEDDBLT_DONOTWAIT (0x8000000)
+
+#define WINEDDBLTFAST_NOCOLORKEY (0x0)
+
+#define WINEDDBLTFAST_SRCCOLORKEY (0x1)
+
+#define WINEDDBLTFAST_DESTCOLORKEY (0x2)
+
+#define WINEDDBLTFAST_WAIT (0x10)
+
+#define WINEDDBLTFAST_DONOTWAIT (0x20)
+
+#define WINEDDSD_CAPS (0x1)
+
+#define WINEDDSD_HEIGHT (0x2)
+
+#define WINEDDSD_WIDTH (0x4)
+
+#define WINEDDSD_PITCH (0x8)
+
+#define WINEDDSD_BACKBUFFERCOUNT (0x20)
+
+#define WINEDDSD_ZBUFFERBITDEPTH (0x40)
+
+#define WINEDDSD_ALPHABITDEPTH (0x80)
+
+#define WINEDDSD_LPSURFACE (0x800)
+
+#define WINEDDSD_PIXELFORMAT (0x1000)
+
+#define WINEDDSD_CKDESTOVERLAY (0x2000)
+
+#define WINEDDSD_CKDESTBLT (0x4000)
+
+#define WINEDDSD_CKSRCOVERLAY (0x8000)
+
+#define WINEDDSD_CKSRCBLT (0x10000)
+
+#define WINEDDSD_MIPMAPCOUNT (0x20000)
+
+#define WINEDDSD_REFRESHRATE (0x40000)
+
+#define WINEDDSD_LINEARSIZE (0x80000)
+
+#define WINEDDSD_TEXTURESTAGE (0x100000)
+
+#define WINEDDSD_FVF (0x200000)
+
+#define WINEDDSD_SRCVBHANDLE (0x400000)
+
+#define WINEDDSD_ALL (0x7ff9ee)
+
+#define WINEDDCKEY_COLORSPACE (0x1)
+
+#define WINEDDCKEY_DESTBLT (0x2)
+
+#define WINEDDCKEY_DESTOVERLAY (0x4)
+
+#define WINEDDCKEY_SRCBLT (0x8)
+
+#define WINEDDCKEY_SRCOVERLAY (0x10)
+
+#define WINEDDGBS_CANBLT (0x1)
+
+#define WINEDDGBS_ISBLTDONE (0x2)
+
+#define WINEDDGFS_CANFLIP (0x1)
+
+#define WINEDDGFS_ISFLIPDONE (0x2)
+
+#define WINEDDFLIP_WAIT (0x1)
+
+#define WINEDDFLIP_EVEN (0x2)
+
+#define WINEDDFLIP_ODD (0x4)
+
+#define WINEDDFLIP_NOVSYNC (0x8)
+
+#define WINEDDFLIP_STEREO (0x10)
+
+#define WINEDDFLIP_DONOTWAIT (0x20)
+
+#define WINEDDFLIP_INTERVAL2 (0x2000000)
+
+#define WINEDDFLIP_INTERVAL3 (0x3000000)
+
+#define WINEDDFLIP_INTERVAL4 (0x4000000)
+
+#define WINEDDOVER_ALPHADEST (0x1)
+
+#define WINEDDOVER_ALPHADESTCONSTOVERRIDE (0x2)
+
+#define WINEDDOVER_ALPHADESTNEG (0x4)
+
+#define WINEDDOVER_ALPHADESTSURFACEOVERRIDE (0x8)
+
+#define WINEDDOVER_ALPHAEDGEBLEND (0x10)
+
+#define WINEDDOVER_ALPHASRC (0x20)
+
+#define WINEDDOVER_ALPHASRCCONSTOVERRIDE (0x40)
+
+#define WINEDDOVER_ALPHASRCNEG (0x80)
+
+#define WINEDDOVER_ALPHASRCSURFACEOVERRIDE (0x100)
+
+#define WINEDDOVER_HIDE (0x200)
+
+#define WINEDDOVER_KEYDEST (0x400)
+
+#define WINEDDOVER_KEYDESTOVERRIDE (0x800)
+
+#define WINEDDOVER_KEYSRC (0x1000)
+
+#define WINEDDOVER_KEYSRCOVERRIDE (0x2000)
+
+#define WINEDDOVER_SHOW (0x4000)
+
+#define WINEDDOVER_ADDDIRTYRECT (0x8000)
+
+#define WINEDDOVER_REFRESHDIRTYRECTS (0x10000)
+
+#define WINEDDOVER_REFRESHALL (0x20000)
+
+#define WINEDDOVER_DDFX (0x80000)
+
+#define WINEDDOVER_AUTOFLIP (0x100000)
+
+#define WINEDDOVER_BOB (0x200000)
+
+#define WINEDDOVER_OVERRIDEBOBWEAVE (0x400000)
+
+#define WINEDDOVER_INTERLEAVED (0x800000)
+
+#define WINEDDSCAPS_RESERVED1 (0x1)
+
+#define WINEDDSCAPS_ALPHA (0x2)
+
+#define WINEDDSCAPS_BACKBUFFER (0x4)
+
+#define WINEDDSCAPS_COMPLEX (0x8)
+
+#define WINEDDSCAPS_FLIP (0x10)
+
+#define WINEDDSCAPS_FRONTBUFFER (0x20)
+
+#define WINEDDSCAPS_OFFSCREENPLAIN (0x40)
+
+#define WINEDDSCAPS_OVERLAY (0x80)
+
+#define WINEDDSCAPS_PALETTE (0x100)
+
+#define WINEDDSCAPS_PRIMARYSURFACE (0x200)
+
+#define WINEDDSCAPS_PRIMARYSURFACELEFT (0x400)
+
+#define WINEDDSCAPS_SYSTEMMEMORY (0x800)
+
+#define WINEDDSCAPS_TEXTURE (0x1000)
+
+#define WINEDDSCAPS_3DDEVICE (0x2000)
+
+#define WINEDDSCAPS_VIDEOMEMORY (0x4000)
+
+#define WINEDDSCAPS_VISIBLE (0x8000)
+
+#define WINEDDSCAPS_WRITEONLY (0x10000)
+
+#define WINEDDSCAPS_ZBUFFER (0x20000)
+
+#define WINEDDSCAPS_OWNDC (0x40000)
+
+#define WINEDDSCAPS_LIVEVIDEO (0x80000)
+
+#define WINEDDSCAPS_HWCODEC (0x100000)
+
+#define WINEDDSCAPS_MODEX (0x200000)
+
+#define WINEDDSCAPS_MIPMAP (0x400000)
+
+#define WINEDDSCAPS_RESERVED2 (0x800000)
+
+#define WINEDDSCAPS_ALLOCONLOAD (0x4000000)
+
+#define WINEDDSCAPS_VIDEOPORT (0x8000000)
+
+#define WINEDDSCAPS_LOCALVIDMEM (0x10000000)
+
+#define WINEDDSCAPS_NONLOCALVIDMEM (0x20000000)
+
+#define WINEDDSCAPS_STANDARDVGAMODE (0x40000000)
+
+#define WINEDDSCAPS_OPTIMIZED (0x80000000)
+
+#define WINEDDCKEYCAPS_DESTBLT (0x1)
+
+#define WINEDDCKEYCAPS_DESTBLTCLRSPACE (0x2)
+
+#define WINEDDCKEYCAPS_DESTBLTCLRSPACEYUV (0x4)
+
+#define WINEDDCKEYCAPS_DESTBLTYUV (0x8)
+
+#define WINEDDCKEYCAPS_DESTOVERLAY (0x10)
+
+#define WINEDDCKEYCAPS_DESTOVERLAYCLRSPACE (0x20)
+
+#define WINEDDCKEYCAPS_DESTOVERLAYCLRSPACEYUV (0x40)
+
+#define WINEDDCKEYCAPS_DESTOVERLAYONEACTIVE (0x80)
+
+#define WINEDDCKEYCAPS_DESTOVERLAYYUV (0x100)
+
+#define WINEDDCKEYCAPS_SRCBLT (0x200)
+
+#define WINEDDCKEYCAPS_SRCBLTCLRSPACE (0x400)
+
+#define WINEDDCKEYCAPS_SRCBLTCLRSPACEYUV (0x800)
+
+#define WINEDDCKEYCAPS_SRCBLTYUV (0x1000)
+
+#define WINEDDCKEYCAPS_SRCOVERLAY (0x2000)
+
+#define WINEDDCKEYCAPS_SRCOVERLAYCLRSPACE (0x4000)
+
+#define WINEDDCKEYCAPS_SRCOVERLAYCLRSPACEYUV (0x8000)
+
+#define WINEDDCKEYCAPS_SRCOVERLAYONEACTIVE (0x10000)
+
+#define WINEDDCKEYCAPS_SRCOVERLAYYUV (0x20000)
+
+#define WINEDDCKEYCAPS_NOCOSTOVERLAY (0x40000)
+
+#define WINEDDFXCAPS_BLTALPHA (0x1)
+
+#define WINEDDFXCAPS_OVERLAYALPHA (0x4)
+
+#define WINEDDFXCAPS_BLTARITHSTRETCHYN (0x10)
+
+#define WINEDDFXCAPS_BLTARITHSTRETCHY (0x20)
+
+#define WINEDDFXCAPS_BLTMIRRORLEFTRIGHT (0x40)
+
+#define WINEDDFXCAPS_BLTMIRRORUPDOWN (0x80)
+
+#define WINEDDFXCAPS_BLTROTATION (0x100)
+
+#define WINEDDFXCAPS_BLTROTATION90 (0x200)
+
+#define WINEDDFXCAPS_BLTSHRINKX (0x400)
+
+#define WINEDDFXCAPS_BLTSHRINKXN (0x800)
+
+#define WINEDDFXCAPS_BLTSHRINKY (0x1000)
+
+#define WINEDDFXCAPS_BLTSHRINKYN (0x2000)
+
+#define WINEDDFXCAPS_BLTSTRETCHX (0x4000)
+
+#define WINEDDFXCAPS_BLTSTRETCHXN (0x8000)
+
+#define WINEDDFXCAPS_BLTSTRETCHY (0x10000)
+
+#define WINEDDFXCAPS_BLTSTRETCHYN (0x20000)
+
+#define WINEDDFXCAPS_OVERLAYARITHSTRETCHY (0x40000)
+
+#define WINEDDFXCAPS_OVERLAYARITHSTRETCHYN (0x8)
+
+#define WINEDDFXCAPS_OVERLAYSHRINKX (0x80000)
+
+#define WINEDDFXCAPS_OVERLAYSHRINKXN (0x100000)
+
+#define WINEDDFXCAPS_OVERLAYSHRINKY (0x200000)
+
+#define WINEDDFXCAPS_OVERLAYSHRINKYN (0x400000)
+
+#define WINEDDFXCAPS_OVERLAYSTRETCHX (0x800000)
+
+#define WINEDDFXCAPS_OVERLAYSTRETCHXN (0x1000000)
+
+#define WINEDDFXCAPS_OVERLAYSTRETCHY (0x2000000)
+
+#define WINEDDFXCAPS_OVERLAYSTRETCHYN (0x4000000)
+
+#define WINEDDFXCAPS_OVERLAYMIRRORLEFTRIGHT (0x8000000)
+
+#define WINEDDFXCAPS_OVERLAYMIRRORUPDOWN (0x10000000)
+
+#define WINEDDCAPS_3D (0x1)
+
+#define WINEDDCAPS_ALIGNBOUNDARYDEST (0x2)
+
+#define WINEDDCAPS_ALIGNSIZEDEST (0x4)
+
+#define WINEDDCAPS_ALIGNBOUNDARYSRC (0x8)
+
+#define WINEDDCAPS_ALIGNSIZESRC (0x10)
+
+#define WINEDDCAPS_ALIGNSTRIDE (0x20)
+
+#define WINEDDCAPS_BLT (0x40)
+
+#define WINEDDCAPS_BLTQUEUE (0x80)
+
+#define WINEDDCAPS_BLTFOURCC (0x100)
+
+#define WINEDDCAPS_BLTSTRETCH (0x200)
+
+#define WINEDDCAPS_GDI (0x400)
+
+#define WINEDDCAPS_OVERLAY (0x800)
+
+#define WINEDDCAPS_OVERLAYCANTCLIP (0x1000)
+
+#define WINEDDCAPS_OVERLAYFOURCC (0x2000)
+
+#define WINEDDCAPS_OVERLAYSTRETCH (0x4000)
+
+#define WINEDDCAPS_PALETTE (0x8000)
+
+#define WINEDDCAPS_PALETTEVSYNC (0x10000)
+
+#define WINEDDCAPS_READSCANLINE (0x20000)
+
+#define WINEDDCAPS_STEREOVIEW (0x40000)
+
+#define WINEDDCAPS_VBI (0x80000)
+
+#define WINEDDCAPS_ZBLTS (0x100000)
+
+#define WINEDDCAPS_ZOVERLAYS (0x200000)
+
+#define WINEDDCAPS_COLORKEY (0x400000)
+
+#define WINEDDCAPS_ALPHA (0x800000)
+
+#define WINEDDCAPS_COLORKEYHWASSIST (0x1000000)
+
+#define WINEDDCAPS_NOHARDWARE (0x2000000)
+
+#define WINEDDCAPS_BLTCOLORFILL (0x4000000)
+
+#define WINEDDCAPS_BANKSWITCHED (0x8000000)
+
+#define WINEDDCAPS_BLTDEPTHFILL (0x10000000)
+
+#define WINEDDCAPS_CANCLIP (0x20000000)
+
+#define WINEDDCAPS_CANCLIPSTRETCHED (0x40000000)
+
+#define WINEDDCAPS_CANBLTSYSMEM (0x80000000)
+
+#define WINEDDCAPS2_CERTIFIED (0x1)
+
+#define WINEDDCAPS2_NO2DDURING3DSCENE (0x2)
+
+#define WINEDDCAPS2_VIDEOPORT (0x4)
+
+#define WINEDDCAPS2_AUTOFLIPOVERLAY (0x8)
+
+#define WINEDDCAPS2_CANBOBINTERLEAVED (0x10)
+
+#define WINEDDCAPS2_CANBOBNONINTERLEAVED (0x20)
+
+#define WINEDDCAPS2_COLORCONTROLOVERLAY (0x40)
+
+#define WINEDDCAPS2_COLORCONTROLPRIMARY (0x80)
+
+#define WINEDDCAPS2_CANDROPZ16BIT (0x100)
+
+#define WINEDDCAPS2_NONLOCALVIDMEM (0x200)
+
+#define WINEDDCAPS2_NONLOCALVIDMEMCAPS (0x400)
+
+#define WINEDDCAPS2_NOPAGELOCKREQUIRED (0x800)
+
+#define WINEDDCAPS2_WIDESURFACES (0x1000)
+
+#define WINEDDCAPS2_CANFLIPODDEVEN (0x2000)
+
+#define WINEDDCAPS2_CANBOBHARDWARE (0x4000)
+
+#define WINEDDCAPS2_COPYFOURCC (0x8000)
+
+#define WINEDDCAPS2_PRIMARYGAMMA (0x20000)
+
+#define WINEDDCAPS2_CANRENDERWINDOWED (0x80000)
+
+#define WINEDDCAPS2_CANCALIBRATEGAMMA (0x100000)
+
+#define WINEDDCAPS2_FLIPINTERVAL (0x200000)
+
+#define WINEDDCAPS2_FLIPNOVSYNC (0x400000)
+
+#define WINEDDCAPS2_CANMANAGETEXTURE (0x800000)
+
+#define WINEDDCAPS2_TEXMANINNONLOCALVIDMEM (0x1000000)
+
+#define WINEDDCAPS2_STEREO (0x2000000)
+
+#define WINEDDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL (0x4000000)
+
+#define WINEDDPCAPS_4BIT (0x1)
+
+#define WINEDDPCAPS_8BITENTRIES (0x2)
+
+#define WINEDDPCAPS_8BIT (0x4)
+
+#define WINEDDPCAPS_INITIALIZE (0x8)
+
+#define WINEDDPCAPS_PRIMARYSURFACE (0x10)
+
+#define WINEDDPCAPS_PRIMARYSURFACELEFT (0x20)
+
+#define WINEDDPCAPS_ALLOW256 (0x40)
+
+#define WINEDDPCAPS_VSYNC (0x80)
+
+#define WINEDDPCAPS_1BIT (0x100)
+
+#define WINEDDPCAPS_2BIT (0x200)
+
+#define WINEDDPCAPS_ALPHA (0x400)
+
+typedef struct _WINED3DDISPLAYMODE {
+    UINT Width;
+    UINT Height;
+    UINT RefreshRate;
+    WINED3DFORMAT Format;
+} WINED3DDISPLAYMODE;
+typedef struct _WINED3DCOLORVALUE {
+    float r;
+    float g;
+    float b;
+    float a;
+} WINED3DCOLORVALUE;
+typedef struct _WINED3DVECTOR {
+    float x;
+    float y;
+    float z;
+} WINED3DVECTOR;
+typedef struct _WINED3DMATRIX {
+    union {
+        struct {
+            float _11;
+            float _12;
+            float _13;
+            float _14;
+            float _21;
+            float _22;
+            float _23;
+            float _24;
+            float _31;
+            float _32;
+            float _33;
+            float _34;
+            float _41;
+            float _42;
+            float _43;
+            float _44;
+        } DUMMYSTRUCTNAME;
+        float m[4][4];
+    } DUMMYUNIONNAME;
+} WINED3DMATRIX;
+typedef struct _WINED3DRECT {
+    LONG x1;
+    LONG y1;
+    LONG x2;
+    LONG y2;
+} WINED3DRECT;
+typedef struct _WINED3DLIGHT {
+    WINED3DLIGHTTYPE Type;
+    WINED3DCOLORVALUE Diffuse;
+    WINED3DCOLORVALUE Specular;
+    WINED3DCOLORVALUE Ambient;
+    WINED3DVECTOR Position;
+    WINED3DVECTOR Direction;
+    float Range;
+    float Falloff;
+    float Attenuation0;
+    float Attenuation1;
+    float Attenuation2;
+    float Theta;
+    float Phi;
+} WINED3DLIGHT;
+typedef struct _WINED3DMATERIAL {
+    WINED3DCOLORVALUE Diffuse;
+    WINED3DCOLORVALUE Ambient;
+    WINED3DCOLORVALUE Specular;
+    WINED3DCOLORVALUE Emissive;
+    float Power;
+} WINED3DMATERIAL;
+typedef struct _WINED3DVIEWPORT {
+    DWORD X;
+    DWORD Y;
+    DWORD Width;
+    DWORD Height;
+    float MinZ;
+    float MaxZ;
+} WINED3DVIEWPORT;
+typedef struct _WINED3DGAMMARAMP {
+    WORD red[256];
+    WORD green[256];
+    WORD blue[256];
+} WINED3DGAMMARAMP;
+typedef struct _WINED3DLINEPATTERN {
+    WORD wRepeatFactor;
+    WORD wLinePattern;
+} WINED3DLINEPATTERN;
+typedef struct _WINEDD3DRECTPATCH_INFO {
+    UINT StartVertexOffsetWidth;
+    UINT StartVertexOffsetHeight;
+    UINT Width;
+    UINT Height;
+    UINT Stride;
+    WINED3DBASISTYPE Basis;
+    WINED3DDEGREETYPE Degree;
+} WINED3DRECTPATCH_INFO;
+typedef struct _WINED3DTRIPATCH_INFO {
+    UINT StartVertexOffset;
+    UINT NumVertices;
+    WINED3DBASISTYPE Basis;
+    WINED3DDEGREETYPE Degree;
+} WINED3DTRIPATCH_INFO;
+typedef struct _WINED3DADAPTER_IDENTIFIER {
+    char *driver;
+    UINT driver_size;
+    char *description;
+    UINT description_size;
+    char *device_name;
+    UINT device_name_size;
+    LARGE_INTEGER driver_version;
+    DWORD vendor_id;
+    DWORD device_id;
+    DWORD subsystem_id;
+    DWORD revision;
+    GUID device_identifier;
+    DWORD whql_level;
+    LUID adapter_luid;
+    SIZE_T video_memory;
+} WINED3DADAPTER_IDENTIFIER;
+typedef struct _WINED3DPRESENT_PARAMETERS {
+    UINT BackBufferWidth;
+    UINT BackBufferHeight;
+    WINED3DFORMAT BackBufferFormat;
+    UINT BackBufferCount;
+    WINED3DMULTISAMPLE_TYPE MultiSampleType;
+    DWORD MultiSampleQuality;
+    WINED3DSWAPEFFECT SwapEffect;
+    HWND hDeviceWindow;
+    BOOL Windowed;
+    BOOL EnableAutoDepthStencil;
+    WINED3DFORMAT AutoDepthStencilFormat;
+    DWORD Flags;
+    UINT FullScreen_RefreshRateInHz;
+    UINT PresentationInterval;
+    BOOL AutoRestoreDisplayMode;
+} WINED3DPRESENT_PARAMETERS;
+typedef struct _WINED3DSURFACE_DESC {
+    WINED3DFORMAT format;
+    WINED3DRESOURCETYPE resource_type;
+    DWORD usage;
+    WINED3DPOOL pool;
+    UINT size;
+    WINED3DMULTISAMPLE_TYPE multisample_type;
+    DWORD multisample_quality;
+    UINT width;
+    UINT height;
+} WINED3DSURFACE_DESC;
+typedef struct _WINED3DVOLUME_DESC {
+    WINED3DFORMAT Format;
+    WINED3DRESOURCETYPE Type;
+    DWORD Usage;
+    WINED3DPOOL Pool;
+    UINT Size;
+    UINT Width;
+    UINT Height;
+    UINT Depth;
+} WINED3DVOLUME_DESC;
+typedef struct _WINED3DCLIPSTATUS {
+    DWORD ClipUnion;
+    DWORD ClipIntersection;
+} WINED3DCLIPSTATUS;
+typedef struct _WINED3DVERTEXELEMENT {
+    WINED3DFORMAT format;
+    WORD input_slot;
+    WORD offset;
+    UINT output_slot;
+    BYTE method;
+    BYTE usage;
+    BYTE usage_idx;
+} WINED3DVERTEXELEMENT;
+typedef struct _WINED3DDEVICE_CREATION_PARAMETERS {
+    UINT AdapterOrdinal;
+    WINED3DDEVTYPE DeviceType;
+    HWND hFocusWindow;
+    DWORD BehaviorFlags;
+} WINED3DDEVICE_CREATION_PARAMETERS;
+typedef struct _WINED3DDEVINFO_BANDWIDTHTIMINGS {
+    float MaxBandwidthUtilized;
+    float FrontEndUploadMemoryUtilizedPercent;
+    float VertexRateUtilizedPercent;
+    float TriangleSetupRateUtilizedPercent;
+    float FillRateUtilizedPercent;
+} WINED3DDEVINFO_BANDWIDTHTIMINGS;
+typedef struct _WINED3DDEVINFO_CACHEUTILIZATION {
+    float TextureCacheHitRate;
+    float PostTransformVertexCacheHitRate;
+} WINED3DDEVINFO_CACHEUTILIZATION;
+typedef struct _WINED3DDEVINFO_INTERFACETIMINGS {
+    float WaitingForGPUToUseApplicationResourceTimePercent;
+    float WaitingForGPUToAcceptMoreCommandsTimePercent;
+    float WaitingForGPUToStayWithinLatencyTimePercent;
+    float WaitingForGPUExclusiveResourceTimePercent;
+    float WaitingForGPUOtherTimePercent;
+} WINED3DDEVINFO_INTERFACETIMINGS;
+typedef struct _WINED3DDEVINFO_PIPELINETIMINGS {
+    float VertexProcessingTimePercent;
+    float PixelProcessingTimePercent;
+    float OtherGPUProcessingTimePercent;
+    float GPUIdleTimePercent;
+} WINED3DDEVINFO_PIPELINETIMINGS;
+typedef struct _WINED3DDEVINFO_STAGETIMINGS {
+    float MemoryProcessingPercent;
+    float ComputationProcessingPercent;
+} WINED3DDEVINFO_STAGETIMINGS;
+typedef struct _WINED3DRASTER_STATUS {
+    BOOL InVBlank;
+    UINT ScanLine;
+} WINED3DRASTER_STATUS;
+typedef struct WINED3DRESOURCESTATS {
+    BOOL bThrashing;
+    DWORD ApproxBytesDownloaded;
+    DWORD NumEvicts;
+    DWORD NumVidCreates;
+    DWORD LastPri;
+    DWORD NumUsed;
+    DWORD NumUsedInVidMem;
+    DWORD WorkingSet;
+    DWORD WorkingSetBytes;
+    DWORD TotalManaged;
+    DWORD TotalBytes;
+} WINED3DRESOURCESTATS;
+typedef struct _WINED3DDEVINFO_RESOURCEMANAGER {
+    WINED3DRESOURCESTATS stats[7];
+} WINED3DDEVINFO_RESOURCEMANAGER;
+typedef struct _WINED3DDEVINFO_VERTEXSTATS {
+    DWORD NumRenderedTriangles;
+    DWORD NumExtraClippingTriangles;
+} WINED3DDEVINFO_VERTEXSTATS;
+typedef struct _WINED3DLOCKED_RECT {
+    INT Pitch;
+    void *pBits;
+} WINED3DLOCKED_RECT;
+typedef struct _WINED3DLOCKED_BOX {
+    INT RowPitch;
+    INT SlicePitch;
+    void *pBits;
+} WINED3DLOCKED_BOX;
+typedef struct _WINED3DBOX {
+    UINT Left;
+    UINT Top;
+    UINT Right;
+    UINT Bottom;
+    UINT Front;
+    UINT Back;
+} WINED3DBOX;
+typedef struct WINED3DDEVINFO_VCACHE {
+    DWORD Pattern;
+    DWORD OptMethod;
+    DWORD CacheSize;
+    DWORD MagicNumber;
+} WINED3DDEVINFO_VCACHE;
+typedef struct _WINED3DBUFFER_DESC {
+    WINED3DRESOURCETYPE Type;
+    DWORD Usage;
+    WINED3DPOOL Pool;
+    UINT Size;
+} WINED3DBUFFER_DESC;
+typedef struct WineDirect3DStridedData {
+    WINED3DFORMAT format;
+    const BYTE *lpData;
+    DWORD dwStride;
+} WineDirect3DStridedData;
+typedef struct WineDirect3DVertexStridedData {
+    WineDirect3DStridedData position;
+    WineDirect3DStridedData normal;
+    WineDirect3DStridedData diffuse;
+    WineDirect3DStridedData specular;
+    WineDirect3DStridedData texCoords[8];
+    BOOL position_transformed;
+} WineDirect3DVertexStridedData;
+typedef struct _WINED3DVSHADERCAPS2_0 {
+    DWORD Caps;
+    INT DynamicFlowControlDepth;
+    INT NumTemps;
+    INT StaticFlowControlDepth;
+} WINED3DVSHADERCAPS2_0;
+typedef struct _WINED3DPSHADERCAPS2_0 {
+    DWORD Caps;
+    INT DynamicFlowControlDepth;
+    INT NumTemps;
+    INT StaticFlowControlDepth;
+    INT NumInstructionSlots;
+} WINED3DPSHADERCAPS2_0;
+typedef struct _WINEDDCAPS {
+    DWORD Caps;
+    DWORD Caps2;
+    DWORD CKeyCaps;
+    DWORD FXCaps;
+    DWORD FXAlphaCaps;
+    DWORD PalCaps;
+    DWORD SVCaps;
+    DWORD SVBCaps;
+    DWORD SVBCKeyCaps;
+    DWORD SVBFXCaps;
+    DWORD VSBCaps;
+    DWORD VSBCKeyCaps;
+    DWORD VSBFXCaps;
+    DWORD SSBCaps;
+    DWORD SSBCKeyCaps;
+    DWORD SSBFXCaps;
+    DWORD ddsCaps;
+    DWORD StrideAlign;
+} WINEDDCAPS;
+typedef struct _WINED3DCAPS {
+    WINED3DDEVTYPE DeviceType;
+    UINT AdapterOrdinal;
+    DWORD Caps;
+    DWORD Caps2;
+    DWORD Caps3;
+    DWORD PresentationIntervals;
+    DWORD CursorCaps;
+    DWORD DevCaps;
+    DWORD PrimitiveMiscCaps;
+    DWORD RasterCaps;
+    DWORD ZCmpCaps;
+    DWORD SrcBlendCaps;
+    DWORD DestBlendCaps;
+    DWORD AlphaCmpCaps;
+    DWORD ShadeCaps;
+    DWORD TextureCaps;
+    DWORD TextureFilterCaps;
+    DWORD CubeTextureFilterCaps;
+    DWORD VolumeTextureFilterCaps;
+    DWORD TextureAddressCaps;
+    DWORD VolumeTextureAddressCaps;
+    DWORD LineCaps;
+    DWORD MaxTextureWidth;
+    DWORD MaxTextureHeight;
+    DWORD MaxVolumeExtent;
+    DWORD MaxTextureRepeat;
+    DWORD MaxTextureAspectRatio;
+    DWORD MaxAnisotropy;
+    float MaxVertexW;
+    float GuardBandLeft;
+    float GuardBandTop;
+    float GuardBandRight;
+    float GuardBandBottom;
+    float ExtentsAdjust;
+    DWORD StencilCaps;
+    DWORD FVFCaps;
+    DWORD TextureOpCaps;
+    DWORD MaxTextureBlendStages;
+    DWORD MaxSimultaneousTextures;
+    DWORD VertexProcessingCaps;
+    DWORD MaxActiveLights;
+    DWORD MaxUserClipPlanes;
+    DWORD MaxVertexBlendMatrices;
+    DWORD MaxVertexBlendMatrixIndex;
+    float MaxPointSize;
+    DWORD MaxPrimitiveCount;
+    DWORD MaxVertexIndex;
+    DWORD MaxStreams;
+    DWORD MaxStreamStride;
+    DWORD VertexShaderVersion;
+    DWORD MaxVertexShaderConst;
+    DWORD PixelShaderVersion;
+    float PixelShader1xMaxValue;
+    DWORD DevCaps2;
+    float MaxNpatchTessellationLevel;
+    DWORD Reserved5;
+    UINT MasterAdapterOrdinal;
+    UINT AdapterOrdinalInGroup;
+    UINT NumberOfAdaptersInGroup;
+    DWORD DeclTypes;
+    DWORD NumSimultaneousRTs;
+    DWORD StretchRectFilterCaps;
+    WINED3DVSHADERCAPS2_0 VS20Caps;
+    WINED3DPSHADERCAPS2_0 PS20Caps;
+    DWORD VertexTextureFilterCaps;
+    DWORD MaxVShaderInstructionsExecuted;
+    DWORD MaxPShaderInstructionsExecuted;
+    DWORD MaxVertexShader30InstructionSlots;
+    DWORD MaxPixelShader30InstructionSlots;
+    DWORD Reserved2;
+    DWORD Reserved3;
+    WINEDDCAPS DirectDrawCaps;
+} WINED3DCAPS;
+typedef struct _WINEDDCOLORKEY {
+    DWORD dwColorSpaceLowValue;
+    DWORD dwColorSpaceHighValue;
+} WINEDDCOLORKEY;
+typedef struct _WINEDDCOLORKEY *LPWINEDDCOLORKEY;
+typedef struct _WINEDDBLTFX {
+    DWORD dwSize;
+    DWORD dwDDFX;
+    DWORD dwROP;
+    DWORD dwDDROP;
+    DWORD dwRotationAngle;
+    DWORD dwZBufferOpCode;
+    DWORD dwZBufferLow;
+    DWORD dwZBufferHigh;
+    DWORD dwZBufferBaseDest;
+    DWORD dwZDestConstBitDepth;
+    union {
+        DWORD dwZDestConst;
+        struct IWineD3DSurface *lpDDSZBufferDest;
+    } DUMMYUNIONNAME1;
+    DWORD dwZSrcConstBitDepth;
+    union {
+        DWORD dwZSrcConst;
+        struct IWineD3DSurface *lpDDSZBufferSrc;
+    } DUMMYUNIONNAME2;
+    DWORD dwAlphaEdgeBlendBitDepth;
+    DWORD dwAlphaEdgeBlend;
+    DWORD dwReserved;
+    DWORD dwAlphaDestConstBitDepth;
+    union {
+        DWORD dwAlphaDestConst;
+        struct IWineD3DSurface *lpDDSAlphaDest;
+    } DUMMYUNIONNAME3;
+    DWORD dwAlphaSrcConstBitDepth;
+    union {
+        DWORD dwAlphaSrcConst;
+        struct IWineD3DSurface *lpDDSAlphaSrc;
+    } DUMMYUNIONNAME4;
+    union {
+        DWORD dwFillColor;
+        DWORD dwFillDepth;
+        DWORD dwFillPixel;
+        struct IWineD3DSurface *lpDDSPattern;
+    } DUMMYUNIONNAME5;
+    WINEDDCOLORKEY ddckDestColorkey;
+    WINEDDCOLORKEY ddckSrcColorkey;
+} WINEDDBLTFX;
+typedef struct _WINEDDBLTFX *LPWINEDDBLTFX;
+typedef struct _WINEDDOVERLAYFX {
+    DWORD dwSize;
+    DWORD dwAlphaEdgeBlendBitDepth;
+    DWORD dwAlphaEdgeBlend;
+    DWORD dwReserved;
+    DWORD dwAlphaDestConstBitDepth;
+    union {
+        DWORD dwAlphaDestConst;
+        struct IWineD3DSurface *lpDDSAlphaDest;
+    } DUMMYUNIONNAME1;
+    DWORD dwAlphaSrcConstBitDepth;
+    union {
+        DWORD dwAlphaSrcConst;
+        struct IWineD3DSurface *lpDDSAlphaSrc;
+    } DUMMYUNIONNAME2;
+    WINEDDCOLORKEY dckDestColorkey;
+    WINEDDCOLORKEY dckSrcColorkey;
+    DWORD dwDDFX;
+    DWORD dwFlags;
+} WINEDDOVERLAYFX;
+struct wined3d_buffer_desc {
+    UINT byte_width;
+    DWORD usage;
+    UINT bind_flags;
+    UINT cpu_access_flags;
+    UINT misc_flags;
+};
+
+struct wined3d_shader_signature_element {
+    const char *semantic_name;
+    UINT semantic_idx;
+    enum wined3d_sysval_semantic sysval_semantic;
+    DWORD component_type;
+    UINT register_idx;
+    DWORD mask;
+};
+
+struct wined3d_shader_signature {
+    UINT element_count;
+    struct wined3d_shader_signature_element *elements;
+    char *string_data;
+};
+
+struct wined3d_parent_ops {
+    void (STDMETHODCALLTYPE *wined3d_object_destroyed)(void *parent);
+};
+
+#ifndef __IWineD3DResource_FWD_DEFINED__
+#define __IWineD3DResource_FWD_DEFINED__
+typedef interface IWineD3DResource IWineD3DResource;
+#endif
+
+#ifndef __IWineD3DSurface_FWD_DEFINED__
+#define __IWineD3DSurface_FWD_DEFINED__
+typedef interface IWineD3DSurface IWineD3DSurface;
+#endif
+
+#ifndef __IWineD3DVolume_FWD_DEFINED__
+#define __IWineD3DVolume_FWD_DEFINED__
+typedef interface IWineD3DVolume IWineD3DVolume;
+#endif
+
+#ifndef __IWineD3DSwapChain_FWD_DEFINED__
+#define __IWineD3DSwapChain_FWD_DEFINED__
+typedef interface IWineD3DSwapChain IWineD3DSwapChain;
+#endif
+
+#ifndef __IWineD3DDevice_FWD_DEFINED__
+#define __IWineD3DDevice_FWD_DEFINED__
+typedef interface IWineD3DDevice IWineD3DDevice;
+#endif
+
+/*****************************************************************************
+ * IWineD3DDeviceParent interface
+ */
+#ifndef __IWineD3DDeviceParent_INTERFACE_DEFINED__
+#define __IWineD3DDeviceParent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DDeviceParent, 0xaeb62dfc, 0xbdcb, 0x4f02, 0x95,0x19, 0x1e,0xee,0xa0,0x0c,0x15,0xcd);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DDeviceParent : public IUnknown
+{
+    virtual void STDMETHODCALLTYPE WineD3DDeviceCreated(
+        IWineD3DDevice *device) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateSurface(
+        IUnknown *superior,
+        UINT width,
+        UINT height,
+        WINED3DFORMAT format,
+        DWORD usage,
+        WINED3DPOOL pool,
+        UINT level,
+        WINED3DCUBEMAP_FACES face,
+        IWineD3DSurface **surface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateRenderTarget(
+        IUnknown *superior,
+        UINT width,
+        UINT height,
+        WINED3DFORMAT format,
+        WINED3DMULTISAMPLE_TYPE multisample_type,
+        DWORD multisample_quality,
+        BOOL lockable,
+        IWineD3DSurface **surface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilSurface(
+        IUnknown *superior,
+        UINT width,
+        UINT height,
+        WINED3DFORMAT format,
+        WINED3DMULTISAMPLE_TYPE multisample_type,
+        DWORD multisample_quality,
+        BOOL discard,
+        IWineD3DSurface **surface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVolume(
+        IUnknown *superior,
+        UINT width,
+        UINT height,
+        UINT depth,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        DWORD usage,
+        IWineD3DVolume **volume) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateSwapChain(
+        WINED3DPRESENT_PARAMETERS *present_parameters,
+        IWineD3DSwapChain **swapchain) = 0;
+
+};
+#else
+typedef struct IWineD3DDeviceParentVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DDeviceParent* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DDeviceParent* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DDeviceParent* This);
+
+    /*** IWineD3DDeviceParent methods ***/
+    void (STDMETHODCALLTYPE *WineD3DDeviceCreated)(
+        IWineD3DDeviceParent* This,
+        IWineD3DDevice *device);
+
+    HRESULT (STDMETHODCALLTYPE *CreateSurface)(
+        IWineD3DDeviceParent* This,
+        IUnknown *superior,
+        UINT width,
+        UINT height,
+        WINED3DFORMAT format,
+        DWORD usage,
+        WINED3DPOOL pool,
+        UINT level,
+        WINED3DCUBEMAP_FACES face,
+        IWineD3DSurface **surface
+#ifdef VBOX_WITH_WDDM
+        , HANDLE *shared_handle
+        , void *pvClientMem
+#endif
+        );
+
+    HRESULT (STDMETHODCALLTYPE *CreateRenderTarget)(
+        IWineD3DDeviceParent* This,
+        IUnknown *superior,
+        UINT width,
+        UINT height,
+        WINED3DFORMAT format,
+        WINED3DMULTISAMPLE_TYPE multisample_type,
+        DWORD multisample_quality,
+        BOOL lockable,
+        IWineD3DSurface **surface);
+
+    HRESULT (STDMETHODCALLTYPE *CreateDepthStencilSurface)(
+        IWineD3DDeviceParent* This,
+        IUnknown *superior,
+        UINT width,
+        UINT height,
+        WINED3DFORMAT format,
+        WINED3DMULTISAMPLE_TYPE multisample_type,
+        DWORD multisample_quality,
+        BOOL discard,
+        IWineD3DSurface **surface);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVolume)(
+        IWineD3DDeviceParent* This,
+        IUnknown *superior,
+        UINT width,
+        UINT height,
+        UINT depth,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        DWORD usage,
+        IWineD3DVolume **volume);
+
+    HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
+        IWineD3DDeviceParent* This,
+        WINED3DPRESENT_PARAMETERS *present_parameters,
+        IWineD3DSwapChain **swapchain);
+
+    END_INTERFACE
+} IWineD3DDeviceParentVtbl;
+interface IWineD3DDeviceParent {
+    CONST_VTBL IWineD3DDeviceParentVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DDeviceParent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DDeviceParent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DDeviceParent_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DDeviceParent methods ***/
+#define IWineD3DDeviceParent_WineD3DDeviceCreated(This,device) (This)->lpVtbl->WineD3DDeviceCreated(This,device)
+#ifdef VBOX_WITH_WDDM
+#define IWineD3DDeviceParent_CreateSurface(This,superior,width,height,format,usage,pool,level,face,surface,shared_handle,pvClientMem) (This)->lpVtbl->CreateSurface(This,superior,width,height,format,usage,pool,level,face,surface,shared_handle,pvClientMem)
+#else
+#define IWineD3DDeviceParent_CreateSurface(This,superior,width,height,format,usage,pool,level,face,surface) (This)->lpVtbl->CreateSurface(This,superior,width,height,format,usage,pool,level,face,surface)
+#endif
+#define IWineD3DDeviceParent_CreateRenderTarget(This,superior,width,height,format,multisample_type,multisample_quality,lockable,surface) (This)->lpVtbl->CreateRenderTarget(This,superior,width,height,format,multisample_type,multisample_quality,lockable,surface)
+#define IWineD3DDeviceParent_CreateDepthStencilSurface(This,superior,width,height,format,multisample_type,multisample_quality,discard,surface) (This)->lpVtbl->CreateDepthStencilSurface(This,superior,width,height,format,multisample_type,multisample_quality,discard,surface)
+#define IWineD3DDeviceParent_CreateVolume(This,superior,width,height,depth,format,pool,usage,volume) (This)->lpVtbl->CreateVolume(This,superior,width,height,depth,format,pool,usage,volume)
+#define IWineD3DDeviceParent_CreateSwapChain(This,present_parameters,swapchain) (This)->lpVtbl->CreateSwapChain(This,present_parameters,swapchain)
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE IWineD3DDeviceParent_WineD3DDeviceCreated_Proxy(
+    IWineD3DDeviceParent* This,
+    IWineD3DDevice *device);
+void __RPC_STUB IWineD3DDeviceParent_WineD3DDeviceCreated_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDeviceParent_CreateSurface_Proxy(
+    IWineD3DDeviceParent* This,
+    IUnknown *superior,
+    UINT width,
+    UINT height,
+    WINED3DFORMAT format,
+    DWORD usage,
+    WINED3DPOOL pool,
+    UINT level,
+    WINED3DCUBEMAP_FACES face,
+    IWineD3DSurface **surface);
+void __RPC_STUB IWineD3DDeviceParent_CreateSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDeviceParent_CreateRenderTarget_Proxy(
+    IWineD3DDeviceParent* This,
+    IUnknown *superior,
+    UINT width,
+    UINT height,
+    WINED3DFORMAT format,
+    WINED3DMULTISAMPLE_TYPE multisample_type,
+    DWORD multisample_quality,
+    BOOL lockable,
+    IWineD3DSurface **surface);
+void __RPC_STUB IWineD3DDeviceParent_CreateRenderTarget_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDeviceParent_CreateDepthStencilSurface_Proxy(
+    IWineD3DDeviceParent* This,
+    IUnknown *superior,
+    UINT width,
+    UINT height,
+    WINED3DFORMAT format,
+    WINED3DMULTISAMPLE_TYPE multisample_type,
+    DWORD multisample_quality,
+    BOOL discard,
+    IWineD3DSurface **surface);
+void __RPC_STUB IWineD3DDeviceParent_CreateDepthStencilSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDeviceParent_CreateVolume_Proxy(
+    IWineD3DDeviceParent* This,
+    IUnknown *superior,
+    UINT width,
+    UINT height,
+    UINT depth,
+    WINED3DFORMAT format,
+    WINED3DPOOL pool,
+    DWORD usage,
+    IWineD3DVolume **volume);
+void __RPC_STUB IWineD3DDeviceParent_CreateVolume_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDeviceParent_CreateSwapChain_Proxy(
+    IWineD3DDeviceParent* This,
+    WINED3DPRESENT_PARAMETERS *present_parameters,
+    IWineD3DSwapChain **swapchain);
+void __RPC_STUB IWineD3DDeviceParent_CreateSwapChain_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DDeviceParent_INTERFACE_DEFINED__ */
+
+typedef ULONG (STDMETHODCALLTYPE *D3DCB_DESTROYSWAPCHAINFN)(IWineD3DSwapChain *pSwapChain);
+typedef HRESULT (STDMETHODCALLTYPE *D3DCB_ENUMRESOURCES)(IWineD3DResource *resource,void *pData);
+/*****************************************************************************
+ * IWineD3DBase interface
+ */
+#ifndef __IWineD3DBase_INTERFACE_DEFINED__
+#define __IWineD3DBase_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DBase, 0x46799311, 0x8e0e, 0x40ce, 0xb2,0xec, 0xdd,0xb9,0x9f,0x18,0xfc,0xb4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DBase : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetParent(
+        IUnknown **parent) = 0;
+
+};
+#else
+typedef struct IWineD3DBaseVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DBase* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DBase* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DBase* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DBase* This,
+        IUnknown **parent);
+
+    END_INTERFACE
+} IWineD3DBaseVtbl;
+interface IWineD3DBase {
+    CONST_VTBL IWineD3DBaseVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DBase_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DBase_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DBase_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DBase_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DBase_GetParent_Proxy(
+    IWineD3DBase* This,
+    IUnknown **parent);
+void __RPC_STUB IWineD3DBase_GetParent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DBase_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3D interface
+ */
+#ifndef __IWineD3D_INTERFACE_DEFINED__
+#define __IWineD3D_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3D, 0x108f9c44, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3D : public IWineD3DBase
+{
+    virtual UINT STDMETHODCALLTYPE GetAdapterCount(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegisterSoftwareDevice(
+        void *pInitializeFunction) = 0;
+
+    virtual HMONITOR STDMETHODCALLTYPE GetAdapterMonitor(
+        UINT adapter_idx) = 0;
+
+    virtual UINT STDMETHODCALLTYPE GetAdapterModeCount(
+        UINT adapter_idx,
+        WINED3DFORMAT format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumAdapterModes(
+        UINT adapter_idx,
+        WINED3DFORMAT format,
+        UINT mode_idx,
+        WINED3DDISPLAYMODE *mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAdapterDisplayMode(
+        UINT adapter_idx,
+        WINED3DDISPLAYMODE *mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAdapterIdentifier(
+        UINT adapter_idx,
+        DWORD flags,
+        WINED3DADAPTER_IDENTIFIER *identifier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckDeviceMultiSampleType(
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT surface_format,
+        BOOL windowed,
+        WINED3DMULTISAMPLE_TYPE multisample_type,
+        DWORD *quality_levels) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckDepthStencilMatch(
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT adapter_format,
+        WINED3DFORMAT render_target_format,
+        WINED3DFORMAT depth_stencil_format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckDeviceType(
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT display_format,
+        WINED3DFORMAT backbuffer_format,
+        BOOL windowed) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckDeviceFormat(
+        UINT adaper_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT adapter_format,
+        DWORD usage,
+        WINED3DRESOURCETYPE resource_type,
+        WINED3DFORMAT check_format,
+        WINED3DSURFTYPE surface_type) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CheckDeviceFormatConversion(
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT source_format,
+        WINED3DFORMAT target_format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDeviceCaps(
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DCAPS *caps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateDevice(
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        HWND focus_window,
+        DWORD behaviour_flags,
+        IUnknown *parent,
+        IWineD3DDeviceParent *device_parent,
+        IWineD3DDevice **device) = 0;
+
+};
+#else
+typedef struct IWineD3DVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3D* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3D* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3D* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3D* This,
+        IUnknown **parent);
+
+    /*** IWineD3D methods ***/
+    UINT (STDMETHODCALLTYPE *GetAdapterCount)(
+        IWineD3D* This);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterSoftwareDevice)(
+        IWineD3D* This,
+        void *pInitializeFunction);
+
+    HMONITOR (STDMETHODCALLTYPE *GetAdapterMonitor)(
+        IWineD3D* This,
+        UINT adapter_idx);
+
+    UINT (STDMETHODCALLTYPE *GetAdapterModeCount)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DFORMAT format);
+
+    HRESULT (STDMETHODCALLTYPE *EnumAdapterModes)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DFORMAT format,
+        UINT mode_idx,
+        WINED3DDISPLAYMODE *mode);
+
+    HRESULT (STDMETHODCALLTYPE *GetAdapterDisplayMode)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDISPLAYMODE *mode);
+
+    HRESULT (STDMETHODCALLTYPE *GetAdapterIdentifier)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        DWORD flags,
+        WINED3DADAPTER_IDENTIFIER *identifier);
+
+    HRESULT (STDMETHODCALLTYPE *CheckDeviceMultiSampleType)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT surface_format,
+        BOOL windowed,
+        WINED3DMULTISAMPLE_TYPE multisample_type,
+        DWORD *quality_levels);
+
+    HRESULT (STDMETHODCALLTYPE *CheckDepthStencilMatch)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT adapter_format,
+        WINED3DFORMAT render_target_format,
+        WINED3DFORMAT depth_stencil_format);
+
+    HRESULT (STDMETHODCALLTYPE *CheckDeviceType)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT display_format,
+        WINED3DFORMAT backbuffer_format,
+        BOOL windowed);
+
+    HRESULT (STDMETHODCALLTYPE *CheckDeviceFormat)(
+        IWineD3D* This,
+        UINT adaper_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT adapter_format,
+        DWORD usage,
+        WINED3DRESOURCETYPE resource_type,
+        WINED3DFORMAT check_format,
+        WINED3DSURFTYPE surface_type);
+
+    HRESULT (STDMETHODCALLTYPE *CheckDeviceFormatConversion)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DFORMAT source_format,
+        WINED3DFORMAT target_format);
+
+    HRESULT (STDMETHODCALLTYPE *GetDeviceCaps)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        WINED3DCAPS *caps);
+
+    HRESULT (STDMETHODCALLTYPE *CreateDevice)(
+        IWineD3D* This,
+        UINT adapter_idx,
+        WINED3DDEVTYPE device_type,
+        HWND focus_window,
+        DWORD behaviour_flags,
+        IUnknown *parent,
+        IWineD3DDeviceParent *device_parent,
+        IWineD3DDevice **device);
+
+    END_INTERFACE
+} IWineD3DVtbl;
+interface IWineD3D {
+    CONST_VTBL IWineD3DVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3D_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3D_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3D_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3D methods ***/
+#define IWineD3D_GetAdapterCount(This) (This)->lpVtbl->GetAdapterCount(This)
+#define IWineD3D_RegisterSoftwareDevice(This,pInitializeFunction) (This)->lpVtbl->RegisterSoftwareDevice(This,pInitializeFunction)
+#define IWineD3D_GetAdapterMonitor(This,adapter_idx) (This)->lpVtbl->GetAdapterMonitor(This,adapter_idx)
+#define IWineD3D_GetAdapterModeCount(This,adapter_idx,format) (This)->lpVtbl->GetAdapterModeCount(This,adapter_idx,format)
+#define IWineD3D_EnumAdapterModes(This,adapter_idx,format,mode_idx,mode) (This)->lpVtbl->EnumAdapterModes(This,adapter_idx,format,mode_idx,mode)
+#define IWineD3D_GetAdapterDisplayMode(This,adapter_idx,mode) (This)->lpVtbl->GetAdapterDisplayMode(This,adapter_idx,mode)
+#define IWineD3D_GetAdapterIdentifier(This,adapter_idx,flags,identifier) (This)->lpVtbl->GetAdapterIdentifier(This,adapter_idx,flags,identifier)
+#define IWineD3D_CheckDeviceMultiSampleType(This,adapter_idx,device_type,surface_format,windowed,multisample_type,quality_levels) (This)->lpVtbl->CheckDeviceMultiSampleType(This,adapter_idx,device_type,surface_format,windowed,multisample_type,quality_levels)
+#define IWineD3D_CheckDepthStencilMatch(This,adapter_idx,device_type,adapter_format,render_target_format,depth_stencil_format) (This)->lpVtbl->CheckDepthStencilMatch(This,adapter_idx,device_type,adapter_format,render_target_format,depth_stencil_format)
+#define IWineD3D_CheckDeviceType(This,adapter_idx,device_type,display_format,backbuffer_format,windowed) (This)->lpVtbl->CheckDeviceType(This,adapter_idx,device_type,display_format,backbuffer_format,windowed)
+#define IWineD3D_CheckDeviceFormat(This,adaper_idx,device_type,adapter_format,usage,resource_type,check_format,surface_type) (This)->lpVtbl->CheckDeviceFormat(This,adaper_idx,device_type,adapter_format,usage,resource_type,check_format,surface_type)
+#define IWineD3D_CheckDeviceFormatConversion(This,adapter_idx,device_type,source_format,target_format) (This)->lpVtbl->CheckDeviceFormatConversion(This,adapter_idx,device_type,source_format,target_format)
+#define IWineD3D_GetDeviceCaps(This,adapter_idx,device_type,caps) (This)->lpVtbl->GetDeviceCaps(This,adapter_idx,device_type,caps)
+#define IWineD3D_CreateDevice(This,adapter_idx,device_type,focus_window,behaviour_flags,parent,device_parent,device) (This)->lpVtbl->CreateDevice(This,adapter_idx,device_type,focus_window,behaviour_flags,parent,device_parent,device)
+#endif
+
+#endif
+
+UINT STDMETHODCALLTYPE IWineD3D_GetAdapterCount_Proxy(
+    IWineD3D* This);
+void __RPC_STUB IWineD3D_GetAdapterCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_RegisterSoftwareDevice_Proxy(
+    IWineD3D* This,
+    void *pInitializeFunction);
+void __RPC_STUB IWineD3D_RegisterSoftwareDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HMONITOR STDMETHODCALLTYPE IWineD3D_GetAdapterMonitor_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx);
+void __RPC_STUB IWineD3D_GetAdapterMonitor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT STDMETHODCALLTYPE IWineD3D_GetAdapterModeCount_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DFORMAT format);
+void __RPC_STUB IWineD3D_GetAdapterModeCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_EnumAdapterModes_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DFORMAT format,
+    UINT mode_idx,
+    WINED3DDISPLAYMODE *mode);
+void __RPC_STUB IWineD3D_EnumAdapterModes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_GetAdapterDisplayMode_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDISPLAYMODE *mode);
+void __RPC_STUB IWineD3D_GetAdapterDisplayMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_GetAdapterIdentifier_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    DWORD flags,
+    WINED3DADAPTER_IDENTIFIER *identifier);
+void __RPC_STUB IWineD3D_GetAdapterIdentifier_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_CheckDeviceMultiSampleType_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDEVTYPE device_type,
+    WINED3DFORMAT surface_format,
+    BOOL windowed,
+    WINED3DMULTISAMPLE_TYPE multisample_type,
+    DWORD *quality_levels);
+void __RPC_STUB IWineD3D_CheckDeviceMultiSampleType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_CheckDepthStencilMatch_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDEVTYPE device_type,
+    WINED3DFORMAT adapter_format,
+    WINED3DFORMAT render_target_format,
+    WINED3DFORMAT depth_stencil_format);
+void __RPC_STUB IWineD3D_CheckDepthStencilMatch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_CheckDeviceType_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDEVTYPE device_type,
+    WINED3DFORMAT display_format,
+    WINED3DFORMAT backbuffer_format,
+    BOOL windowed);
+void __RPC_STUB IWineD3D_CheckDeviceType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_CheckDeviceFormat_Proxy(
+    IWineD3D* This,
+    UINT adaper_idx,
+    WINED3DDEVTYPE device_type,
+    WINED3DFORMAT adapter_format,
+    DWORD usage,
+    WINED3DRESOURCETYPE resource_type,
+    WINED3DFORMAT check_format,
+    WINED3DSURFTYPE surface_type);
+void __RPC_STUB IWineD3D_CheckDeviceFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_CheckDeviceFormatConversion_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDEVTYPE device_type,
+    WINED3DFORMAT source_format,
+    WINED3DFORMAT target_format);
+void __RPC_STUB IWineD3D_CheckDeviceFormatConversion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_GetDeviceCaps_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDEVTYPE device_type,
+    WINED3DCAPS *caps);
+void __RPC_STUB IWineD3D_GetDeviceCaps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3D_CreateDevice_Proxy(
+    IWineD3D* This,
+    UINT adapter_idx,
+    WINED3DDEVTYPE device_type,
+    HWND focus_window,
+    DWORD behaviour_flags,
+    IUnknown *parent,
+    IWineD3DDeviceParent *device_parent,
+    IWineD3DDevice **device);
+void __RPC_STUB IWineD3D_CreateDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3D_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DResource interface
+ */
+#ifndef __IWineD3DResource_INTERFACE_DEFINED__
+#define __IWineD3DResource_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DResource, 0x1f3bfb34, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DResource : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
+        REFGUID guid,
+        void *data,
+        DWORD *data_size) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FreePrivateData(
+        REFGUID guid) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE SetPriority(
+        DWORD new_priority) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE GetPriority(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE PreLoad(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE UnLoad(
+        ) = 0;
+
+    virtual WINED3DRESOURCETYPE STDMETHODCALLTYPE GetType(
+        ) = 0;
+
+};
+#else
+typedef struct IWineD3DResourceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DResource* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DResource* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DResource* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DResource* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DResource* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DResource* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DResource* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DResource* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DResource* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DResource* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DResource* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DResource* This);
+
+    END_INTERFACE
+} IWineD3DResourceVtbl;
+interface IWineD3DResource {
+    CONST_VTBL IWineD3DResourceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DResource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DResource_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DResource_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DResource_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DResource_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DResource_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DResource_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DResource_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DResource_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DResource_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DResource_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DResource_GetType(This) (This)->lpVtbl->GetType(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DResource_SetPrivateData_Proxy(
+    IWineD3DResource* This,
+    REFGUID guid,
+    const void *data,
+    DWORD data_size,
+    DWORD flags);
+void __RPC_STUB IWineD3DResource_SetPrivateData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DResource_GetPrivateData_Proxy(
+    IWineD3DResource* This,
+    REFGUID guid,
+    void *data,
+    DWORD *data_size);
+void __RPC_STUB IWineD3DResource_GetPrivateData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DResource_FreePrivateData_Proxy(
+    IWineD3DResource* This,
+    REFGUID guid);
+void __RPC_STUB IWineD3DResource_FreePrivateData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IWineD3DResource_SetPriority_Proxy(
+    IWineD3DResource* This,
+    DWORD new_priority);
+void __RPC_STUB IWineD3DResource_SetPriority_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IWineD3DResource_GetPriority_Proxy(
+    IWineD3DResource* This);
+void __RPC_STUB IWineD3DResource_GetPriority_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DResource_PreLoad_Proxy(
+    IWineD3DResource* This);
+void __RPC_STUB IWineD3DResource_PreLoad_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DResource_UnLoad_Proxy(
+    IWineD3DResource* This);
+void __RPC_STUB IWineD3DResource_UnLoad_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+WINED3DRESOURCETYPE STDMETHODCALLTYPE IWineD3DResource_GetType_Proxy(
+    IWineD3DResource* This);
+void __RPC_STUB IWineD3DResource_GetType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DResource_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DRendertargetView interface
+ */
+#ifndef __IWineD3DRendertargetView_INTERFACE_DEFINED__
+#define __IWineD3DRendertargetView_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DRendertargetView, 0xf7d8abf4, 0xfb93, 0x43e4, 0x9c,0x96, 0x46,0x18,0xcf,0x9b,0x3c,0xbc);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DRendertargetView : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE GetResource(
+        IWineD3DResource **resource) = 0;
+
+};
+#else
+typedef struct IWineD3DRendertargetViewVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DRendertargetView* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DRendertargetView* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DRendertargetView* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DRendertargetView* This,
+        IUnknown **parent);
+
+    /*** IWineD3DRendertargetView methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetResource)(
+        IWineD3DRendertargetView* This,
+        IWineD3DResource **resource);
+
+    END_INTERFACE
+} IWineD3DRendertargetViewVtbl;
+interface IWineD3DRendertargetView {
+    CONST_VTBL IWineD3DRendertargetViewVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DRendertargetView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DRendertargetView_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DRendertargetView_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DRendertargetView_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DRendertargetView methods ***/
+#define IWineD3DRendertargetView_GetResource(This,resource) (This)->lpVtbl->GetResource(This,resource)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DRendertargetView_GetResource_Proxy(
+    IWineD3DRendertargetView* This,
+    IWineD3DResource **resource);
+void __RPC_STUB IWineD3DRendertargetView_GetResource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DRendertargetView_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DPalette interface
+ */
+#ifndef __IWineD3DPalette_INTERFACE_DEFINED__
+#define __IWineD3DPalette_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DPalette, 0xf756720c, 0x32b9, 0x4439, 0xb5,0xa3, 0x1d,0x6c,0x97,0x03,0x7d,0x9e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DPalette : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE GetEntries(
+        DWORD flags,
+        DWORD start,
+        DWORD count,
+        PALETTEENTRY *entries) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCaps(
+        DWORD *caps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetEntries(
+        DWORD flags,
+        DWORD start,
+        DWORD count,
+        const PALETTEENTRY *entries) = 0;
+
+};
+#else
+typedef struct IWineD3DPaletteVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DPalette* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DPalette* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DPalette* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DPalette* This,
+        IUnknown **parent);
+
+    /*** IWineD3DPalette methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetEntries)(
+        IWineD3DPalette* This,
+        DWORD flags,
+        DWORD start,
+        DWORD count,
+        PALETTEENTRY *entries);
+
+    HRESULT (STDMETHODCALLTYPE *GetCaps)(
+        IWineD3DPalette* This,
+        DWORD *caps);
+
+    HRESULT (STDMETHODCALLTYPE *SetEntries)(
+        IWineD3DPalette* This,
+        DWORD flags,
+        DWORD start,
+        DWORD count,
+        const PALETTEENTRY *entries);
+
+    END_INTERFACE
+} IWineD3DPaletteVtbl;
+interface IWineD3DPalette {
+    CONST_VTBL IWineD3DPaletteVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DPalette_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DPalette_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DPalette_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DPalette_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DPalette methods ***/
+#define IWineD3DPalette_GetEntries(This,flags,start,count,entries) (This)->lpVtbl->GetEntries(This,flags,start,count,entries)
+#define IWineD3DPalette_GetCaps(This,caps) (This)->lpVtbl->GetCaps(This,caps)
+#define IWineD3DPalette_SetEntries(This,flags,start,count,entries) (This)->lpVtbl->SetEntries(This,flags,start,count,entries)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DPalette_GetEntries_Proxy(
+    IWineD3DPalette* This,
+    DWORD flags,
+    DWORD start,
+    DWORD count,
+    PALETTEENTRY *entries);
+void __RPC_STUB IWineD3DPalette_GetEntries_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DPalette_GetCaps_Proxy(
+    IWineD3DPalette* This,
+    DWORD *caps);
+void __RPC_STUB IWineD3DPalette_GetCaps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DPalette_SetEntries_Proxy(
+    IWineD3DPalette* This,
+    DWORD flags,
+    DWORD start,
+    DWORD count,
+    const PALETTEENTRY *entries);
+void __RPC_STUB IWineD3DPalette_SetEntries_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DPalette_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DClipper interface
+ */
+#ifndef __IWineD3DClipper_INTERFACE_DEFINED__
+#define __IWineD3DClipper_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DClipper, 0x8f2bceb1, 0xd338, 0x488c, 0xab,0x7f, 0x0e,0xc9,0x80,0xbf,0x5d,0x2d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DClipper : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE GetClipList(
+        const RECT *rect,
+        RGNDATA *clip_list,
+        DWORD *clip_list_size) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetHWnd(
+        HWND *hwnd) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsClipListChanged(
+        BOOL *changed) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClipList(
+        const RGNDATA *clip_list,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetHWnd(
+        DWORD flags,
+        HWND hwnd) = 0;
+
+};
+#else
+typedef struct IWineD3DClipperVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DClipper* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DClipper* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DClipper* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DClipper* This,
+        IUnknown **parent);
+
+    /*** IWineD3DClipper methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClipList)(
+        IWineD3DClipper* This,
+        const RECT *rect,
+        RGNDATA *clip_list,
+        DWORD *clip_list_size);
+
+    HRESULT (STDMETHODCALLTYPE *GetHWnd)(
+        IWineD3DClipper* This,
+        HWND *hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *IsClipListChanged)(
+        IWineD3DClipper* This,
+        BOOL *changed);
+
+    HRESULT (STDMETHODCALLTYPE *SetClipList)(
+        IWineD3DClipper* This,
+        const RGNDATA *clip_list,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *SetHWnd)(
+        IWineD3DClipper* This,
+        DWORD flags,
+        HWND hwnd);
+
+    END_INTERFACE
+} IWineD3DClipperVtbl;
+interface IWineD3DClipper {
+    CONST_VTBL IWineD3DClipperVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DClipper_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DClipper_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DClipper_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DClipper_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DClipper methods ***/
+#define IWineD3DClipper_GetClipList(This,rect,clip_list,clip_list_size) (This)->lpVtbl->GetClipList(This,rect,clip_list,clip_list_size)
+#define IWineD3DClipper_GetHWnd(This,hwnd) (This)->lpVtbl->GetHWnd(This,hwnd)
+#define IWineD3DClipper_IsClipListChanged(This,changed) (This)->lpVtbl->IsClipListChanged(This,changed)
+#define IWineD3DClipper_SetClipList(This,clip_list,flags) (This)->lpVtbl->SetClipList(This,clip_list,flags)
+#define IWineD3DClipper_SetHWnd(This,flags,hwnd) (This)->lpVtbl->SetHWnd(This,flags,hwnd)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DClipper_GetClipList_Proxy(
+    IWineD3DClipper* This,
+    const RECT *rect,
+    RGNDATA *clip_list,
+    DWORD *clip_list_size);
+void __RPC_STUB IWineD3DClipper_GetClipList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DClipper_GetHWnd_Proxy(
+    IWineD3DClipper* This,
+    HWND *hwnd);
+void __RPC_STUB IWineD3DClipper_GetHWnd_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DClipper_IsClipListChanged_Proxy(
+    IWineD3DClipper* This,
+    BOOL *changed);
+void __RPC_STUB IWineD3DClipper_IsClipListChanged_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DClipper_SetClipList_Proxy(
+    IWineD3DClipper* This,
+    const RGNDATA *clip_list,
+    DWORD flags);
+void __RPC_STUB IWineD3DClipper_SetClipList_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DClipper_SetHWnd_Proxy(
+    IWineD3DClipper* This,
+    DWORD flags,
+    HWND hwnd);
+void __RPC_STUB IWineD3DClipper_SetHWnd_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DClipper_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DSurface interface
+ */
+#ifndef __IWineD3DSurface_INTERFACE_DEFINED__
+#define __IWineD3DSurface_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DSurface, 0x37cd5526, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DSurface : public IWineD3DResource
+{
+    virtual HRESULT STDMETHODCALLTYPE GetContainer(
+        REFIID riid,
+        void **container) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDesc(
+        WINED3DSURFACE_DESC *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockRect(
+        WINED3DLOCKED_RECT *locked_rect,
+        const RECT *rect,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockRect(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDC(
+        HDC *dc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReleaseDC(
+        HDC dc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Flip(
+        IWineD3DSurface *override,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Blt(
+        const RECT *dst_rect,
+        IWineD3DSurface *src_surface,
+        const RECT *src_rect,
+        DWORD flags,
+        const WINEDDBLTFX *blt_fx,
+        WINED3DTEXTUREFILTERTYPE filter) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBltStatus(
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFlipStatus(
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsLost(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Restore(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BltFast(
+        DWORD dst_x,
+        DWORD dst_y,
+        IWineD3DSurface *src_surface,
+        const RECT *src_rect,
+        DWORD trans) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPalette(
+        IWineD3DPalette **palette) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPalette(
+        IWineD3DPalette *palette) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RealizePalette(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetColorKey(
+        DWORD flags,
+        const WINEDDCOLORKEY *color_key) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE GetPitch(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMem(
+        void *mem) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetOverlayPosition(
+        LONG x,
+        LONG y) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetOverlayPosition(
+        LONG *x,
+        LONG *y) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UpdateOverlayZOrder(
+        DWORD flags,
+        IWineD3DSurface *ref) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UpdateOverlay(
+        const RECT *src_rect,
+        IWineD3DSurface *dst_surface,
+        const RECT *dst_rect,
+        DWORD flags,
+        const WINEDDOVERLAYFX *fx) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClipper(
+        IWineD3DClipper *clipper) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClipper(
+        IWineD3DClipper **clipper) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LoadTexture(
+        BOOL srgb_mode) = 0;
+
+    virtual void STDMETHODCALLTYPE BindTexture(
+        BOOL srgb) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SaveSnapshot(
+        const char *filename) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetContainer(
+        IWineD3DBase *container) = 0;
+
+    virtual const void * STDMETHODCALLTYPE GetData(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFormat(
+        WINED3DFORMAT format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PrivateSetup(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE ModifyLocation(
+        DWORD location,
+        BOOL persistent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LoadLocation(
+        DWORD location,
+        const RECT *rect) = 0;
+
+    virtual WINED3DSURFTYPE STDMETHODCALLTYPE GetImplType(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawOverlay(
+        ) = 0;
+
+};
+#else
+typedef struct IWineD3DSurfaceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DSurface* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DSurface* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DSurface* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DSurface* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DSurface* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DSurface* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DSurface* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DSurface* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DSurface* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DSurface* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DSurface* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DSurface* This);
+
+    /*** IWineD3DSurface methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetContainer)(
+        IWineD3DSurface* This,
+        REFIID riid,
+        void **container);
+
+    HRESULT (STDMETHODCALLTYPE *GetDesc)(
+        IWineD3DSurface* This,
+        WINED3DSURFACE_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *LockRect)(
+        IWineD3DSurface* This,
+        WINED3DLOCKED_RECT *locked_rect,
+        const RECT *rect,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockRect)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetDC)(
+        IWineD3DSurface* This,
+        HDC *dc);
+
+    HRESULT (STDMETHODCALLTYPE *ReleaseDC)(
+        IWineD3DSurface* This,
+        HDC dc);
+
+    HRESULT (STDMETHODCALLTYPE *Flip)(
+        IWineD3DSurface* This,
+        IWineD3DSurface *override,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *Blt)(
+        IWineD3DSurface* This,
+        const RECT *dst_rect,
+        IWineD3DSurface *src_surface,
+        const RECT *src_rect,
+        DWORD flags,
+        const WINEDDBLTFX *blt_fx,
+        WINED3DTEXTUREFILTERTYPE filter);
+
+    HRESULT (STDMETHODCALLTYPE *GetBltStatus)(
+        IWineD3DSurface* This,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetFlipStatus)(
+        IWineD3DSurface* This,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *IsLost)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *Restore)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *BltFast)(
+        IWineD3DSurface* This,
+        DWORD dst_x,
+        DWORD dst_y,
+        IWineD3DSurface *src_surface,
+        const RECT *src_rect,
+        DWORD trans);
+
+    HRESULT (STDMETHODCALLTYPE *GetPalette)(
+        IWineD3DSurface* This,
+        IWineD3DPalette **palette);
+
+    HRESULT (STDMETHODCALLTYPE *SetPalette)(
+        IWineD3DSurface* This,
+        IWineD3DPalette *palette);
+
+    HRESULT (STDMETHODCALLTYPE *RealizePalette)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetColorKey)(
+        IWineD3DSurface* This,
+        DWORD flags,
+        const WINEDDCOLORKEY *color_key);
+
+    DWORD (STDMETHODCALLTYPE *GetPitch)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetMem)(
+        IWineD3DSurface* This,
+        void *mem);
+
+    HRESULT (STDMETHODCALLTYPE *SetOverlayPosition)(
+        IWineD3DSurface* This,
+        LONG x,
+        LONG y);
+
+    HRESULT (STDMETHODCALLTYPE *GetOverlayPosition)(
+        IWineD3DSurface* This,
+        LONG *x,
+        LONG *y);
+
+    HRESULT (STDMETHODCALLTYPE *UpdateOverlayZOrder)(
+        IWineD3DSurface* This,
+        DWORD flags,
+        IWineD3DSurface *ref);
+
+    HRESULT (STDMETHODCALLTYPE *UpdateOverlay)(
+        IWineD3DSurface* This,
+        const RECT *src_rect,
+        IWineD3DSurface *dst_surface,
+        const RECT *dst_rect,
+        DWORD flags,
+        const WINEDDOVERLAYFX *fx);
+
+    HRESULT (STDMETHODCALLTYPE *SetClipper)(
+        IWineD3DSurface* This,
+        IWineD3DClipper *clipper);
+
+    HRESULT (STDMETHODCALLTYPE *GetClipper)(
+        IWineD3DSurface* This,
+        IWineD3DClipper **clipper);
+
+    HRESULT (STDMETHODCALLTYPE *LoadTexture)(
+        IWineD3DSurface* This,
+        BOOL srgb_mode);
+
+    void (STDMETHODCALLTYPE *BindTexture)(
+        IWineD3DSurface* This,
+        BOOL srgb);
+
+    HRESULT (STDMETHODCALLTYPE *SaveSnapshot)(
+        IWineD3DSurface* This,
+        const char *filename);
+
+    HRESULT (STDMETHODCALLTYPE *SetContainer)(
+        IWineD3DSurface* This,
+        IWineD3DBase *container);
+
+    const void * (STDMETHODCALLTYPE *GetData)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetFormat)(
+        IWineD3DSurface* This,
+        WINED3DFORMAT format);
+
+    HRESULT (STDMETHODCALLTYPE *PrivateSetup)(
+        IWineD3DSurface* This);
+
+    void (STDMETHODCALLTYPE *ModifyLocation)(
+        IWineD3DSurface* This,
+        DWORD location,
+        BOOL persistent);
+
+    HRESULT (STDMETHODCALLTYPE *LoadLocation)(
+        IWineD3DSurface* This,
+        DWORD location,
+        const RECT *rect);
+
+    WINED3DSURFTYPE (STDMETHODCALLTYPE *GetImplType)(
+        IWineD3DSurface* This);
+
+    HRESULT (STDMETHODCALLTYPE *DrawOverlay)(
+        IWineD3DSurface* This);
+
+    END_INTERFACE
+} IWineD3DSurfaceVtbl;
+interface IWineD3DSurface {
+    CONST_VTBL IWineD3DSurfaceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DSurface_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DSurface_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DSurface_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DSurface_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DSurface_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DSurface_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DSurface_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DSurface_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DSurface_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DSurface_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DSurface_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DSurface_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DSurface methods ***/
+#define IWineD3DSurface_GetContainer(This,riid,container) (This)->lpVtbl->GetContainer(This,riid,container)
+#define IWineD3DSurface_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
+#define IWineD3DSurface_LockRect(This,locked_rect,rect,flags) (This)->lpVtbl->LockRect(This,locked_rect,rect,flags)
+#define IWineD3DSurface_UnlockRect(This) (This)->lpVtbl->UnlockRect(This)
+#define IWineD3DSurface_GetDC(This,dc) (This)->lpVtbl->GetDC(This,dc)
+#define IWineD3DSurface_ReleaseDC(This,dc) (This)->lpVtbl->ReleaseDC(This,dc)
+#define IWineD3DSurface_Flip(This,override,flags) (This)->lpVtbl->Flip(This,override,flags)
+#define IWineD3DSurface_Blt(This,dst_rect,src_surface,src_rect,flags,blt_fx,filter) (This)->lpVtbl->Blt(This,dst_rect,src_surface,src_rect,flags,blt_fx,filter)
+#define IWineD3DSurface_GetBltStatus(This,flags) (This)->lpVtbl->GetBltStatus(This,flags)
+#define IWineD3DSurface_GetFlipStatus(This,flags) (This)->lpVtbl->GetFlipStatus(This,flags)
+#define IWineD3DSurface_IsLost(This) (This)->lpVtbl->IsLost(This)
+#define IWineD3DSurface_Restore(This) (This)->lpVtbl->Restore(This)
+#define IWineD3DSurface_BltFast(This,dst_x,dst_y,src_surface,src_rect,trans) (This)->lpVtbl->BltFast(This,dst_x,dst_y,src_surface,src_rect,trans)
+#define IWineD3DSurface_GetPalette(This,palette) (This)->lpVtbl->GetPalette(This,palette)
+#define IWineD3DSurface_SetPalette(This,palette) (This)->lpVtbl->SetPalette(This,palette)
+#define IWineD3DSurface_RealizePalette(This) (This)->lpVtbl->RealizePalette(This)
+#define IWineD3DSurface_SetColorKey(This,flags,color_key) (This)->lpVtbl->SetColorKey(This,flags,color_key)
+#define IWineD3DSurface_GetPitch(This) (This)->lpVtbl->GetPitch(This)
+#define IWineD3DSurface_SetMem(This,mem) (This)->lpVtbl->SetMem(This,mem)
+#define IWineD3DSurface_SetOverlayPosition(This,x,y) (This)->lpVtbl->SetOverlayPosition(This,x,y)
+#define IWineD3DSurface_GetOverlayPosition(This,x,y) (This)->lpVtbl->GetOverlayPosition(This,x,y)
+#define IWineD3DSurface_UpdateOverlayZOrder(This,flags,ref) (This)->lpVtbl->UpdateOverlayZOrder(This,flags,ref)
+#define IWineD3DSurface_UpdateOverlay(This,src_rect,dst_surface,dst_rect,flags,fx) (This)->lpVtbl->UpdateOverlay(This,src_rect,dst_surface,dst_rect,flags,fx)
+#define IWineD3DSurface_SetClipper(This,clipper) (This)->lpVtbl->SetClipper(This,clipper)
+#define IWineD3DSurface_GetClipper(This,clipper) (This)->lpVtbl->GetClipper(This,clipper)
+#define IWineD3DSurface_LoadTexture(This,srgb_mode) (This)->lpVtbl->LoadTexture(This,srgb_mode)
+#define IWineD3DSurface_BindTexture(This,srgb) (This)->lpVtbl->BindTexture(This,srgb)
+#define IWineD3DSurface_SaveSnapshot(This,filename) (This)->lpVtbl->SaveSnapshot(This,filename)
+#define IWineD3DSurface_SetContainer(This,container) (This)->lpVtbl->SetContainer(This,container)
+#define IWineD3DSurface_GetData(This) (This)->lpVtbl->GetData(This)
+#define IWineD3DSurface_SetFormat(This,format) (This)->lpVtbl->SetFormat(This,format)
+#define IWineD3DSurface_PrivateSetup(This) (This)->lpVtbl->PrivateSetup(This)
+#define IWineD3DSurface_ModifyLocation(This,location,persistent) (This)->lpVtbl->ModifyLocation(This,location,persistent)
+#define IWineD3DSurface_LoadLocation(This,location,rect) (This)->lpVtbl->LoadLocation(This,location,rect)
+#define IWineD3DSurface_GetImplType(This) (This)->lpVtbl->GetImplType(This)
+#define IWineD3DSurface_DrawOverlay(This) (This)->lpVtbl->DrawOverlay(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetContainer_Proxy(
+    IWineD3DSurface* This,
+    REFIID riid,
+    void **container);
+void __RPC_STUB IWineD3DSurface_GetContainer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetDesc_Proxy(
+    IWineD3DSurface* This,
+    WINED3DSURFACE_DESC *desc);
+void __RPC_STUB IWineD3DSurface_GetDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_LockRect_Proxy(
+    IWineD3DSurface* This,
+    WINED3DLOCKED_RECT *locked_rect,
+    const RECT *rect,
+    DWORD flags);
+void __RPC_STUB IWineD3DSurface_LockRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_UnlockRect_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_UnlockRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetDC_Proxy(
+    IWineD3DSurface* This,
+    HDC *dc);
+void __RPC_STUB IWineD3DSurface_GetDC_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_ReleaseDC_Proxy(
+    IWineD3DSurface* This,
+    HDC dc);
+void __RPC_STUB IWineD3DSurface_ReleaseDC_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_Flip_Proxy(
+    IWineD3DSurface* This,
+    IWineD3DSurface *override,
+    DWORD flags);
+void __RPC_STUB IWineD3DSurface_Flip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_Blt_Proxy(
+    IWineD3DSurface* This,
+    const RECT *dst_rect,
+    IWineD3DSurface *src_surface,
+    const RECT *src_rect,
+    DWORD flags,
+    const WINEDDBLTFX *blt_fx,
+    WINED3DTEXTUREFILTERTYPE filter);
+void __RPC_STUB IWineD3DSurface_Blt_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetBltStatus_Proxy(
+    IWineD3DSurface* This,
+    DWORD flags);
+void __RPC_STUB IWineD3DSurface_GetBltStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetFlipStatus_Proxy(
+    IWineD3DSurface* This,
+    DWORD flags);
+void __RPC_STUB IWineD3DSurface_GetFlipStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_IsLost_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_IsLost_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_Restore_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_Restore_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_BltFast_Proxy(
+    IWineD3DSurface* This,
+    DWORD dst_x,
+    DWORD dst_y,
+    IWineD3DSurface *src_surface,
+    const RECT *src_rect,
+    DWORD trans);
+void __RPC_STUB IWineD3DSurface_BltFast_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetPalette_Proxy(
+    IWineD3DSurface* This,
+    IWineD3DPalette **palette);
+void __RPC_STUB IWineD3DSurface_GetPalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetPalette_Proxy(
+    IWineD3DSurface* This,
+    IWineD3DPalette *palette);
+void __RPC_STUB IWineD3DSurface_SetPalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_RealizePalette_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_RealizePalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetColorKey_Proxy(
+    IWineD3DSurface* This,
+    DWORD flags,
+    const WINEDDCOLORKEY *color_key);
+void __RPC_STUB IWineD3DSurface_SetColorKey_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IWineD3DSurface_GetPitch_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_GetPitch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetMem_Proxy(
+    IWineD3DSurface* This,
+    void *mem);
+void __RPC_STUB IWineD3DSurface_SetMem_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetOverlayPosition_Proxy(
+    IWineD3DSurface* This,
+    LONG x,
+    LONG y);
+void __RPC_STUB IWineD3DSurface_SetOverlayPosition_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetOverlayPosition_Proxy(
+    IWineD3DSurface* This,
+    LONG *x,
+    LONG *y);
+void __RPC_STUB IWineD3DSurface_GetOverlayPosition_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_UpdateOverlayZOrder_Proxy(
+    IWineD3DSurface* This,
+    DWORD flags,
+    IWineD3DSurface *ref);
+void __RPC_STUB IWineD3DSurface_UpdateOverlayZOrder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_UpdateOverlay_Proxy(
+    IWineD3DSurface* This,
+    const RECT *src_rect,
+    IWineD3DSurface *dst_surface,
+    const RECT *dst_rect,
+    DWORD flags,
+    const WINEDDOVERLAYFX *fx);
+void __RPC_STUB IWineD3DSurface_UpdateOverlay_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetClipper_Proxy(
+    IWineD3DSurface* This,
+    IWineD3DClipper *clipper);
+void __RPC_STUB IWineD3DSurface_SetClipper_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_GetClipper_Proxy(
+    IWineD3DSurface* This,
+    IWineD3DClipper **clipper);
+void __RPC_STUB IWineD3DSurface_GetClipper_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_LoadTexture_Proxy(
+    IWineD3DSurface* This,
+    BOOL srgb_mode);
+void __RPC_STUB IWineD3DSurface_LoadTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DSurface_BindTexture_Proxy(
+    IWineD3DSurface* This,
+    BOOL srgb);
+void __RPC_STUB IWineD3DSurface_BindTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SaveSnapshot_Proxy(
+    IWineD3DSurface* This,
+    const char *filename);
+void __RPC_STUB IWineD3DSurface_SaveSnapshot_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetContainer_Proxy(
+    IWineD3DSurface* This,
+    IWineD3DBase *container);
+void __RPC_STUB IWineD3DSurface_SetContainer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+const void * STDMETHODCALLTYPE IWineD3DSurface_GetData_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_GetData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_SetFormat_Proxy(
+    IWineD3DSurface* This,
+    WINED3DFORMAT format);
+void __RPC_STUB IWineD3DSurface_SetFormat_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_PrivateSetup_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_PrivateSetup_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DSurface_ModifyLocation_Proxy(
+    IWineD3DSurface* This,
+    DWORD location,
+    BOOL persistent);
+void __RPC_STUB IWineD3DSurface_ModifyLocation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_LoadLocation_Proxy(
+    IWineD3DSurface* This,
+    DWORD location,
+    const RECT *rect);
+void __RPC_STUB IWineD3DSurface_LoadLocation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+WINED3DSURFTYPE STDMETHODCALLTYPE IWineD3DSurface_GetImplType_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_GetImplType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSurface_DrawOverlay_Proxy(
+    IWineD3DSurface* This);
+void __RPC_STUB IWineD3DSurface_DrawOverlay_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DSurface_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DVolume interface
+ */
+#ifndef __IWineD3DVolume_INTERFACE_DEFINED__
+#define __IWineD3DVolume_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DVolume, 0x24769ed8, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DVolume : public IWineD3DResource
+{
+    virtual HRESULT STDMETHODCALLTYPE GetContainer(
+        REFIID riid,
+        void **container) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDesc(
+        WINED3DVOLUME_DESC *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockBox(
+        WINED3DLOCKED_BOX *locked_box,
+        const WINED3DBOX *box,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockBox(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LoadTexture(
+        int gl_level,
+        BOOL srgb_mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetContainer(
+        IWineD3DBase *container) = 0;
+
+};
+#else
+typedef struct IWineD3DVolumeVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DVolume* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DVolume* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DVolume* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DVolume* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DVolume* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DVolume* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DVolume* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DVolume* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DVolume* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DVolume* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DVolume* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DVolume* This);
+
+    /*** IWineD3DVolume methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetContainer)(
+        IWineD3DVolume* This,
+        REFIID riid,
+        void **container);
+
+    HRESULT (STDMETHODCALLTYPE *GetDesc)(
+        IWineD3DVolume* This,
+        WINED3DVOLUME_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *LockBox)(
+        IWineD3DVolume* This,
+        WINED3DLOCKED_BOX *locked_box,
+        const WINED3DBOX *box,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockBox)(
+        IWineD3DVolume* This);
+
+    HRESULT (STDMETHODCALLTYPE *LoadTexture)(
+        IWineD3DVolume* This,
+        int gl_level,
+        BOOL srgb_mode);
+
+    HRESULT (STDMETHODCALLTYPE *SetContainer)(
+        IWineD3DVolume* This,
+        IWineD3DBase *container);
+
+    END_INTERFACE
+} IWineD3DVolumeVtbl;
+interface IWineD3DVolume {
+    CONST_VTBL IWineD3DVolumeVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DVolume_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DVolume_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DVolume_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DVolume_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DVolume_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DVolume_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DVolume_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DVolume_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DVolume_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DVolume_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DVolume methods ***/
+#define IWineD3DVolume_GetContainer(This,riid,container) (This)->lpVtbl->GetContainer(This,riid,container)
+#define IWineD3DVolume_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
+#define IWineD3DVolume_LockBox(This,locked_box,box,flags) (This)->lpVtbl->LockBox(This,locked_box,box,flags)
+#define IWineD3DVolume_UnlockBox(This) (This)->lpVtbl->UnlockBox(This)
+#define IWineD3DVolume_LoadTexture(This,gl_level,srgb_mode) (This)->lpVtbl->LoadTexture(This,gl_level,srgb_mode)
+#define IWineD3DVolume_SetContainer(This,container) (This)->lpVtbl->SetContainer(This,container)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_GetContainer_Proxy(
+    IWineD3DVolume* This,
+    REFIID riid,
+    void **container);
+void __RPC_STUB IWineD3DVolume_GetContainer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_GetDesc_Proxy(
+    IWineD3DVolume* This,
+    WINED3DVOLUME_DESC *desc);
+void __RPC_STUB IWineD3DVolume_GetDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_LockBox_Proxy(
+    IWineD3DVolume* This,
+    WINED3DLOCKED_BOX *locked_box,
+    const WINED3DBOX *box,
+    DWORD flags);
+void __RPC_STUB IWineD3DVolume_LockBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_UnlockBox_Proxy(
+    IWineD3DVolume* This);
+void __RPC_STUB IWineD3DVolume_UnlockBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_LoadTexture_Proxy(
+    IWineD3DVolume* This,
+    int gl_level,
+    BOOL srgb_mode);
+void __RPC_STUB IWineD3DVolume_LoadTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolume_SetContainer_Proxy(
+    IWineD3DVolume* This,
+    IWineD3DBase *container);
+void __RPC_STUB IWineD3DVolume_SetContainer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DVolume_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DBaseTexture interface
+ */
+#ifndef __IWineD3DBaseTexture_INTERFACE_DEFINED__
+#define __IWineD3DBaseTexture_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DBaseTexture, 0x3c2aebf6, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DBaseTexture : public IWineD3DResource
+{
+    virtual DWORD STDMETHODCALLTYPE SetLOD(
+        DWORD new_lod) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE GetLOD(
+        ) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE GetLevelCount(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAutoGenFilterType(
+        WINED3DTEXTUREFILTERTYPE filter_type) = 0;
+
+    virtual WINED3DTEXTUREFILTERTYPE STDMETHODCALLTYPE GetAutoGenFilterType(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE GenerateMipSubLevels(
+        ) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE SetDirty(
+        BOOL dirty) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE GetDirty(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BindTexture(
+        BOOL srgb) = 0;
+
+    virtual UINT STDMETHODCALLTYPE GetTextureDimensions(
+        ) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE IsCondNP2(
+        ) = 0;
+
+};
+#else
+typedef struct IWineD3DBaseTextureVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DBaseTexture* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DBaseTexture* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DBaseTexture* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DBaseTexture* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DBaseTexture* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DBaseTexture* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DBaseTexture* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DBaseTexture* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DBaseTexture* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DBaseTexture* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DBaseTexture* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DBaseTexture* This);
+
+    /*** IWineD3DBaseTexture methods ***/
+    DWORD (STDMETHODCALLTYPE *SetLOD)(
+        IWineD3DBaseTexture* This,
+        DWORD new_lod);
+
+    DWORD (STDMETHODCALLTYPE *GetLOD)(
+        IWineD3DBaseTexture* This);
+
+    DWORD (STDMETHODCALLTYPE *GetLevelCount)(
+        IWineD3DBaseTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetAutoGenFilterType)(
+        IWineD3DBaseTexture* This,
+        WINED3DTEXTUREFILTERTYPE filter_type);
+
+    WINED3DTEXTUREFILTERTYPE (STDMETHODCALLTYPE *GetAutoGenFilterType)(
+        IWineD3DBaseTexture* This);
+
+    void (STDMETHODCALLTYPE *GenerateMipSubLevels)(
+        IWineD3DBaseTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *SetDirty)(
+        IWineD3DBaseTexture* This,
+        BOOL dirty);
+
+    BOOL (STDMETHODCALLTYPE *GetDirty)(
+        IWineD3DBaseTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *BindTexture)(
+        IWineD3DBaseTexture* This,
+        BOOL srgb);
+
+    UINT (STDMETHODCALLTYPE *GetTextureDimensions)(
+        IWineD3DBaseTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *IsCondNP2)(
+        IWineD3DBaseTexture* This);
+
+    END_INTERFACE
+} IWineD3DBaseTextureVtbl;
+interface IWineD3DBaseTexture {
+    CONST_VTBL IWineD3DBaseTextureVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DBaseTexture_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DBaseTexture_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DBaseTexture_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DBaseTexture_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DBaseTexture_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DBaseTexture_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DBaseTexture_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DBaseTexture_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DBaseTexture_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DBaseTexture_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DBaseTexture_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DBaseTexture_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DBaseTexture methods ***/
+#define IWineD3DBaseTexture_SetLOD(This,new_lod) (This)->lpVtbl->SetLOD(This,new_lod)
+#define IWineD3DBaseTexture_GetLOD(This) (This)->lpVtbl->GetLOD(This)
+#define IWineD3DBaseTexture_GetLevelCount(This) (This)->lpVtbl->GetLevelCount(This)
+#define IWineD3DBaseTexture_SetAutoGenFilterType(This,filter_type) (This)->lpVtbl->SetAutoGenFilterType(This,filter_type)
+#define IWineD3DBaseTexture_GetAutoGenFilterType(This) (This)->lpVtbl->GetAutoGenFilterType(This)
+#define IWineD3DBaseTexture_GenerateMipSubLevels(This) (This)->lpVtbl->GenerateMipSubLevels(This)
+#define IWineD3DBaseTexture_SetDirty(This,dirty) (This)->lpVtbl->SetDirty(This,dirty)
+#define IWineD3DBaseTexture_GetDirty(This) (This)->lpVtbl->GetDirty(This)
+#define IWineD3DBaseTexture_BindTexture(This,srgb) (This)->lpVtbl->BindTexture(This,srgb)
+#define IWineD3DBaseTexture_GetTextureDimensions(This) (This)->lpVtbl->GetTextureDimensions(This)
+#define IWineD3DBaseTexture_IsCondNP2(This) (This)->lpVtbl->IsCondNP2(This)
+#endif
+
+#endif
+
+DWORD STDMETHODCALLTYPE IWineD3DBaseTexture_SetLOD_Proxy(
+    IWineD3DBaseTexture* This,
+    DWORD new_lod);
+void __RPC_STUB IWineD3DBaseTexture_SetLOD_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IWineD3DBaseTexture_GetLOD_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_GetLOD_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IWineD3DBaseTexture_GetLevelCount_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_GetLevelCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DBaseTexture_SetAutoGenFilterType_Proxy(
+    IWineD3DBaseTexture* This,
+    WINED3DTEXTUREFILTERTYPE filter_type);
+void __RPC_STUB IWineD3DBaseTexture_SetAutoGenFilterType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+WINED3DTEXTUREFILTERTYPE STDMETHODCALLTYPE IWineD3DBaseTexture_GetAutoGenFilterType_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_GetAutoGenFilterType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DBaseTexture_GenerateMipSubLevels_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_GenerateMipSubLevels_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL STDMETHODCALLTYPE IWineD3DBaseTexture_SetDirty_Proxy(
+    IWineD3DBaseTexture* This,
+    BOOL dirty);
+void __RPC_STUB IWineD3DBaseTexture_SetDirty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL STDMETHODCALLTYPE IWineD3DBaseTexture_GetDirty_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_GetDirty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DBaseTexture_BindTexture_Proxy(
+    IWineD3DBaseTexture* This,
+    BOOL srgb);
+void __RPC_STUB IWineD3DBaseTexture_BindTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT STDMETHODCALLTYPE IWineD3DBaseTexture_GetTextureDimensions_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_GetTextureDimensions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL STDMETHODCALLTYPE IWineD3DBaseTexture_IsCondNP2_Proxy(
+    IWineD3DBaseTexture* This);
+void __RPC_STUB IWineD3DBaseTexture_IsCondNP2_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DBaseTexture_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DTexture interface
+ */
+#ifndef __IWineD3DTexture_INTERFACE_DEFINED__
+#define __IWineD3DTexture_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DTexture, 0x3e72cc1c, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DTexture : public IWineD3DBaseTexture
+{
+    virtual HRESULT STDMETHODCALLTYPE GetLevelDesc(
+        UINT level,
+        WINED3DSURFACE_DESC *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSurfaceLevel(
+        UINT level,
+        IWineD3DSurface **surface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockRect(
+        UINT level,
+        WINED3DLOCKED_RECT *locked_rect,
+        const RECT *rect,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockRect(
+        UINT level) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddDirtyRect(
+        const RECT *dirty_rect) = 0;
+
+};
+#else
+typedef struct IWineD3DTextureVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DTexture* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DTexture* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DTexture* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DTexture* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DTexture* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DTexture* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DTexture* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DTexture* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DTexture* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DTexture* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DTexture* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DTexture* This);
+
+    /*** IWineD3DBaseTexture methods ***/
+    DWORD (STDMETHODCALLTYPE *SetLOD)(
+        IWineD3DTexture* This,
+        DWORD new_lod);
+
+    DWORD (STDMETHODCALLTYPE *GetLOD)(
+        IWineD3DTexture* This);
+
+    DWORD (STDMETHODCALLTYPE *GetLevelCount)(
+        IWineD3DTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetAutoGenFilterType)(
+        IWineD3DTexture* This,
+        WINED3DTEXTUREFILTERTYPE filter_type);
+
+    WINED3DTEXTUREFILTERTYPE (STDMETHODCALLTYPE *GetAutoGenFilterType)(
+        IWineD3DTexture* This);
+
+    void (STDMETHODCALLTYPE *GenerateMipSubLevels)(
+        IWineD3DTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *SetDirty)(
+        IWineD3DTexture* This,
+        BOOL dirty);
+
+    BOOL (STDMETHODCALLTYPE *GetDirty)(
+        IWineD3DTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *BindTexture)(
+        IWineD3DTexture* This,
+        BOOL srgb);
+
+    UINT (STDMETHODCALLTYPE *GetTextureDimensions)(
+        IWineD3DTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *IsCondNP2)(
+        IWineD3DTexture* This);
+
+    /*** IWineD3DTexture methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetLevelDesc)(
+        IWineD3DTexture* This,
+        UINT level,
+        WINED3DSURFACE_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *GetSurfaceLevel)(
+        IWineD3DTexture* This,
+        UINT level,
+        IWineD3DSurface **surface);
+
+    HRESULT (STDMETHODCALLTYPE *LockRect)(
+        IWineD3DTexture* This,
+        UINT level,
+        WINED3DLOCKED_RECT *locked_rect,
+        const RECT *rect,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockRect)(
+        IWineD3DTexture* This,
+        UINT level);
+
+    HRESULT (STDMETHODCALLTYPE *AddDirtyRect)(
+        IWineD3DTexture* This,
+        const RECT *dirty_rect);
+
+    END_INTERFACE
+} IWineD3DTextureVtbl;
+interface IWineD3DTexture {
+    CONST_VTBL IWineD3DTextureVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DTexture_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DTexture_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DTexture_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DTexture_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DTexture_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DTexture_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DTexture_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DTexture_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DTexture_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DTexture_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DTexture_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DTexture_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DBaseTexture methods ***/
+#define IWineD3DTexture_SetLOD(This,new_lod) (This)->lpVtbl->SetLOD(This,new_lod)
+#define IWineD3DTexture_GetLOD(This) (This)->lpVtbl->GetLOD(This)
+#define IWineD3DTexture_GetLevelCount(This) (This)->lpVtbl->GetLevelCount(This)
+#define IWineD3DTexture_SetAutoGenFilterType(This,filter_type) (This)->lpVtbl->SetAutoGenFilterType(This,filter_type)
+#define IWineD3DTexture_GetAutoGenFilterType(This) (This)->lpVtbl->GetAutoGenFilterType(This)
+#define IWineD3DTexture_GenerateMipSubLevels(This) (This)->lpVtbl->GenerateMipSubLevels(This)
+#define IWineD3DTexture_SetDirty(This,dirty) (This)->lpVtbl->SetDirty(This,dirty)
+#define IWineD3DTexture_GetDirty(This) (This)->lpVtbl->GetDirty(This)
+#define IWineD3DTexture_BindTexture(This,srgb) (This)->lpVtbl->BindTexture(This,srgb)
+#define IWineD3DTexture_GetTextureDimensions(This) (This)->lpVtbl->GetTextureDimensions(This)
+#define IWineD3DTexture_IsCondNP2(This) (This)->lpVtbl->IsCondNP2(This)
+/*** IWineD3DTexture methods ***/
+#define IWineD3DTexture_GetLevelDesc(This,level,desc) (This)->lpVtbl->GetLevelDesc(This,level,desc)
+#define IWineD3DTexture_GetSurfaceLevel(This,level,surface) (This)->lpVtbl->GetSurfaceLevel(This,level,surface)
+#define IWineD3DTexture_LockRect(This,level,locked_rect,rect,flags) (This)->lpVtbl->LockRect(This,level,locked_rect,rect,flags)
+#define IWineD3DTexture_UnlockRect(This,level) (This)->lpVtbl->UnlockRect(This,level)
+#define IWineD3DTexture_AddDirtyRect(This,dirty_rect) (This)->lpVtbl->AddDirtyRect(This,dirty_rect)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DTexture_GetLevelDesc_Proxy(
+    IWineD3DTexture* This,
+    UINT level,
+    WINED3DSURFACE_DESC *desc);
+void __RPC_STUB IWineD3DTexture_GetLevelDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DTexture_GetSurfaceLevel_Proxy(
+    IWineD3DTexture* This,
+    UINT level,
+    IWineD3DSurface **surface);
+void __RPC_STUB IWineD3DTexture_GetSurfaceLevel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DTexture_LockRect_Proxy(
+    IWineD3DTexture* This,
+    UINT level,
+    WINED3DLOCKED_RECT *locked_rect,
+    const RECT *rect,
+    DWORD flags);
+void __RPC_STUB IWineD3DTexture_LockRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DTexture_UnlockRect_Proxy(
+    IWineD3DTexture* This,
+    UINT level);
+void __RPC_STUB IWineD3DTexture_UnlockRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DTexture_AddDirtyRect_Proxy(
+    IWineD3DTexture* This,
+    const RECT *dirty_rect);
+void __RPC_STUB IWineD3DTexture_AddDirtyRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DTexture_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DCubeTexture interface
+ */
+#ifndef __IWineD3DCubeTexture_INTERFACE_DEFINED__
+#define __IWineD3DCubeTexture_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DCubeTexture, 0x41752900, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DCubeTexture : public IWineD3DBaseTexture
+{
+    virtual HRESULT STDMETHODCALLTYPE GetLevelDesc(
+        UINT level,
+        WINED3DSURFACE_DESC *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCubeMapSurface(
+        WINED3DCUBEMAP_FACES face,
+        UINT level,
+        IWineD3DSurface **surface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockRect(
+        WINED3DCUBEMAP_FACES face,
+        UINT level,
+        WINED3DLOCKED_RECT *locked_rect,
+        const RECT *rect,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockRect(
+        WINED3DCUBEMAP_FACES face,
+        UINT level) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddDirtyRect(
+        WINED3DCUBEMAP_FACES face,
+        const RECT *dirty_rect) = 0;
+
+};
+#else
+typedef struct IWineD3DCubeTextureVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DCubeTexture* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DCubeTexture* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DCubeTexture* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DCubeTexture* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DCubeTexture* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DCubeTexture* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DCubeTexture* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DCubeTexture* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DCubeTexture* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DCubeTexture* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DCubeTexture* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DCubeTexture* This);
+
+    /*** IWineD3DBaseTexture methods ***/
+    DWORD (STDMETHODCALLTYPE *SetLOD)(
+        IWineD3DCubeTexture* This,
+        DWORD new_lod);
+
+    DWORD (STDMETHODCALLTYPE *GetLOD)(
+        IWineD3DCubeTexture* This);
+
+    DWORD (STDMETHODCALLTYPE *GetLevelCount)(
+        IWineD3DCubeTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetAutoGenFilterType)(
+        IWineD3DCubeTexture* This,
+        WINED3DTEXTUREFILTERTYPE filter_type);
+
+    WINED3DTEXTUREFILTERTYPE (STDMETHODCALLTYPE *GetAutoGenFilterType)(
+        IWineD3DCubeTexture* This);
+
+    void (STDMETHODCALLTYPE *GenerateMipSubLevels)(
+        IWineD3DCubeTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *SetDirty)(
+        IWineD3DCubeTexture* This,
+        BOOL dirty);
+
+    BOOL (STDMETHODCALLTYPE *GetDirty)(
+        IWineD3DCubeTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *BindTexture)(
+        IWineD3DCubeTexture* This,
+        BOOL srgb);
+
+    UINT (STDMETHODCALLTYPE *GetTextureDimensions)(
+        IWineD3DCubeTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *IsCondNP2)(
+        IWineD3DCubeTexture* This);
+
+    /*** IWineD3DCubeTexture methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetLevelDesc)(
+        IWineD3DCubeTexture* This,
+        UINT level,
+        WINED3DSURFACE_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *GetCubeMapSurface)(
+        IWineD3DCubeTexture* This,
+        WINED3DCUBEMAP_FACES face,
+        UINT level,
+        IWineD3DSurface **surface);
+
+    HRESULT (STDMETHODCALLTYPE *LockRect)(
+        IWineD3DCubeTexture* This,
+        WINED3DCUBEMAP_FACES face,
+        UINT level,
+        WINED3DLOCKED_RECT *locked_rect,
+        const RECT *rect,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockRect)(
+        IWineD3DCubeTexture* This,
+        WINED3DCUBEMAP_FACES face,
+        UINT level);
+
+    HRESULT (STDMETHODCALLTYPE *AddDirtyRect)(
+        IWineD3DCubeTexture* This,
+        WINED3DCUBEMAP_FACES face,
+        const RECT *dirty_rect);
+
+    END_INTERFACE
+} IWineD3DCubeTextureVtbl;
+interface IWineD3DCubeTexture {
+    CONST_VTBL IWineD3DCubeTextureVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DCubeTexture_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DCubeTexture_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DCubeTexture_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DCubeTexture_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DCubeTexture_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DCubeTexture_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DCubeTexture_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DCubeTexture_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DCubeTexture_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DCubeTexture_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DCubeTexture_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DCubeTexture_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DBaseTexture methods ***/
+#define IWineD3DCubeTexture_SetLOD(This,new_lod) (This)->lpVtbl->SetLOD(This,new_lod)
+#define IWineD3DCubeTexture_GetLOD(This) (This)->lpVtbl->GetLOD(This)
+#define IWineD3DCubeTexture_GetLevelCount(This) (This)->lpVtbl->GetLevelCount(This)
+#define IWineD3DCubeTexture_SetAutoGenFilterType(This,filter_type) (This)->lpVtbl->SetAutoGenFilterType(This,filter_type)
+#define IWineD3DCubeTexture_GetAutoGenFilterType(This) (This)->lpVtbl->GetAutoGenFilterType(This)
+#define IWineD3DCubeTexture_GenerateMipSubLevels(This) (This)->lpVtbl->GenerateMipSubLevels(This)
+#define IWineD3DCubeTexture_SetDirty(This,dirty) (This)->lpVtbl->SetDirty(This,dirty)
+#define IWineD3DCubeTexture_GetDirty(This) (This)->lpVtbl->GetDirty(This)
+#define IWineD3DCubeTexture_BindTexture(This,srgb) (This)->lpVtbl->BindTexture(This,srgb)
+#define IWineD3DCubeTexture_GetTextureDimensions(This) (This)->lpVtbl->GetTextureDimensions(This)
+#define IWineD3DCubeTexture_IsCondNP2(This) (This)->lpVtbl->IsCondNP2(This)
+/*** IWineD3DCubeTexture methods ***/
+#define IWineD3DCubeTexture_GetLevelDesc(This,level,desc) (This)->lpVtbl->GetLevelDesc(This,level,desc)
+#define IWineD3DCubeTexture_GetCubeMapSurface(This,face,level,surface) (This)->lpVtbl->GetCubeMapSurface(This,face,level,surface)
+#define IWineD3DCubeTexture_LockRect(This,face,level,locked_rect,rect,flags) (This)->lpVtbl->LockRect(This,face,level,locked_rect,rect,flags)
+#define IWineD3DCubeTexture_UnlockRect(This,face,level) (This)->lpVtbl->UnlockRect(This,face,level)
+#define IWineD3DCubeTexture_AddDirtyRect(This,face,dirty_rect) (This)->lpVtbl->AddDirtyRect(This,face,dirty_rect)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DCubeTexture_GetLevelDesc_Proxy(
+    IWineD3DCubeTexture* This,
+    UINT level,
+    WINED3DSURFACE_DESC *desc);
+void __RPC_STUB IWineD3DCubeTexture_GetLevelDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DCubeTexture_GetCubeMapSurface_Proxy(
+    IWineD3DCubeTexture* This,
+    WINED3DCUBEMAP_FACES face,
+    UINT level,
+    IWineD3DSurface **surface);
+void __RPC_STUB IWineD3DCubeTexture_GetCubeMapSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DCubeTexture_LockRect_Proxy(
+    IWineD3DCubeTexture* This,
+    WINED3DCUBEMAP_FACES face,
+    UINT level,
+    WINED3DLOCKED_RECT *locked_rect,
+    const RECT *rect,
+    DWORD flags);
+void __RPC_STUB IWineD3DCubeTexture_LockRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DCubeTexture_UnlockRect_Proxy(
+    IWineD3DCubeTexture* This,
+    WINED3DCUBEMAP_FACES face,
+    UINT level);
+void __RPC_STUB IWineD3DCubeTexture_UnlockRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DCubeTexture_AddDirtyRect_Proxy(
+    IWineD3DCubeTexture* This,
+    WINED3DCUBEMAP_FACES face,
+    const RECT *dirty_rect);
+void __RPC_STUB IWineD3DCubeTexture_AddDirtyRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DCubeTexture_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DVolumeTexture interface
+ */
+#ifndef __IWineD3DVolumeTexture_INTERFACE_DEFINED__
+#define __IWineD3DVolumeTexture_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DVolumeTexture, 0x7b39470c, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DVolumeTexture : public IWineD3DBaseTexture
+{
+    virtual HRESULT STDMETHODCALLTYPE GetLevelDesc(
+        UINT level,
+        WINED3DVOLUME_DESC *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVolumeLevel(
+        UINT level,
+        IWineD3DVolume **volume) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LockBox(
+        UINT level,
+        WINED3DLOCKED_BOX *locked_box,
+        const WINED3DBOX *box,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnlockBox(
+        UINT level) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddDirtyBox(
+        const WINED3DBOX *dirty_box) = 0;
+
+};
+#else
+typedef struct IWineD3DVolumeTextureVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DVolumeTexture* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DVolumeTexture* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DVolumeTexture* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DVolumeTexture* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DVolumeTexture* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DVolumeTexture* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DVolumeTexture* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DVolumeTexture* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DVolumeTexture* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DVolumeTexture* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DVolumeTexture* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DVolumeTexture* This);
+
+    /*** IWineD3DBaseTexture methods ***/
+    DWORD (STDMETHODCALLTYPE *SetLOD)(
+        IWineD3DVolumeTexture* This,
+        DWORD new_lod);
+
+    DWORD (STDMETHODCALLTYPE *GetLOD)(
+        IWineD3DVolumeTexture* This);
+
+    DWORD (STDMETHODCALLTYPE *GetLevelCount)(
+        IWineD3DVolumeTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetAutoGenFilterType)(
+        IWineD3DVolumeTexture* This,
+        WINED3DTEXTUREFILTERTYPE filter_type);
+
+    WINED3DTEXTUREFILTERTYPE (STDMETHODCALLTYPE *GetAutoGenFilterType)(
+        IWineD3DVolumeTexture* This);
+
+    void (STDMETHODCALLTYPE *GenerateMipSubLevels)(
+        IWineD3DVolumeTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *SetDirty)(
+        IWineD3DVolumeTexture* This,
+        BOOL dirty);
+
+    BOOL (STDMETHODCALLTYPE *GetDirty)(
+        IWineD3DVolumeTexture* This);
+
+    HRESULT (STDMETHODCALLTYPE *BindTexture)(
+        IWineD3DVolumeTexture* This,
+        BOOL srgb);
+
+    UINT (STDMETHODCALLTYPE *GetTextureDimensions)(
+        IWineD3DVolumeTexture* This);
+
+    BOOL (STDMETHODCALLTYPE *IsCondNP2)(
+        IWineD3DVolumeTexture* This);
+
+    /*** IWineD3DVolumeTexture methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetLevelDesc)(
+        IWineD3DVolumeTexture* This,
+        UINT level,
+        WINED3DVOLUME_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *GetVolumeLevel)(
+        IWineD3DVolumeTexture* This,
+        UINT level,
+        IWineD3DVolume **volume);
+
+    HRESULT (STDMETHODCALLTYPE *LockBox)(
+        IWineD3DVolumeTexture* This,
+        UINT level,
+        WINED3DLOCKED_BOX *locked_box,
+        const WINED3DBOX *box,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *UnlockBox)(
+        IWineD3DVolumeTexture* This,
+        UINT level);
+
+    HRESULT (STDMETHODCALLTYPE *AddDirtyBox)(
+        IWineD3DVolumeTexture* This,
+        const WINED3DBOX *dirty_box);
+
+    END_INTERFACE
+} IWineD3DVolumeTextureVtbl;
+interface IWineD3DVolumeTexture {
+    CONST_VTBL IWineD3DVolumeTextureVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DVolumeTexture_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DVolumeTexture_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DVolumeTexture_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DVolumeTexture_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DVolumeTexture_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DVolumeTexture_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DVolumeTexture_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DVolumeTexture_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DVolumeTexture_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DVolumeTexture_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DVolumeTexture_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DVolumeTexture_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DBaseTexture methods ***/
+#define IWineD3DVolumeTexture_SetLOD(This,new_lod) (This)->lpVtbl->SetLOD(This,new_lod)
+#define IWineD3DVolumeTexture_GetLOD(This) (This)->lpVtbl->GetLOD(This)
+#define IWineD3DVolumeTexture_GetLevelCount(This) (This)->lpVtbl->GetLevelCount(This)
+#define IWineD3DVolumeTexture_SetAutoGenFilterType(This,filter_type) (This)->lpVtbl->SetAutoGenFilterType(This,filter_type)
+#define IWineD3DVolumeTexture_GetAutoGenFilterType(This) (This)->lpVtbl->GetAutoGenFilterType(This)
+#define IWineD3DVolumeTexture_GenerateMipSubLevels(This) (This)->lpVtbl->GenerateMipSubLevels(This)
+#define IWineD3DVolumeTexture_SetDirty(This,dirty) (This)->lpVtbl->SetDirty(This,dirty)
+#define IWineD3DVolumeTexture_GetDirty(This) (This)->lpVtbl->GetDirty(This)
+#define IWineD3DVolumeTexture_BindTexture(This,srgb) (This)->lpVtbl->BindTexture(This,srgb)
+#define IWineD3DVolumeTexture_GetTextureDimensions(This) (This)->lpVtbl->GetTextureDimensions(This)
+#define IWineD3DVolumeTexture_IsCondNP2(This) (This)->lpVtbl->IsCondNP2(This)
+/*** IWineD3DVolumeTexture methods ***/
+#define IWineD3DVolumeTexture_GetLevelDesc(This,level,desc) (This)->lpVtbl->GetLevelDesc(This,level,desc)
+#define IWineD3DVolumeTexture_GetVolumeLevel(This,level,volume) (This)->lpVtbl->GetVolumeLevel(This,level,volume)
+#define IWineD3DVolumeTexture_LockBox(This,level,locked_box,box,flags) (This)->lpVtbl->LockBox(This,level,locked_box,box,flags)
+#define IWineD3DVolumeTexture_UnlockBox(This,level) (This)->lpVtbl->UnlockBox(This,level)
+#define IWineD3DVolumeTexture_AddDirtyBox(This,dirty_box) (This)->lpVtbl->AddDirtyBox(This,dirty_box)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DVolumeTexture_GetLevelDesc_Proxy(
+    IWineD3DVolumeTexture* This,
+    UINT level,
+    WINED3DVOLUME_DESC *desc);
+void __RPC_STUB IWineD3DVolumeTexture_GetLevelDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolumeTexture_GetVolumeLevel_Proxy(
+    IWineD3DVolumeTexture* This,
+    UINT level,
+    IWineD3DVolume **volume);
+void __RPC_STUB IWineD3DVolumeTexture_GetVolumeLevel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolumeTexture_LockBox_Proxy(
+    IWineD3DVolumeTexture* This,
+    UINT level,
+    WINED3DLOCKED_BOX *locked_box,
+    const WINED3DBOX *box,
+    DWORD flags);
+void __RPC_STUB IWineD3DVolumeTexture_LockBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolumeTexture_UnlockBox_Proxy(
+    IWineD3DVolumeTexture* This,
+    UINT level);
+void __RPC_STUB IWineD3DVolumeTexture_UnlockBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DVolumeTexture_AddDirtyBox_Proxy(
+    IWineD3DVolumeTexture* This,
+    const WINED3DBOX *dirty_box);
+void __RPC_STUB IWineD3DVolumeTexture_AddDirtyBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DVolumeTexture_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DVertexDeclaration interface
+ */
+#ifndef __IWineD3DVertexDeclaration_INTERFACE_DEFINED__
+#define __IWineD3DVertexDeclaration_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DVertexDeclaration, 0x7cd55be6, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DVertexDeclaration : public IWineD3DBase
+{
+};
+#else
+typedef struct IWineD3DVertexDeclarationVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DVertexDeclaration* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DVertexDeclaration* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DVertexDeclaration* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DVertexDeclaration* This,
+        IUnknown **parent);
+
+    END_INTERFACE
+} IWineD3DVertexDeclarationVtbl;
+interface IWineD3DVertexDeclaration {
+    CONST_VTBL IWineD3DVertexDeclarationVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DVertexDeclaration_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DVertexDeclaration_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DVertexDeclaration_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DVertexDeclaration_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+#endif
+
+#endif
+
+
+#endif  /* __IWineD3DVertexDeclaration_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DStateBlock interface
+ */
+#ifndef __IWineD3DStateBlock_INTERFACE_DEFINED__
+#define __IWineD3DStateBlock_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DStateBlock, 0x83b073ce, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DStateBlock : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Capture(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Apply(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InitStartupStateBlock(
+        ) = 0;
+
+};
+#else
+typedef struct IWineD3DStateBlockVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DStateBlock* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DStateBlock* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DStateBlock* This);
+
+    /*** IWineD3DStateBlock methods ***/
+    HRESULT (STDMETHODCALLTYPE *Capture)(
+        IWineD3DStateBlock* This);
+
+    HRESULT (STDMETHODCALLTYPE *Apply)(
+        IWineD3DStateBlock* This);
+
+    HRESULT (STDMETHODCALLTYPE *InitStartupStateBlock)(
+        IWineD3DStateBlock* This);
+
+    END_INTERFACE
+} IWineD3DStateBlockVtbl;
+interface IWineD3DStateBlock {
+    CONST_VTBL IWineD3DStateBlockVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DStateBlock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DStateBlock_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DStateBlock_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DStateBlock methods ***/
+#define IWineD3DStateBlock_Capture(This) (This)->lpVtbl->Capture(This)
+#define IWineD3DStateBlock_Apply(This) (This)->lpVtbl->Apply(This)
+#define IWineD3DStateBlock_InitStartupStateBlock(This) (This)->lpVtbl->InitStartupStateBlock(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DStateBlock_Capture_Proxy(
+    IWineD3DStateBlock* This);
+void __RPC_STUB IWineD3DStateBlock_Capture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DStateBlock_Apply_Proxy(
+    IWineD3DStateBlock* This);
+void __RPC_STUB IWineD3DStateBlock_Apply_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DStateBlock_InitStartupStateBlock_Proxy(
+    IWineD3DStateBlock* This);
+void __RPC_STUB IWineD3DStateBlock_InitStartupStateBlock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DStateBlock_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DQuery interface
+ */
+#ifndef __IWineD3DQuery_INTERFACE_DEFINED__
+#define __IWineD3DQuery_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DQuery, 0x905ddbac, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DQuery : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE GetData(
+        void *data,
+        DWORD data_size,
+        DWORD flags) = 0;
+
+    virtual DWORD STDMETHODCALLTYPE GetDataSize(
+        ) = 0;
+
+    virtual WINED3DQUERYTYPE STDMETHODCALLTYPE GetType(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Issue(
+        DWORD flags) = 0;
+
+};
+#else
+typedef struct IWineD3DQueryVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DQuery* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DQuery* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DQuery* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DQuery* This,
+        IUnknown **parent);
+
+    /*** IWineD3DQuery methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetData)(
+        IWineD3DQuery* This,
+        void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    DWORD (STDMETHODCALLTYPE *GetDataSize)(
+        IWineD3DQuery* This);
+
+    WINED3DQUERYTYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DQuery* This);
+
+    HRESULT (STDMETHODCALLTYPE *Issue)(
+        IWineD3DQuery* This,
+        DWORD flags);
+
+    END_INTERFACE
+} IWineD3DQueryVtbl;
+interface IWineD3DQuery {
+    CONST_VTBL IWineD3DQueryVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DQuery_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DQuery_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DQuery_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DQuery_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DQuery methods ***/
+#define IWineD3DQuery_GetData(This,data,data_size,flags) (This)->lpVtbl->GetData(This,data,data_size,flags)
+#define IWineD3DQuery_GetDataSize(This) (This)->lpVtbl->GetDataSize(This)
+#define IWineD3DQuery_GetType(This) (This)->lpVtbl->GetType(This)
+#define IWineD3DQuery_Issue(This,flags) (This)->lpVtbl->Issue(This,flags)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DQuery_GetData_Proxy(
+    IWineD3DQuery* This,
+    void *data,
+    DWORD data_size,
+    DWORD flags);
+void __RPC_STUB IWineD3DQuery_GetData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+DWORD STDMETHODCALLTYPE IWineD3DQuery_GetDataSize_Proxy(
+    IWineD3DQuery* This);
+void __RPC_STUB IWineD3DQuery_GetDataSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+WINED3DQUERYTYPE STDMETHODCALLTYPE IWineD3DQuery_GetType_Proxy(
+    IWineD3DQuery* This);
+void __RPC_STUB IWineD3DQuery_GetType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DQuery_Issue_Proxy(
+    IWineD3DQuery* This,
+    DWORD flags);
+void __RPC_STUB IWineD3DQuery_Issue_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DQuery_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DSwapChain interface
+ */
+#ifndef __IWineD3DSwapChain_INTERFACE_DEFINED__
+#define __IWineD3DSwapChain_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DSwapChain, 0x34d01b10, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DSwapChain : public IWineD3DBase
+{
+    virtual void STDMETHODCALLTYPE Destroy(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDevice(
+        IWineD3DDevice **device) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Present(
+        const RECT *src_rect,
+        const RECT *dst_rect,
+        HWND dst_window_override,
+        const RGNDATA *dirty_region,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDestWindowOverride(
+        HWND window) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFrontBufferData(
+        IWineD3DSurface *dst_surface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBackBuffer(
+        UINT backbuffer_idx,
+        WINED3DBACKBUFFER_TYPE backbuffer_type,
+        IWineD3DSurface **backbuffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRasterStatus(
+        WINED3DRASTER_STATUS *raster_status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDisplayMode(
+        WINED3DDISPLAYMODE *mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPresentParameters(
+        WINED3DPRESENT_PARAMETERS *present_parameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetGammaRamp(
+        DWORD flags,
+        const WINED3DGAMMARAMP *ramp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetGammaRamp(
+        WINED3DGAMMARAMP *ramp) = 0;
+
+};
+#else
+typedef struct IWineD3DSwapChainVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DSwapChain* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DSwapChain* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DSwapChain* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DSwapChain* This,
+        IUnknown **parent);
+
+    /*** IWineD3DSwapChain methods ***/
+    void (STDMETHODCALLTYPE *Destroy)(
+        IWineD3DSwapChain* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetDevice)(
+        IWineD3DSwapChain* This,
+        IWineD3DDevice **device);
+
+    HRESULT (STDMETHODCALLTYPE *Present)(
+        IWineD3DSwapChain* This,
+        const RECT *src_rect,
+        const RECT *dst_rect,
+        HWND dst_window_override,
+        const RGNDATA *dirty_region,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *SetDestWindowOverride)(
+        IWineD3DSwapChain* This,
+        HWND window);
+
+    HRESULT (STDMETHODCALLTYPE *GetFrontBufferData)(
+        IWineD3DSwapChain* This,
+        IWineD3DSurface *dst_surface);
+
+    HRESULT (STDMETHODCALLTYPE *GetBackBuffer)(
+        IWineD3DSwapChain* This,
+        UINT backbuffer_idx,
+        WINED3DBACKBUFFER_TYPE backbuffer_type,
+        IWineD3DSurface **backbuffer);
+
+    HRESULT (STDMETHODCALLTYPE *GetRasterStatus)(
+        IWineD3DSwapChain* This,
+        WINED3DRASTER_STATUS *raster_status);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplayMode)(
+        IWineD3DSwapChain* This,
+        WINED3DDISPLAYMODE *mode);
+
+    HRESULT (STDMETHODCALLTYPE *GetPresentParameters)(
+        IWineD3DSwapChain* This,
+        WINED3DPRESENT_PARAMETERS *present_parameters);
+
+    HRESULT (STDMETHODCALLTYPE *SetGammaRamp)(
+        IWineD3DSwapChain* This,
+        DWORD flags,
+        const WINED3DGAMMARAMP *ramp);
+
+    HRESULT (STDMETHODCALLTYPE *GetGammaRamp)(
+        IWineD3DSwapChain* This,
+        WINED3DGAMMARAMP *ramp);
+
+#ifdef VBOX_WITH_WDDM
+    HRESULT (STDMETHODCALLTYPE *Flush)(
+        IWineD3DSwapChain* This);
+#endif
+    END_INTERFACE
+} IWineD3DSwapChainVtbl;
+interface IWineD3DSwapChain {
+    CONST_VTBL IWineD3DSwapChainVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DSwapChain_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DSwapChain_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DSwapChain_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DSwapChain_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DSwapChain methods ***/
+#define IWineD3DSwapChain_Destroy(This) (This)->lpVtbl->Destroy(This)
+#define IWineD3DSwapChain_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
+#define IWineD3DSwapChain_Present(This,src_rect,dst_rect,dst_window_override,dirty_region,flags) (This)->lpVtbl->Present(This,src_rect,dst_rect,dst_window_override,dirty_region,flags)
+#define IWineD3DSwapChain_SetDestWindowOverride(This,window) (This)->lpVtbl->SetDestWindowOverride(This,window)
+#define IWineD3DSwapChain_GetFrontBufferData(This,dst_surface) (This)->lpVtbl->GetFrontBufferData(This,dst_surface)
+#define IWineD3DSwapChain_GetBackBuffer(This,backbuffer_idx,backbuffer_type,backbuffer) (This)->lpVtbl->GetBackBuffer(This,backbuffer_idx,backbuffer_type,backbuffer)
+#define IWineD3DSwapChain_GetRasterStatus(This,raster_status) (This)->lpVtbl->GetRasterStatus(This,raster_status)
+#define IWineD3DSwapChain_GetDisplayMode(This,mode) (This)->lpVtbl->GetDisplayMode(This,mode)
+#define IWineD3DSwapChain_GetPresentParameters(This,present_parameters) (This)->lpVtbl->GetPresentParameters(This,present_parameters)
+#define IWineD3DSwapChain_SetGammaRamp(This,flags,ramp) (This)->lpVtbl->SetGammaRamp(This,flags,ramp)
+#define IWineD3DSwapChain_GetGammaRamp(This,ramp) (This)->lpVtbl->GetGammaRamp(This,ramp)
+#ifdef VBOX_WITH_WDDM
+#define IWineD3DSwapChain_Flush(This) (This)->lpVtbl->Flush(This)
+#endif
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE IWineD3DSwapChain_Destroy_Proxy(
+    IWineD3DSwapChain* This);
+void __RPC_STUB IWineD3DSwapChain_Destroy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetDevice_Proxy(
+    IWineD3DSwapChain* This,
+    IWineD3DDevice **device);
+void __RPC_STUB IWineD3DSwapChain_GetDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_Present_Proxy(
+    IWineD3DSwapChain* This,
+    const RECT *src_rect,
+    const RECT *dst_rect,
+    HWND dst_window_override,
+    const RGNDATA *dirty_region,
+    DWORD flags);
+void __RPC_STUB IWineD3DSwapChain_Present_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_SetDestWindowOverride_Proxy(
+    IWineD3DSwapChain* This,
+    HWND window);
+void __RPC_STUB IWineD3DSwapChain_SetDestWindowOverride_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetFrontBufferData_Proxy(
+    IWineD3DSwapChain* This,
+    IWineD3DSurface *dst_surface);
+void __RPC_STUB IWineD3DSwapChain_GetFrontBufferData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetBackBuffer_Proxy(
+    IWineD3DSwapChain* This,
+    UINT backbuffer_idx,
+    WINED3DBACKBUFFER_TYPE backbuffer_type,
+    IWineD3DSurface **backbuffer);
+void __RPC_STUB IWineD3DSwapChain_GetBackBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetRasterStatus_Proxy(
+    IWineD3DSwapChain* This,
+    WINED3DRASTER_STATUS *raster_status);
+void __RPC_STUB IWineD3DSwapChain_GetRasterStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetDisplayMode_Proxy(
+    IWineD3DSwapChain* This,
+    WINED3DDISPLAYMODE *mode);
+void __RPC_STUB IWineD3DSwapChain_GetDisplayMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetPresentParameters_Proxy(
+    IWineD3DSwapChain* This,
+    WINED3DPRESENT_PARAMETERS *present_parameters);
+void __RPC_STUB IWineD3DSwapChain_GetPresentParameters_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_SetGammaRamp_Proxy(
+    IWineD3DSwapChain* This,
+    DWORD flags,
+    const WINED3DGAMMARAMP *ramp);
+void __RPC_STUB IWineD3DSwapChain_SetGammaRamp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DSwapChain_GetGammaRamp_Proxy(
+    IWineD3DSwapChain* This,
+    WINED3DGAMMARAMP *ramp);
+void __RPC_STUB IWineD3DSwapChain_GetGammaRamp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DSwapChain_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DBuffer interface
+ */
+#ifndef __IWineD3DBuffer_INTERFACE_DEFINED__
+#define __IWineD3DBuffer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DBuffer, 0xb3f028e8, 0x1a40, 0x4ab3, 0x92,0x92, 0x5b,0xf6,0xcf,0xd8,0x02,0x09);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DBuffer : public IWineD3DResource
+{
+    virtual HRESULT STDMETHODCALLTYPE Map(
+        UINT offset,
+        UINT size,
+        BYTE **data,
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unmap(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDesc(
+        WINED3DBUFFER_DESC *desc) = 0;
+
+};
+#else
+typedef struct IWineD3DBufferVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DBuffer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DBuffer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DBuffer* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DBuffer* This,
+        IUnknown **parent);
+
+    /*** IWineD3DResource methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IWineD3DBuffer* This,
+        REFGUID guid,
+        const void *data,
+        DWORD data_size,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IWineD3DBuffer* This,
+        REFGUID guid,
+        void *data,
+        DWORD *data_size);
+
+    HRESULT (STDMETHODCALLTYPE *FreePrivateData)(
+        IWineD3DBuffer* This,
+        REFGUID guid);
+
+    DWORD (STDMETHODCALLTYPE *SetPriority)(
+        IWineD3DBuffer* This,
+        DWORD new_priority);
+
+    DWORD (STDMETHODCALLTYPE *GetPriority)(
+        IWineD3DBuffer* This);
+
+    void (STDMETHODCALLTYPE *PreLoad)(
+        IWineD3DBuffer* This);
+
+    void (STDMETHODCALLTYPE *UnLoad)(
+        IWineD3DBuffer* This);
+
+    WINED3DRESOURCETYPE (STDMETHODCALLTYPE *GetType)(
+        IWineD3DBuffer* This);
+
+    /*** IWineD3DBuffer methods ***/
+    HRESULT (STDMETHODCALLTYPE *Map)(
+        IWineD3DBuffer* This,
+        UINT offset,
+        UINT size,
+        BYTE **data,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *Unmap)(
+        IWineD3DBuffer* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetDesc)(
+        IWineD3DBuffer* This,
+        WINED3DBUFFER_DESC *desc);
+
+    END_INTERFACE
+} IWineD3DBufferVtbl;
+interface IWineD3DBuffer {
+    CONST_VTBL IWineD3DBufferVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DBuffer_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DBuffer_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DResource methods ***/
+#define IWineD3DBuffer_SetPrivateData(This,guid,data,data_size,flags) (This)->lpVtbl->SetPrivateData(This,guid,data,data_size,flags)
+#define IWineD3DBuffer_GetPrivateData(This,guid,data,data_size) (This)->lpVtbl->GetPrivateData(This,guid,data,data_size)
+#define IWineD3DBuffer_FreePrivateData(This,guid) (This)->lpVtbl->FreePrivateData(This,guid)
+#define IWineD3DBuffer_SetPriority(This,new_priority) (This)->lpVtbl->SetPriority(This,new_priority)
+#define IWineD3DBuffer_GetPriority(This) (This)->lpVtbl->GetPriority(This)
+#define IWineD3DBuffer_PreLoad(This) (This)->lpVtbl->PreLoad(This)
+#define IWineD3DBuffer_UnLoad(This) (This)->lpVtbl->UnLoad(This)
+#define IWineD3DBuffer_GetType(This) (This)->lpVtbl->GetType(This)
+/*** IWineD3DBuffer methods ***/
+#define IWineD3DBuffer_Map(This,offset,size,data,flags) (This)->lpVtbl->Map(This,offset,size,data,flags)
+#define IWineD3DBuffer_Unmap(This) (This)->lpVtbl->Unmap(This)
+#define IWineD3DBuffer_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DBuffer_Map_Proxy(
+    IWineD3DBuffer* This,
+    UINT offset,
+    UINT size,
+    BYTE **data,
+    DWORD flags);
+void __RPC_STUB IWineD3DBuffer_Map_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DBuffer_Unmap_Proxy(
+    IWineD3DBuffer* This);
+void __RPC_STUB IWineD3DBuffer_Unmap_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DBuffer_GetDesc_Proxy(
+    IWineD3DBuffer* This,
+    WINED3DBUFFER_DESC *desc);
+void __RPC_STUB IWineD3DBuffer_GetDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DBuffer_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DBaseShader interface
+ */
+#ifndef __IWineD3DBaseShader_INTERFACE_DEFINED__
+#define __IWineD3DBaseShader_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DBaseShader, 0xeac93065, 0xa4df, 0x446f, 0x86,0xa1, 0x9e,0xf2,0xbc,0xa4,0x0a,0x3c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DBaseShader : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE GetFunction(
+        void *data,
+        UINT *data_size) = 0;
+
+};
+#else
+typedef struct IWineD3DBaseShaderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DBaseShader* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DBaseShader* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DBaseShader* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DBaseShader* This,
+        IUnknown **parent);
+
+    /*** IWineD3DBaseShader methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetFunction)(
+        IWineD3DBaseShader* This,
+        void *data,
+        UINT *data_size);
+
+    END_INTERFACE
+} IWineD3DBaseShaderVtbl;
+interface IWineD3DBaseShader {
+    CONST_VTBL IWineD3DBaseShaderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DBaseShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DBaseShader_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DBaseShader_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DBaseShader_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DBaseShader methods ***/
+#define IWineD3DBaseShader_GetFunction(This,data,data_size) (This)->lpVtbl->GetFunction(This,data,data_size)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DBaseShader_GetFunction_Proxy(
+    IWineD3DBaseShader* This,
+    void *data,
+    UINT *data_size);
+void __RPC_STUB IWineD3DBaseShader_GetFunction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DBaseShader_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DVertexShader interface
+ */
+#ifndef __IWineD3DVertexShader_INTERFACE_DEFINED__
+#define __IWineD3DVertexShader_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DVertexShader, 0x7f7a2b60, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DVertexShader : public IWineD3DBaseShader
+{
+    virtual HRESULT STDMETHODCALLTYPE SetLocalConstantsF(
+        UINT start_idx,
+        const float *src_data,
+        UINT vector4f_count) = 0;
+
+};
+#else
+typedef struct IWineD3DVertexShaderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DVertexShader* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DVertexShader* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DVertexShader* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DVertexShader* This,
+        IUnknown **parent);
+
+    /*** IWineD3DBaseShader methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetFunction)(
+        IWineD3DVertexShader* This,
+        void *data,
+        UINT *data_size);
+
+    /*** IWineD3DVertexShader methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetLocalConstantsF)(
+        IWineD3DVertexShader* This,
+        UINT start_idx,
+        const float *src_data,
+        UINT vector4f_count);
+
+    END_INTERFACE
+} IWineD3DVertexShaderVtbl;
+interface IWineD3DVertexShader {
+    CONST_VTBL IWineD3DVertexShaderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DVertexShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DVertexShader_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DVertexShader_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DVertexShader_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DBaseShader methods ***/
+#define IWineD3DVertexShader_GetFunction(This,data,data_size) (This)->lpVtbl->GetFunction(This,data,data_size)
+/*** IWineD3DVertexShader methods ***/
+#define IWineD3DVertexShader_SetLocalConstantsF(This,start_idx,src_data,vector4f_count) (This)->lpVtbl->SetLocalConstantsF(This,start_idx,src_data,vector4f_count)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DVertexShader_SetLocalConstantsF_Proxy(
+    IWineD3DVertexShader* This,
+    UINT start_idx,
+    const float *src_data,
+    UINT vector4f_count);
+void __RPC_STUB IWineD3DVertexShader_SetLocalConstantsF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DVertexShader_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DGeometryShader interface
+ */
+#ifndef __IWineD3DGeometryShader_INTERFACE_DEFINED__
+#define __IWineD3DGeometryShader_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DGeometryShader, 0x8276c113, 0x388b, 0x49d1, 0xad,0x8b, 0xc9,0xdd,0x8b,0xcb,0xab,0xcd);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DGeometryShader : public IWineD3DBaseShader
+{
+};
+#else
+typedef struct IWineD3DGeometryShaderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DGeometryShader* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DGeometryShader* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DGeometryShader* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DGeometryShader* This,
+        IUnknown **parent);
+
+    /*** IWineD3DBaseShader methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetFunction)(
+        IWineD3DGeometryShader* This,
+        void *data,
+        UINT *data_size);
+
+    END_INTERFACE
+} IWineD3DGeometryShaderVtbl;
+interface IWineD3DGeometryShader {
+    CONST_VTBL IWineD3DGeometryShaderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DGeometryShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DGeometryShader_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DGeometryShader_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DGeometryShader_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DBaseShader methods ***/
+#define IWineD3DGeometryShader_GetFunction(This,data,data_size) (This)->lpVtbl->GetFunction(This,data,data_size)
+#endif
+
+#endif
+
+
+#endif  /* __IWineD3DGeometryShader_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DPixelShader interface
+ */
+#ifndef __IWineD3DPixelShader_INTERFACE_DEFINED__
+#define __IWineD3DPixelShader_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DPixelShader, 0x818503da, 0x6f30, 0x11d9, 0xc6,0x87, 0x00,0x04,0x61,0x42,0xc1,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DPixelShader : public IWineD3DBaseShader
+{
+};
+#else
+typedef struct IWineD3DPixelShaderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DPixelShader* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DPixelShader* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DPixelShader* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DPixelShader* This,
+        IUnknown **parent);
+
+    /*** IWineD3DBaseShader methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetFunction)(
+        IWineD3DPixelShader* This,
+        void *data,
+        UINT *data_size);
+
+    END_INTERFACE
+} IWineD3DPixelShaderVtbl;
+interface IWineD3DPixelShader {
+    CONST_VTBL IWineD3DPixelShaderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DPixelShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DPixelShader_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DPixelShader_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DPixelShader_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DBaseShader methods ***/
+#define IWineD3DPixelShader_GetFunction(This,data,data_size) (This)->lpVtbl->GetFunction(This,data,data_size)
+#endif
+
+#endif
+
+
+#endif  /* __IWineD3DPixelShader_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWineD3DDevice interface
+ */
+#ifndef __IWineD3DDevice_INTERFACE_DEFINED__
+#define __IWineD3DDevice_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWineD3DDevice, 0x6d10a2ce, 0x09d0, 0x4a53, 0xa4,0x27, 0x11,0x38,0x8f,0x9f,0x8c,0xa5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IWineD3DDevice : public IWineD3DBase
+{
+    virtual HRESULT STDMETHODCALLTYPE CreateBuffer(
+        struct wined3d_buffer_desc *desc,
+        const void *data,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops,
+        IWineD3DBuffer **buffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVertexBuffer(
+        UINT length,
+        DWORD usage,
+        WINED3DPOOL pool,
+        IWineD3DBuffer **vertex_buffer,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateIndexBuffer(
+        UINT length,
+        DWORD usage,
+        WINED3DPOOL pool,
+        IWineD3DBuffer **index_buffer,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateStateBlock(
+        WINED3DSTATEBLOCKTYPE type,
+        IWineD3DStateBlock **stateblock,
+        IUnknown *parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateSurface(
+        UINT width,
+        UINT height,
+        WINED3DFORMAT format,
+        BOOL lockable,
+        BOOL discard,
+        UINT level,
+        IWineD3DSurface **surface,
+        DWORD usage,
+        WINED3DPOOL pool,
+        WINED3DMULTISAMPLE_TYPE multisample_type,
+        DWORD multisample_quality,
+        WINED3DSURFTYPE surface_type,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateRendertargetView(
+        IWineD3DResource *resource,
+        IUnknown *parent,
+        IWineD3DRendertargetView **rendertarget_view) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateTexture(
+        UINT width,
+        UINT height,
+        UINT levels,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DTexture **texture,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVolumeTexture(
+        UINT width,
+        UINT height,
+        UINT depth,
+        UINT levels,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DVolumeTexture **texture,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVolume(
+        UINT width,
+        UINT height,
+        UINT depth,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DVolume **volume,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateCubeTexture(
+        UINT edge_length,
+        UINT levels,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DCubeTexture **texture,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateQuery(
+        WINED3DQUERYTYPE type,
+        IWineD3DQuery **query,
+        IUnknown *parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateSwapChain(
+        WINED3DPRESENT_PARAMETERS *present_parameters,
+        IWineD3DSwapChain **swapchain,
+        IUnknown *parent,
+        WINED3DSURFTYPE surface_type) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVertexDeclaration(
+        IWineD3DVertexDeclaration **declaration,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops,
+        const WINED3DVERTEXELEMENT *elements,
+        UINT element_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVertexDeclarationFromFVF(
+        IWineD3DVertexDeclaration **declaration,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops,
+        DWORD fvf) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateVertexShader(
+        const DWORD *function,
+        const struct wined3d_shader_signature *output_signature,
+        IWineD3DVertexShader **shader,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateGeometryShader(
+        const DWORD *byte_code,
+        const struct wined3d_shader_signature *output_signature,
+        IWineD3DGeometryShader **shader,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreatePixelShader(
+        const DWORD *function,
+        const struct wined3d_shader_signature *output_signature,
+        IWineD3DPixelShader **shader,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreatePalette(
+        DWORD flags,
+        const PALETTEENTRY *palette_entry,
+        IWineD3DPalette **palette,
+        IUnknown *parent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Init3D(
+        WINED3DPRESENT_PARAMETERS *present_parameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InitGDI(
+        WINED3DPRESENT_PARAMETERS *present_parameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Uninit3D(
+        ULONG (STDMETHODCALLTYPE * destroy_swapchain_callback)(IWineD3DSwapChain *pSwapChain)) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UninitGDI(
+        ULONG (STDMETHODCALLTYPE * destroy_swapchain_callback)(IWineD3DSwapChain *pSwapChain)) = 0;
+
+    virtual void STDMETHODCALLTYPE SetMultithreaded(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EvictManagedResources(
+        ) = 0;
+
+    virtual UINT STDMETHODCALLTYPE GetAvailableTextureMem(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBackBuffer(
+        UINT swapchain_idx,
+        UINT backbuffer_idx,
+        WINED3DBACKBUFFER_TYPE backbuffer_type,
+        IWineD3DSurface **backbuffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCreationParameters(
+        WINED3DDEVICE_CREATION_PARAMETERS *creation_parameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDeviceCaps(
+        WINED3DCAPS *caps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDirect3D(
+        IWineD3D **d3d) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDisplayMode(
+        UINT swapchain_idx,
+        WINED3DDISPLAYMODE *mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDisplayMode(
+        UINT swapchain_idx,
+        const WINED3DDISPLAYMODE *mode) = 0;
+
+    virtual UINT STDMETHODCALLTYPE GetNumberOfSwapChains(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRasterStatus(
+        UINT swapchain_idx,
+        WINED3DRASTER_STATUS *raster_status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSwapChain(
+        UINT swapchain_idx,
+        IWineD3DSwapChain **swapchain) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        WINED3DPRESENT_PARAMETERS *present_parameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDialogBoxMode(
+        BOOL enable_dialogs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCursorProperties(
+        UINT x_hotspot,
+        UINT y_hotspot,
+        IWineD3DSurface *cursor_surface) = 0;
+
+    virtual void STDMETHODCALLTYPE SetCursorPosition(
+        int x_screen_space,
+        int y_screen_space,
+        DWORD flags) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE ShowCursor(
+        BOOL show) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClipPlane(
+        DWORD plane_idx,
+        const float *plane) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClipPlane(
+        DWORD plane_idx,
+        float *plane) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClipStatus(
+        const WINED3DCLIPSTATUS *clip_status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClipStatus(
+        WINED3DCLIPSTATUS *clip_status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCurrentTexturePalette(
+        UINT palette_number) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCurrentTexturePalette(
+        UINT *palette_number) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDepthStencilSurface(
+        IWineD3DSurface *depth_stencil) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDepthStencilSurface(
+        IWineD3DSurface **depth_stencil) = 0;
+
+    virtual void STDMETHODCALLTYPE SetGammaRamp(
+        UINT swapchain_idx,
+        DWORD flags,
+        const WINED3DGAMMARAMP *ramp) = 0;
+
+    virtual void STDMETHODCALLTYPE GetGammaRamp(
+        UINT swapchain_idx,
+        WINED3DGAMMARAMP *ramp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetIndexBuffer(
+        IWineD3DBuffer *index_buffer,
+        WINED3DFORMAT format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetIndexBuffer(
+        IWineD3DBuffer **index_buffer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetBaseVertexIndex(
+        INT base_index) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBaseVertexIndex(
+        INT *base_index) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetLight(
+        DWORD light_idx,
+        const WINED3DLIGHT *light) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLight(
+        DWORD light_idx,
+        WINED3DLIGHT *light) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetLightEnable(
+        DWORD light_idx,
+        BOOL enable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLightEnable(
+        DWORD light_idx,
+        BOOL *enable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMaterial(
+        const WINED3DMATERIAL *material) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMaterial(
+        WINED3DMATERIAL *material) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetNPatchMode(
+        float segments) = 0;
+
+    virtual float STDMETHODCALLTYPE GetNPatchMode(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPaletteEntries(
+        UINT palette_number,
+        const PALETTEENTRY *entries) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPaletteEntries(
+        UINT palette_number,
+        PALETTEENTRY *entries) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPixelShader(
+        IWineD3DPixelShader *shader) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPixelShader(
+        IWineD3DPixelShader **shader) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPixelShaderConstantB(
+        UINT start_register,
+        const BOOL *constants,
+        UINT bool_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPixelShaderConstantB(
+        UINT start_register,
+        BOOL *constants,
+        UINT bool_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPixelShaderConstantI(
+        UINT start_register,
+        const int *constants,
+        UINT vector4i_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPixelShaderConstantI(
+        UINT start_register,
+        int *constants,
+        UINT vector4i_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPixelShaderConstantF(
+        UINT start_register,
+        const float *constants,
+        UINT vector4f_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPixelShaderConstantF(
+        UINT start_register,
+        float *constants,
+        UINT vector4f_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetRenderState(
+        WINED3DRENDERSTATETYPE state,
+        DWORD value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRenderState(
+        WINED3DRENDERSTATETYPE state,
+        DWORD *value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetRenderTarget(
+        DWORD render_target_idx,
+        IWineD3DSurface *render_target,
+        BOOL set_viewport) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRenderTarget(
+        DWORD render_target_idx,
+        IWineD3DSurface **render_target) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFrontBackBuffers(
+        IWineD3DSurface *front,
+        IWineD3DSurface *back) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSamplerState(
+        DWORD sampler_idx,
+        WINED3DSAMPLERSTATETYPE state,
+        DWORD value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSamplerState(
+        DWORD sampler_idx,
+        WINED3DSAMPLERSTATETYPE state,
+        DWORD *value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetScissorRect(
+        const RECT *rect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetScissorRect(
+        RECT *rect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSoftwareVertexProcessing(
+        BOOL software) = 0;
+
+    virtual BOOL STDMETHODCALLTYPE GetSoftwareVertexProcessing(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetStreamSource(
+        UINT stream_idx,
+        IWineD3DBuffer *buffer,
+        UINT offset,
+        UINT stride) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStreamSource(
+        UINT stream_idx,
+        IWineD3DBuffer **buffer,
+        UINT *offset,
+        UINT *stride) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetStreamSourceFreq(
+        UINT stream_idx,
+        UINT divider) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStreamSourceFreq(
+        UINT stream_idx,
+        UINT *divider) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTexture(
+        DWORD stage,
+        IWineD3DBaseTexture *texture) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTexture(
+        DWORD stage,
+        IWineD3DBaseTexture **texture) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTextureStageState(
+        DWORD stage,
+        WINED3DTEXTURESTAGESTATETYPE state,
+        DWORD value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTextureStageState(
+        DWORD stage,
+        WINED3DTEXTURESTAGESTATETYPE state,
+        DWORD *value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTransform(
+        WINED3DTRANSFORMSTATETYPE state,
+        const WINED3DMATRIX *matrix) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTransform(
+        WINED3DTRANSFORMSTATETYPE state,
+        WINED3DMATRIX *matrix) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVertexDeclaration(
+        IWineD3DVertexDeclaration *declaration) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVertexDeclaration(
+        IWineD3DVertexDeclaration **declaration) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVertexShader(
+        IWineD3DVertexShader *shader) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVertexShader(
+        IWineD3DVertexShader **shader) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVertexShaderConstantB(
+        UINT start_register,
+        const BOOL *constants,
+        UINT bool_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVertexShaderConstantB(
+        UINT start_register,
+        BOOL *constants,
+        UINT bool_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVertexShaderConstantI(
+        UINT start_register,
+        const int *constants,
+        UINT vector4i_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVertexShaderConstantI(
+        UINT start_register,
+        int *constants,
+        UINT vector4i_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetVertexShaderConstantF(
+        UINT start_register,
+        const float *constants,
+        UINT vector4f_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetVertexShaderConstantF(
+        UINT start_register,
+        float *constants,
+        UINT vector4f_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetViewport(
+        const WINED3DVIEWPORT *viewport) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetViewport(
+        WINED3DVIEWPORT *viewport) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MultiplyTransform(
+        WINED3DTRANSFORMSTATETYPE state,
+        const WINED3DMATRIX *matrix) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ValidateDevice(
+        DWORD *num_passes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ProcessVertices(
+        UINT src_start_idx,
+        UINT dst_idx,
+        UINT vertex_count,
+        IWineD3DBuffer *dest_buffer,
+        IWineD3DVertexDeclaration *declaration,
+        DWORD flags,
+        DWORD DestFVF) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BeginStateBlock(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndStateBlock(
+        IWineD3DStateBlock **stateblock) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BeginScene(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndScene(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Present(
+        const RECT *src_rect,
+        const RECT *dst_rect,
+        HWND dst_window_override,
+        const RGNDATA *dirty_region) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clear(
+        DWORD rect_count,
+        const WINED3DRECT *rects,
+        DWORD flags,
+        WINED3DCOLOR color,
+        float z,
+        DWORD stencil) = 0;
+
+    virtual void STDMETHODCALLTYPE ClearRendertargetView(
+        IWineD3DRendertargetView *rendertarget_view,
+        const float color[4]) = 0;
+
+    virtual void STDMETHODCALLTYPE SetPrimitiveType(
+        WINED3DPRIMITIVETYPE primitive_topology) = 0;
+
+    virtual void STDMETHODCALLTYPE GetPrimitiveType(
+        WINED3DPRIMITIVETYPE *primitive_topology) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawPrimitive(
+        UINT start_vertex,
+        UINT vertex_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawIndexedPrimitive(
+        UINT start_idx,
+        UINT index_count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawPrimitiveUP(
+        UINT vertex_count,
+        const void *stream_data,
+        UINT stream_stride) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawIndexedPrimitiveUP(
+        UINT index_count,
+        const void *index_data,
+        WINED3DFORMAT index_data_format,
+        const void *stream_data,
+        UINT stream_stride) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawPrimitiveStrided(
+        UINT vertex_count,
+        const WineDirect3DVertexStridedData *strided_data) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawIndexedPrimitiveStrided(
+        UINT index_count,
+        const WineDirect3DVertexStridedData *strided_data,
+        UINT vertex_count,
+        const void *index_data,
+        WINED3DFORMAT index_data_format) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawRectPatch(
+        UINT handle,
+        const float *num_segs,
+        const WINED3DRECTPATCH_INFO *rect_patch_info) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawTriPatch(
+        UINT handle,
+        const float *num_segs,
+        const WINED3DTRIPATCH_INFO *tri_patch_info) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeletePatch(
+        UINT handle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ColorFill(
+        IWineD3DSurface *surface,
+        const WINED3DRECT *rect,
+        WINED3DCOLOR color) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UpdateTexture(
+        IWineD3DBaseTexture *src_texture,
+        IWineD3DBaseTexture *dst_texture) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UpdateSurface(
+        IWineD3DSurface *src_surface,
+        const RECT *src_rect,
+        IWineD3DSurface *dst_surface,
+        const POINT *dst_point) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFrontBufferData(
+        UINT swapchain_idx,
+        IWineD3DSurface *dst_surface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumResources(
+        HRESULT (STDMETHODCALLTYPE * callback)(IWineD3DResource *resource,void *pData),
+        void *data) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSurfaceFromDC(
+        HDC dc,
+        IWineD3DSurface **surface) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AcquireFocusWindow(
+        HWND window) = 0;
+
+    virtual void STDMETHODCALLTYPE ReleaseFocusWindow(
+        ) = 0;
+
+#ifdef VBOX_WITH_WDDM
+    virtual HRESULT STDMETHODCALLTYPE Flush(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddSwapChain(
+        IWineD3DSwapChain *swapchain) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveSwapChain(
+        IWineD3DSwapChain *swapchain) = 0;
+#endif
+};
+#else
+typedef struct IWineD3DDeviceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWineD3DDevice* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWineD3DDevice* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWineD3DDevice* This);
+
+    /*** IWineD3DBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IWineD3DDevice* This,
+        IUnknown **parent);
+
+    /*** IWineD3DDevice methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateBuffer)(
+        IWineD3DDevice* This,
+        struct wined3d_buffer_desc *desc,
+        const void *data,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops,
+        IWineD3DBuffer **buffer);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVertexBuffer)(
+        IWineD3DDevice* This,
+        UINT length,
+        DWORD usage,
+        WINED3DPOOL pool,
+        IWineD3DBuffer **vertex_buffer,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops);
+
+    HRESULT (STDMETHODCALLTYPE *CreateIndexBuffer)(
+        IWineD3DDevice* This,
+        UINT length,
+        DWORD usage,
+        WINED3DPOOL pool,
+        IWineD3DBuffer **index_buffer,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops);
+
+    HRESULT (STDMETHODCALLTYPE *CreateStateBlock)(
+        IWineD3DDevice* This,
+        WINED3DSTATEBLOCKTYPE type,
+        IWineD3DStateBlock **stateblock,
+        IUnknown *parent);
+
+    HRESULT (STDMETHODCALLTYPE *CreateSurface)(
+        IWineD3DDevice* This,
+        UINT width,
+        UINT height,
+        WINED3DFORMAT format,
+        BOOL lockable,
+        BOOL discard,
+        UINT level,
+        IWineD3DSurface **surface,
+        DWORD usage,
+        WINED3DPOOL pool,
+        WINED3DMULTISAMPLE_TYPE multisample_type,
+        DWORD multisample_quality,
+        WINED3DSURFTYPE surface_type,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops
+#ifdef VBOX_WITH_WDDM
+        , HANDLE *shared_handle
+        , void *pvClientMem
+#endif
+        );
+
+    HRESULT (STDMETHODCALLTYPE *CreateRendertargetView)(
+        IWineD3DDevice* This,
+        IWineD3DResource *resource,
+        IUnknown *parent,
+        IWineD3DRendertargetView **rendertarget_view);
+
+    HRESULT (STDMETHODCALLTYPE *CreateTexture)(
+        IWineD3DDevice* This,
+        UINT width,
+        UINT height,
+        UINT levels,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DTexture **texture,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops
+#ifdef VBOX_WITH_WDDM
+        , HANDLE *shared_handle
+        , void *pvClientMem
+#endif
+        );
+
+    HRESULT (STDMETHODCALLTYPE *CreateVolumeTexture)(
+        IWineD3DDevice* This,
+        UINT width,
+        UINT height,
+        UINT depth,
+        UINT levels,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DVolumeTexture **texture,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVolume)(
+        IWineD3DDevice* This,
+        UINT width,
+        UINT height,
+        UINT depth,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DVolume **volume,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops);
+
+    HRESULT (STDMETHODCALLTYPE *CreateCubeTexture)(
+        IWineD3DDevice* This,
+        UINT edge_length,
+        UINT levels,
+        DWORD usage,
+        WINED3DFORMAT format,
+        WINED3DPOOL pool,
+        IWineD3DCubeTexture **texture,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops
+#ifdef VBOX_WITH_WDDM
+        , HANDLE *shared_handle
+        , void *pvClientMem
+#endif
+        );
+
+    HRESULT (STDMETHODCALLTYPE *CreateQuery)(
+        IWineD3DDevice* This,
+        WINED3DQUERYTYPE type,
+        IWineD3DQuery **query,
+        IUnknown *parent);
+
+    HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
+        IWineD3DDevice* This,
+        WINED3DPRESENT_PARAMETERS *present_parameters,
+        IWineD3DSwapChain **swapchain,
+        IUnknown *parent,
+        WINED3DSURFTYPE surface_type);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVertexDeclaration)(
+        IWineD3DDevice* This,
+        IWineD3DVertexDeclaration **declaration,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops,
+        const WINED3DVERTEXELEMENT *elements,
+        UINT element_count);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVertexDeclarationFromFVF)(
+        IWineD3DDevice* This,
+        IWineD3DVertexDeclaration **declaration,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops,
+        DWORD fvf);
+
+    HRESULT (STDMETHODCALLTYPE *CreateVertexShader)(
+        IWineD3DDevice* This,
+        const DWORD *function,
+        const struct wined3d_shader_signature *output_signature,
+        IWineD3DVertexShader **shader,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops);
+
+    HRESULT (STDMETHODCALLTYPE *CreateGeometryShader)(
+        IWineD3DDevice* This,
+        const DWORD *byte_code,
+        const struct wined3d_shader_signature *output_signature,
+        IWineD3DGeometryShader **shader,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops);
+
+    HRESULT (STDMETHODCALLTYPE *CreatePixelShader)(
+        IWineD3DDevice* This,
+        const DWORD *function,
+        const struct wined3d_shader_signature *output_signature,
+        IWineD3DPixelShader **shader,
+        IUnknown *parent,
+        const struct wined3d_parent_ops *parent_ops);
+
+    HRESULT (STDMETHODCALLTYPE *CreatePalette)(
+        IWineD3DDevice* This,
+        DWORD flags,
+        const PALETTEENTRY *palette_entry,
+        IWineD3DPalette **palette,
+        IUnknown *parent);
+
+    HRESULT (STDMETHODCALLTYPE *Init3D)(
+        IWineD3DDevice* This,
+        WINED3DPRESENT_PARAMETERS *present_parameters);
+
+    HRESULT (STDMETHODCALLTYPE *InitGDI)(
+        IWineD3DDevice* This,
+        WINED3DPRESENT_PARAMETERS *present_parameters);
+
+    HRESULT (STDMETHODCALLTYPE *Uninit3D)(
+        IWineD3DDevice* This,
+        ULONG (STDMETHODCALLTYPE * destroy_swapchain_callback)(IWineD3DSwapChain *pSwapChain));
+
+    HRESULT (STDMETHODCALLTYPE *UninitGDI)(
+        IWineD3DDevice* This,
+        ULONG (STDMETHODCALLTYPE * destroy_swapchain_callback)(IWineD3DSwapChain *pSwapChain));
+
+    void (STDMETHODCALLTYPE *SetMultithreaded)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *EvictManagedResources)(
+        IWineD3DDevice* This);
+
+    UINT (STDMETHODCALLTYPE *GetAvailableTextureMem)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetBackBuffer)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        UINT backbuffer_idx,
+        WINED3DBACKBUFFER_TYPE backbuffer_type,
+        IWineD3DSurface **backbuffer);
+
+    HRESULT (STDMETHODCALLTYPE *GetCreationParameters)(
+        IWineD3DDevice* This,
+        WINED3DDEVICE_CREATION_PARAMETERS *creation_parameters);
+
+    HRESULT (STDMETHODCALLTYPE *GetDeviceCaps)(
+        IWineD3DDevice* This,
+        WINED3DCAPS *caps);
+
+    HRESULT (STDMETHODCALLTYPE *GetDirect3D)(
+        IWineD3DDevice* This,
+        IWineD3D **d3d);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplayMode)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        WINED3DDISPLAYMODE *mode);
+
+    HRESULT (STDMETHODCALLTYPE *SetDisplayMode)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        const WINED3DDISPLAYMODE *mode);
+
+    UINT (STDMETHODCALLTYPE *GetNumberOfSwapChains)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetRasterStatus)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        WINED3DRASTER_STATUS *raster_status);
+
+    HRESULT (STDMETHODCALLTYPE *GetSwapChain)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        IWineD3DSwapChain **swapchain);
+
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IWineD3DDevice* This,
+        WINED3DPRESENT_PARAMETERS *present_parameters);
+
+    HRESULT (STDMETHODCALLTYPE *SetDialogBoxMode)(
+        IWineD3DDevice* This,
+        BOOL enable_dialogs);
+
+    HRESULT (STDMETHODCALLTYPE *SetCursorProperties)(
+        IWineD3DDevice* This,
+        UINT x_hotspot,
+        UINT y_hotspot,
+        IWineD3DSurface *cursor_surface);
+
+    void (STDMETHODCALLTYPE *SetCursorPosition)(
+        IWineD3DDevice* This,
+        int x_screen_space,
+        int y_screen_space,
+        DWORD flags);
+
+    BOOL (STDMETHODCALLTYPE *ShowCursor)(
+        IWineD3DDevice* This,
+        BOOL show);
+
+    HRESULT (STDMETHODCALLTYPE *SetClipPlane)(
+        IWineD3DDevice* This,
+        DWORD plane_idx,
+        const float *plane);
+
+    HRESULT (STDMETHODCALLTYPE *GetClipPlane)(
+        IWineD3DDevice* This,
+        DWORD plane_idx,
+        float *plane);
+
+    HRESULT (STDMETHODCALLTYPE *SetClipStatus)(
+        IWineD3DDevice* This,
+        const WINED3DCLIPSTATUS *clip_status);
+
+    HRESULT (STDMETHODCALLTYPE *GetClipStatus)(
+        IWineD3DDevice* This,
+        WINED3DCLIPSTATUS *clip_status);
+
+    HRESULT (STDMETHODCALLTYPE *SetCurrentTexturePalette)(
+        IWineD3DDevice* This,
+        UINT palette_number);
+
+    HRESULT (STDMETHODCALLTYPE *GetCurrentTexturePalette)(
+        IWineD3DDevice* This,
+        UINT *palette_number);
+
+    HRESULT (STDMETHODCALLTYPE *SetDepthStencilSurface)(
+        IWineD3DDevice* This,
+        IWineD3DSurface *depth_stencil);
+
+    HRESULT (STDMETHODCALLTYPE *GetDepthStencilSurface)(
+        IWineD3DDevice* This,
+        IWineD3DSurface **depth_stencil);
+
+    void (STDMETHODCALLTYPE *SetGammaRamp)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        DWORD flags,
+        const WINED3DGAMMARAMP *ramp);
+
+    void (STDMETHODCALLTYPE *GetGammaRamp)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        WINED3DGAMMARAMP *ramp);
+
+    HRESULT (STDMETHODCALLTYPE *SetIndexBuffer)(
+        IWineD3DDevice* This,
+        IWineD3DBuffer *index_buffer,
+        WINED3DFORMAT format);
+
+    HRESULT (STDMETHODCALLTYPE *GetIndexBuffer)(
+        IWineD3DDevice* This,
+        IWineD3DBuffer **index_buffer);
+
+    HRESULT (STDMETHODCALLTYPE *SetBaseVertexIndex)(
+        IWineD3DDevice* This,
+        INT base_index);
+
+    HRESULT (STDMETHODCALLTYPE *GetBaseVertexIndex)(
+        IWineD3DDevice* This,
+        INT *base_index);
+
+    HRESULT (STDMETHODCALLTYPE *SetLight)(
+        IWineD3DDevice* This,
+        DWORD light_idx,
+        const WINED3DLIGHT *light);
+
+    HRESULT (STDMETHODCALLTYPE *GetLight)(
+        IWineD3DDevice* This,
+        DWORD light_idx,
+        WINED3DLIGHT *light);
+
+    HRESULT (STDMETHODCALLTYPE *SetLightEnable)(
+        IWineD3DDevice* This,
+        DWORD light_idx,
+        BOOL enable);
+
+    HRESULT (STDMETHODCALLTYPE *GetLightEnable)(
+        IWineD3DDevice* This,
+        DWORD light_idx,
+        BOOL *enable);
+
+    HRESULT (STDMETHODCALLTYPE *SetMaterial)(
+        IWineD3DDevice* This,
+        const WINED3DMATERIAL *material);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaterial)(
+        IWineD3DDevice* This,
+        WINED3DMATERIAL *material);
+
+    HRESULT (STDMETHODCALLTYPE *SetNPatchMode)(
+        IWineD3DDevice* This,
+        float segments);
+
+    float (STDMETHODCALLTYPE *GetNPatchMode)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetPaletteEntries)(
+        IWineD3DDevice* This,
+        UINT palette_number,
+        const PALETTEENTRY *entries);
+
+    HRESULT (STDMETHODCALLTYPE *GetPaletteEntries)(
+        IWineD3DDevice* This,
+        UINT palette_number,
+        PALETTEENTRY *entries);
+
+    HRESULT (STDMETHODCALLTYPE *SetPixelShader)(
+        IWineD3DDevice* This,
+        IWineD3DPixelShader *shader);
+
+    HRESULT (STDMETHODCALLTYPE *GetPixelShader)(
+        IWineD3DDevice* This,
+        IWineD3DPixelShader **shader);
+
+    HRESULT (STDMETHODCALLTYPE *SetPixelShaderConstantB)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        const BOOL *constants,
+        UINT bool_count);
+
+    HRESULT (STDMETHODCALLTYPE *GetPixelShaderConstantB)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        BOOL *constants,
+        UINT bool_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetPixelShaderConstantI)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        const int *constants,
+        UINT vector4i_count);
+
+    HRESULT (STDMETHODCALLTYPE *GetPixelShaderConstantI)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        int *constants,
+        UINT vector4i_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetPixelShaderConstantF)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        const float *constants,
+        UINT vector4f_count);
+
+    HRESULT (STDMETHODCALLTYPE *GetPixelShaderConstantF)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        float *constants,
+        UINT vector4f_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetRenderState)(
+        IWineD3DDevice* This,
+        WINED3DRENDERSTATETYPE state,
+        DWORD value);
+
+    HRESULT (STDMETHODCALLTYPE *GetRenderState)(
+        IWineD3DDevice* This,
+        WINED3DRENDERSTATETYPE state,
+        DWORD *value);
+
+    HRESULT (STDMETHODCALLTYPE *SetRenderTarget)(
+        IWineD3DDevice* This,
+        DWORD render_target_idx,
+        IWineD3DSurface *render_target,
+        BOOL set_viewport);
+
+    HRESULT (STDMETHODCALLTYPE *GetRenderTarget)(
+        IWineD3DDevice* This,
+        DWORD render_target_idx,
+        IWineD3DSurface **render_target);
+
+    HRESULT (STDMETHODCALLTYPE *SetFrontBackBuffers)(
+        IWineD3DDevice* This,
+        IWineD3DSurface *front,
+        IWineD3DSurface *back);
+
+    HRESULT (STDMETHODCALLTYPE *SetSamplerState)(
+        IWineD3DDevice* This,
+        DWORD sampler_idx,
+        WINED3DSAMPLERSTATETYPE state,
+        DWORD value);
+
+    HRESULT (STDMETHODCALLTYPE *GetSamplerState)(
+        IWineD3DDevice* This,
+        DWORD sampler_idx,
+        WINED3DSAMPLERSTATETYPE state,
+        DWORD *value);
+
+    HRESULT (STDMETHODCALLTYPE *SetScissorRect)(
+        IWineD3DDevice* This,
+        const RECT *rect);
+
+    HRESULT (STDMETHODCALLTYPE *GetScissorRect)(
+        IWineD3DDevice* This,
+        RECT *rect);
+
+    HRESULT (STDMETHODCALLTYPE *SetSoftwareVertexProcessing)(
+        IWineD3DDevice* This,
+        BOOL software);
+
+    BOOL (STDMETHODCALLTYPE *GetSoftwareVertexProcessing)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetStreamSource)(
+        IWineD3DDevice* This,
+        UINT stream_idx,
+        IWineD3DBuffer *buffer,
+        UINT offset,
+        UINT stride);
+
+    HRESULT (STDMETHODCALLTYPE *GetStreamSource)(
+        IWineD3DDevice* This,
+        UINT stream_idx,
+        IWineD3DBuffer **buffer,
+        UINT *offset,
+        UINT *stride);
+
+    HRESULT (STDMETHODCALLTYPE *SetStreamSourceFreq)(
+        IWineD3DDevice* This,
+        UINT stream_idx,
+        UINT divider);
+
+    HRESULT (STDMETHODCALLTYPE *GetStreamSourceFreq)(
+        IWineD3DDevice* This,
+        UINT stream_idx,
+        UINT *divider);
+
+    HRESULT (STDMETHODCALLTYPE *SetTexture)(
+        IWineD3DDevice* This,
+        DWORD stage,
+        IWineD3DBaseTexture *texture);
+
+    HRESULT (STDMETHODCALLTYPE *GetTexture)(
+        IWineD3DDevice* This,
+        DWORD stage,
+        IWineD3DBaseTexture **texture);
+
+    HRESULT (STDMETHODCALLTYPE *SetTextureStageState)(
+        IWineD3DDevice* This,
+        DWORD stage,
+        WINED3DTEXTURESTAGESTATETYPE state,
+        DWORD value);
+
+    HRESULT (STDMETHODCALLTYPE *GetTextureStageState)(
+        IWineD3DDevice* This,
+        DWORD stage,
+        WINED3DTEXTURESTAGESTATETYPE state,
+        DWORD *value);
+
+    HRESULT (STDMETHODCALLTYPE *SetTransform)(
+        IWineD3DDevice* This,
+        WINED3DTRANSFORMSTATETYPE state,
+        const WINED3DMATRIX *matrix);
+
+    HRESULT (STDMETHODCALLTYPE *GetTransform)(
+        IWineD3DDevice* This,
+        WINED3DTRANSFORMSTATETYPE state,
+        WINED3DMATRIX *matrix);
+
+    HRESULT (STDMETHODCALLTYPE *SetVertexDeclaration)(
+        IWineD3DDevice* This,
+        IWineD3DVertexDeclaration *declaration);
+
+    HRESULT (STDMETHODCALLTYPE *GetVertexDeclaration)(
+        IWineD3DDevice* This,
+        IWineD3DVertexDeclaration **declaration);
+
+    HRESULT (STDMETHODCALLTYPE *SetVertexShader)(
+        IWineD3DDevice* This,
+        IWineD3DVertexShader *shader);
+
+    HRESULT (STDMETHODCALLTYPE *GetVertexShader)(
+        IWineD3DDevice* This,
+        IWineD3DVertexShader **shader);
+
+    HRESULT (STDMETHODCALLTYPE *SetVertexShaderConstantB)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        const BOOL *constants,
+        UINT bool_count);
+
+    HRESULT (STDMETHODCALLTYPE *GetVertexShaderConstantB)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        BOOL *constants,
+        UINT bool_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetVertexShaderConstantI)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        const int *constants,
+        UINT vector4i_count);
+
+    HRESULT (STDMETHODCALLTYPE *GetVertexShaderConstantI)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        int *constants,
+        UINT vector4i_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetVertexShaderConstantF)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        const float *constants,
+        UINT vector4f_count);
+
+    HRESULT (STDMETHODCALLTYPE *GetVertexShaderConstantF)(
+        IWineD3DDevice* This,
+        UINT start_register,
+        float *constants,
+        UINT vector4f_count);
+
+    HRESULT (STDMETHODCALLTYPE *SetViewport)(
+        IWineD3DDevice* This,
+        const WINED3DVIEWPORT *viewport);
+
+    HRESULT (STDMETHODCALLTYPE *GetViewport)(
+        IWineD3DDevice* This,
+        WINED3DVIEWPORT *viewport);
+
+    HRESULT (STDMETHODCALLTYPE *MultiplyTransform)(
+        IWineD3DDevice* This,
+        WINED3DTRANSFORMSTATETYPE state,
+        const WINED3DMATRIX *matrix);
+
+    HRESULT (STDMETHODCALLTYPE *ValidateDevice)(
+        IWineD3DDevice* This,
+        DWORD *num_passes);
+
+    HRESULT (STDMETHODCALLTYPE *ProcessVertices)(
+        IWineD3DDevice* This,
+        UINT src_start_idx,
+        UINT dst_idx,
+        UINT vertex_count,
+        IWineD3DBuffer *dest_buffer,
+        IWineD3DVertexDeclaration *declaration,
+        DWORD flags,
+        DWORD DestFVF);
+
+    HRESULT (STDMETHODCALLTYPE *BeginStateBlock)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *EndStateBlock)(
+        IWineD3DDevice* This,
+        IWineD3DStateBlock **stateblock);
+
+    HRESULT (STDMETHODCALLTYPE *BeginScene)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *EndScene)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *Present)(
+        IWineD3DDevice* This,
+        const RECT *src_rect,
+        const RECT *dst_rect,
+        HWND dst_window_override,
+        const RGNDATA *dirty_region);
+
+    HRESULT (STDMETHODCALLTYPE *Clear)(
+        IWineD3DDevice* This,
+        DWORD rect_count,
+        const WINED3DRECT *rects,
+        DWORD flags,
+        WINED3DCOLOR color,
+        float z,
+        DWORD stencil);
+
+    void (STDMETHODCALLTYPE *ClearRendertargetView)(
+        IWineD3DDevice* This,
+        IWineD3DRendertargetView *rendertarget_view,
+        const float color[4]);
+
+    void (STDMETHODCALLTYPE *SetPrimitiveType)(
+        IWineD3DDevice* This,
+        WINED3DPRIMITIVETYPE primitive_topology);
+
+    void (STDMETHODCALLTYPE *GetPrimitiveType)(
+        IWineD3DDevice* This,
+        WINED3DPRIMITIVETYPE *primitive_topology);
+
+    HRESULT (STDMETHODCALLTYPE *DrawPrimitive)(
+        IWineD3DDevice* This,
+        UINT start_vertex,
+        UINT vertex_count);
+
+    HRESULT (STDMETHODCALLTYPE *DrawIndexedPrimitive)(
+        IWineD3DDevice* This,
+        UINT start_idx,
+        UINT index_count);
+
+    HRESULT (STDMETHODCALLTYPE *DrawPrimitiveUP)(
+        IWineD3DDevice* This,
+        UINT vertex_count,
+        const void *stream_data,
+        UINT stream_stride);
+
+    HRESULT (STDMETHODCALLTYPE *DrawIndexedPrimitiveUP)(
+        IWineD3DDevice* This,
+        UINT index_count,
+        const void *index_data,
+        WINED3DFORMAT index_data_format,
+        const void *stream_data,
+        UINT stream_stride);
+
+    HRESULT (STDMETHODCALLTYPE *DrawPrimitiveStrided)(
+        IWineD3DDevice* This,
+        UINT vertex_count,
+        const WineDirect3DVertexStridedData *strided_data);
+
+    HRESULT (STDMETHODCALLTYPE *DrawIndexedPrimitiveStrided)(
+        IWineD3DDevice* This,
+        UINT index_count,
+        const WineDirect3DVertexStridedData *strided_data,
+        UINT vertex_count,
+        const void *index_data,
+        WINED3DFORMAT index_data_format);
+
+    HRESULT (STDMETHODCALLTYPE *DrawRectPatch)(
+        IWineD3DDevice* This,
+        UINT handle,
+        const float *num_segs,
+        const WINED3DRECTPATCH_INFO *rect_patch_info);
+
+    HRESULT (STDMETHODCALLTYPE *DrawTriPatch)(
+        IWineD3DDevice* This,
+        UINT handle,
+        const float *num_segs,
+        const WINED3DTRIPATCH_INFO *tri_patch_info);
+
+    HRESULT (STDMETHODCALLTYPE *DeletePatch)(
+        IWineD3DDevice* This,
+        UINT handle);
+
+    HRESULT (STDMETHODCALLTYPE *ColorFill)(
+        IWineD3DDevice* This,
+        IWineD3DSurface *surface,
+        const WINED3DRECT *rect,
+        WINED3DCOLOR color);
+
+    HRESULT (STDMETHODCALLTYPE *UpdateTexture)(
+        IWineD3DDevice* This,
+        IWineD3DBaseTexture *src_texture,
+        IWineD3DBaseTexture *dst_texture);
+
+    HRESULT (STDMETHODCALLTYPE *UpdateSurface)(
+        IWineD3DDevice* This,
+        IWineD3DSurface *src_surface,
+        const RECT *src_rect,
+        IWineD3DSurface *dst_surface,
+        const POINT *dst_point);
+
+    HRESULT (STDMETHODCALLTYPE *GetFrontBufferData)(
+        IWineD3DDevice* This,
+        UINT swapchain_idx,
+        IWineD3DSurface *dst_surface);
+
+    HRESULT (STDMETHODCALLTYPE *EnumResources)(
+        IWineD3DDevice* This,
+        HRESULT (STDMETHODCALLTYPE * callback)(IWineD3DResource *resource,void *pData),
+        void *data);
+
+    HRESULT (STDMETHODCALLTYPE *GetSurfaceFromDC)(
+        IWineD3DDevice* This,
+        HDC dc,
+        IWineD3DSurface **surface);
+
+    HRESULT (STDMETHODCALLTYPE *AcquireFocusWindow)(
+        IWineD3DDevice* This,
+        HWND window);
+
+    void (STDMETHODCALLTYPE *ReleaseFocusWindow)(
+        IWineD3DDevice* This);
+
+#ifdef VBOX_WITH_WDDM
+    HRESULT (STDMETHODCALLTYPE *Flush)(
+        IWineD3DDevice* This);
+
+    HRESULT (STDMETHODCALLTYPE *AddSwapChain)(
+        IWineD3DDevice* This,
+        IWineD3DSwapChain *swapchain);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveSwapChain)(
+        IWineD3DDevice* This,
+        IWineD3DSwapChain *swapchain);
+#endif
+
+    END_INTERFACE
+} IWineD3DDeviceVtbl;
+interface IWineD3DDevice {
+    CONST_VTBL IWineD3DDeviceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IWineD3DDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWineD3DDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWineD3DDevice_Release(This) (This)->lpVtbl->Release(This)
+/*** IWineD3DBase methods ***/
+#define IWineD3DDevice_GetParent(This,parent) (This)->lpVtbl->GetParent(This,parent)
+/*** IWineD3DDevice methods ***/
+#define IWineD3DDevice_CreateBuffer(This,desc,data,parent,parent_ops,buffer) (This)->lpVtbl->CreateBuffer(This,desc,data,parent,parent_ops,buffer)
+#define IWineD3DDevice_CreateVertexBuffer(This,length,usage,pool,vertex_buffer,parent,parent_ops) (This)->lpVtbl->CreateVertexBuffer(This,length,usage,pool,vertex_buffer,parent,parent_ops)
+#define IWineD3DDevice_CreateIndexBuffer(This,length,usage,pool,index_buffer,parent,parent_ops) (This)->lpVtbl->CreateIndexBuffer(This,length,usage,pool,index_buffer,parent,parent_ops)
+#define IWineD3DDevice_CreateStateBlock(This,type,stateblock,parent) (This)->lpVtbl->CreateStateBlock(This,type,stateblock,parent)
+#ifdef VBOX_WITH_WDDM
+#define IWineD3DDevice_CreateSurface(This,width,height,format,lockable,discard,level,surface,usage,pool,multisample_type,multisample_quality,surface_type,parent,parent_ops,shared_handle,pvClientMem) (This)->lpVtbl->CreateSurface(This,width,height,format,lockable,discard,level,surface,usage,pool,multisample_type,multisample_quality,surface_type,parent,parent_ops,shared_handle,pvClientMem)
+#else
+#define IWineD3DDevice_CreateSurface(This,width,height,format,lockable,discard,level,surface,usage,pool,multisample_type,multisample_quality,surface_type,parent,parent_ops) (This)->lpVtbl->CreateSurface(This,width,height,format,lockable,discard,level,surface,usage,pool,multisample_type,multisample_quality,surface_type,parent,parent_ops)
+#endif
+#define IWineD3DDevice_CreateRendertargetView(This,resource,parent,rendertarget_view) (This)->lpVtbl->CreateRendertargetView(This,resource,parent,rendertarget_view)
+#ifdef VBOX_WITH_WDDM
+#define IWineD3DDevice_CreateTexture(This,width,height,levels,usage,format,pool,texture,parent,parent_ops,shared_handle,pvClientMem) (This)->lpVtbl->CreateTexture(This,width,height,levels,usage,format,pool,texture,parent,parent_ops,shared_handle,pvClientMem)
+#else
+#define IWineD3DDevice_CreateTexture(This,width,height,levels,usage,format,pool,texture,parent,parent_ops) (This)->lpVtbl->CreateTexture(This,width,height,levels,usage,format,pool,texture,parent,parent_ops)
+#endif
+#define IWineD3DDevice_CreateVolumeTexture(This,width,height,depth,levels,usage,format,pool,texture,parent,parent_ops) (This)->lpVtbl->CreateVolumeTexture(This,width,height,depth,levels,usage,format,pool,texture,parent,parent_ops)
+#define IWineD3DDevice_CreateVolume(This,width,height,depth,usage,format,pool,volume,parent,parent_ops) (This)->lpVtbl->CreateVolume(This,width,height,depth,usage,format,pool,volume,parent,parent_ops)
+#ifdef VBOX_WITH_WDDM
+#define IWineD3DDevice_CreateCubeTexture(This,edge_length,levels,usage,format,pool,texture,parent,parent_ops,shared_handle,pvClientMem) (This)->lpVtbl->CreateCubeTexture(This,edge_length,levels,usage,format,pool,texture,parent,parent_ops,shared_handle,pvClientMem)
+#else
+#define IWineD3DDevice_CreateCubeTexture(This,edge_length,levels,usage,format,pool,texture,parent,parent_ops) (This)->lpVtbl->CreateCubeTexture(This,edge_length,levels,usage,format,pool,texture,parent,parent_ops)
+#endif
+#define IWineD3DDevice_CreateQuery(This,type,query,parent) (This)->lpVtbl->CreateQuery(This,type,query,parent)
+#define IWineD3DDevice_CreateSwapChain(This,present_parameters,swapchain,parent,surface_type) (This)->lpVtbl->CreateSwapChain(This,present_parameters,swapchain,parent,surface_type)
+#define IWineD3DDevice_CreateVertexDeclaration(This,declaration,parent,parent_ops,elements,element_count) (This)->lpVtbl->CreateVertexDeclaration(This,declaration,parent,parent_ops,elements,element_count)
+#define IWineD3DDevice_CreateVertexDeclarationFromFVF(This,declaration,parent,parent_ops,fvf) (This)->lpVtbl->CreateVertexDeclarationFromFVF(This,declaration,parent,parent_ops,fvf)
+#define IWineD3DDevice_CreateVertexShader(This,function,output_signature,shader,parent,parent_ops) (This)->lpVtbl->CreateVertexShader(This,function,output_signature,shader,parent,parent_ops)
+#define IWineD3DDevice_CreateGeometryShader(This,byte_code,output_signature,shader,parent,parent_ops) (This)->lpVtbl->CreateGeometryShader(This,byte_code,output_signature,shader,parent,parent_ops)
+#define IWineD3DDevice_CreatePixelShader(This,function,output_signature,shader,parent,parent_ops) (This)->lpVtbl->CreatePixelShader(This,function,output_signature,shader,parent,parent_ops)
+#define IWineD3DDevice_CreatePalette(This,flags,palette_entry,palette,parent) (This)->lpVtbl->CreatePalette(This,flags,palette_entry,palette,parent)
+#define IWineD3DDevice_Init3D(This,present_parameters) (This)->lpVtbl->Init3D(This,present_parameters)
+#define IWineD3DDevice_InitGDI(This,present_parameters) (This)->lpVtbl->InitGDI(This,present_parameters)
+#define IWineD3DDevice_Uninit3D(This,destroy_swapchain_callback) (This)->lpVtbl->Uninit3D(This,destroy_swapchain_callback)
+#define IWineD3DDevice_UninitGDI(This,destroy_swapchain_callback) (This)->lpVtbl->UninitGDI(This,destroy_swapchain_callback)
+#define IWineD3DDevice_SetMultithreaded(This) (This)->lpVtbl->SetMultithreaded(This)
+#define IWineD3DDevice_EvictManagedResources(This) (This)->lpVtbl->EvictManagedResources(This)
+#define IWineD3DDevice_GetAvailableTextureMem(This) (This)->lpVtbl->GetAvailableTextureMem(This)
+#define IWineD3DDevice_GetBackBuffer(This,swapchain_idx,backbuffer_idx,backbuffer_type,backbuffer) (This)->lpVtbl->GetBackBuffer(This,swapchain_idx,backbuffer_idx,backbuffer_type,backbuffer)
+#define IWineD3DDevice_GetCreationParameters(This,creation_parameters) (This)->lpVtbl->GetCreationParameters(This,creation_parameters)
+#define IWineD3DDevice_GetDeviceCaps(This,caps) (This)->lpVtbl->GetDeviceCaps(This,caps)
+#define IWineD3DDevice_GetDirect3D(This,d3d) (This)->lpVtbl->GetDirect3D(This,d3d)
+#define IWineD3DDevice_GetDisplayMode(This,swapchain_idx,mode) (This)->lpVtbl->GetDisplayMode(This,swapchain_idx,mode)
+#define IWineD3DDevice_SetDisplayMode(This,swapchain_idx,mode) (This)->lpVtbl->SetDisplayMode(This,swapchain_idx,mode)
+#define IWineD3DDevice_GetNumberOfSwapChains(This) (This)->lpVtbl->GetNumberOfSwapChains(This)
+#define IWineD3DDevice_GetRasterStatus(This,swapchain_idx,raster_status) (This)->lpVtbl->GetRasterStatus(This,swapchain_idx,raster_status)
+#define IWineD3DDevice_GetSwapChain(This,swapchain_idx,swapchain) (This)->lpVtbl->GetSwapChain(This,swapchain_idx,swapchain)
+#define IWineD3DDevice_Reset(This,present_parameters) (This)->lpVtbl->Reset(This,present_parameters)
+#define IWineD3DDevice_SetDialogBoxMode(This,enable_dialogs) (This)->lpVtbl->SetDialogBoxMode(This,enable_dialogs)
+#define IWineD3DDevice_SetCursorProperties(This,x_hotspot,y_hotspot,cursor_surface) (This)->lpVtbl->SetCursorProperties(This,x_hotspot,y_hotspot,cursor_surface)
+#define IWineD3DDevice_SetCursorPosition(This,x_screen_space,y_screen_space,flags) (This)->lpVtbl->SetCursorPosition(This,x_screen_space,y_screen_space,flags)
+#define IWineD3DDevice_ShowCursor(This,show) (This)->lpVtbl->ShowCursor(This,show)
+#define IWineD3DDevice_SetClipPlane(This,plane_idx,plane) (This)->lpVtbl->SetClipPlane(This,plane_idx,plane)
+#define IWineD3DDevice_GetClipPlane(This,plane_idx,plane) (This)->lpVtbl->GetClipPlane(This,plane_idx,plane)
+#define IWineD3DDevice_SetClipStatus(This,clip_status) (This)->lpVtbl->SetClipStatus(This,clip_status)
+#define IWineD3DDevice_GetClipStatus(This,clip_status) (This)->lpVtbl->GetClipStatus(This,clip_status)
+#define IWineD3DDevice_SetCurrentTexturePalette(This,palette_number) (This)->lpVtbl->SetCurrentTexturePalette(This,palette_number)
+#define IWineD3DDevice_GetCurrentTexturePalette(This,palette_number) (This)->lpVtbl->GetCurrentTexturePalette(This,palette_number)
+#define IWineD3DDevice_SetDepthStencilSurface(This,depth_stencil) (This)->lpVtbl->SetDepthStencilSurface(This,depth_stencil)
+#define IWineD3DDevice_GetDepthStencilSurface(This,depth_stencil) (This)->lpVtbl->GetDepthStencilSurface(This,depth_stencil)
+#define IWineD3DDevice_SetGammaRamp(This,swapchain_idx,flags,ramp) (This)->lpVtbl->SetGammaRamp(This,swapchain_idx,flags,ramp)
+#define IWineD3DDevice_GetGammaRamp(This,swapchain_idx,ramp) (This)->lpVtbl->GetGammaRamp(This,swapchain_idx,ramp)
+#define IWineD3DDevice_SetIndexBuffer(This,index_buffer,format) (This)->lpVtbl->SetIndexBuffer(This,index_buffer,format)
+#define IWineD3DDevice_GetIndexBuffer(This,index_buffer) (This)->lpVtbl->GetIndexBuffer(This,index_buffer)
+#define IWineD3DDevice_SetBaseVertexIndex(This,base_index) (This)->lpVtbl->SetBaseVertexIndex(This,base_index)
+#define IWineD3DDevice_GetBaseVertexIndex(This,base_index) (This)->lpVtbl->GetBaseVertexIndex(This,base_index)
+#define IWineD3DDevice_SetLight(This,light_idx,light) (This)->lpVtbl->SetLight(This,light_idx,light)
+#define IWineD3DDevice_GetLight(This,light_idx,light) (This)->lpVtbl->GetLight(This,light_idx,light)
+#define IWineD3DDevice_SetLightEnable(This,light_idx,enable) (This)->lpVtbl->SetLightEnable(This,light_idx,enable)
+#define IWineD3DDevice_GetLightEnable(This,light_idx,enable) (This)->lpVtbl->GetLightEnable(This,light_idx,enable)
+#define IWineD3DDevice_SetMaterial(This,material) (This)->lpVtbl->SetMaterial(This,material)
+#define IWineD3DDevice_GetMaterial(This,material) (This)->lpVtbl->GetMaterial(This,material)
+#define IWineD3DDevice_SetNPatchMode(This,segments) (This)->lpVtbl->SetNPatchMode(This,segments)
+#define IWineD3DDevice_GetNPatchMode(This) (This)->lpVtbl->GetNPatchMode(This)
+#define IWineD3DDevice_SetPaletteEntries(This,palette_number,entries) (This)->lpVtbl->SetPaletteEntries(This,palette_number,entries)
+#define IWineD3DDevice_GetPaletteEntries(This,palette_number,entries) (This)->lpVtbl->GetPaletteEntries(This,palette_number,entries)
+#define IWineD3DDevice_SetPixelShader(This,shader) (This)->lpVtbl->SetPixelShader(This,shader)
+#define IWineD3DDevice_GetPixelShader(This,shader) (This)->lpVtbl->GetPixelShader(This,shader)
+#define IWineD3DDevice_SetPixelShaderConstantB(This,start_register,constants,bool_count) (This)->lpVtbl->SetPixelShaderConstantB(This,start_register,constants,bool_count)
+#define IWineD3DDevice_GetPixelShaderConstantB(This,start_register,constants,bool_count) (This)->lpVtbl->GetPixelShaderConstantB(This,start_register,constants,bool_count)
+#define IWineD3DDevice_SetPixelShaderConstantI(This,start_register,constants,vector4i_count) (This)->lpVtbl->SetPixelShaderConstantI(This,start_register,constants,vector4i_count)
+#define IWineD3DDevice_GetPixelShaderConstantI(This,start_register,constants,vector4i_count) (This)->lpVtbl->GetPixelShaderConstantI(This,start_register,constants,vector4i_count)
+#define IWineD3DDevice_SetPixelShaderConstantF(This,start_register,constants,vector4f_count) (This)->lpVtbl->SetPixelShaderConstantF(This,start_register,constants,vector4f_count)
+#define IWineD3DDevice_GetPixelShaderConstantF(This,start_register,constants,vector4f_count) (This)->lpVtbl->GetPixelShaderConstantF(This,start_register,constants,vector4f_count)
+#define IWineD3DDevice_SetRenderState(This,state,value) (This)->lpVtbl->SetRenderState(This,state,value)
+#define IWineD3DDevice_GetRenderState(This,state,value) (This)->lpVtbl->GetRenderState(This,state,value)
+#define IWineD3DDevice_SetRenderTarget(This,render_target_idx,render_target,set_viewport) (This)->lpVtbl->SetRenderTarget(This,render_target_idx,render_target,set_viewport)
+#define IWineD3DDevice_GetRenderTarget(This,render_target_idx,render_target) (This)->lpVtbl->GetRenderTarget(This,render_target_idx,render_target)
+#define IWineD3DDevice_SetFrontBackBuffers(This,front,back) (This)->lpVtbl->SetFrontBackBuffers(This,front,back)
+#define IWineD3DDevice_SetSamplerState(This,sampler_idx,state,value) (This)->lpVtbl->SetSamplerState(This,sampler_idx,state,value)
+#define IWineD3DDevice_GetSamplerState(This,sampler_idx,state,value) (This)->lpVtbl->GetSamplerState(This,sampler_idx,state,value)
+#define IWineD3DDevice_SetScissorRect(This,rect) (This)->lpVtbl->SetScissorRect(This,rect)
+#define IWineD3DDevice_GetScissorRect(This,rect) (This)->lpVtbl->GetScissorRect(This,rect)
+#define IWineD3DDevice_SetSoftwareVertexProcessing(This,software) (This)->lpVtbl->SetSoftwareVertexProcessing(This,software)
+#define IWineD3DDevice_GetSoftwareVertexProcessing(This) (This)->lpVtbl->GetSoftwareVertexProcessing(This)
+#define IWineD3DDevice_SetStreamSource(This,stream_idx,buffer,offset,stride) (This)->lpVtbl->SetStreamSource(This,stream_idx,buffer,offset,stride)
+#define IWineD3DDevice_GetStreamSource(This,stream_idx,buffer,offset,stride) (This)->lpVtbl->GetStreamSource(This,stream_idx,buffer,offset,stride)
+#define IWineD3DDevice_SetStreamSourceFreq(This,stream_idx,divider) (This)->lpVtbl->SetStreamSourceFreq(This,stream_idx,divider)
+#define IWineD3DDevice_GetStreamSourceFreq(This,stream_idx,divider) (This)->lpVtbl->GetStreamSourceFreq(This,stream_idx,divider)
+#define IWineD3DDevice_SetTexture(This,stage,texture) (This)->lpVtbl->SetTexture(This,stage,texture)
+#define IWineD3DDevice_GetTexture(This,stage,texture) (This)->lpVtbl->GetTexture(This,stage,texture)
+#define IWineD3DDevice_SetTextureStageState(This,stage,state,value) (This)->lpVtbl->SetTextureStageState(This,stage,state,value)
+#define IWineD3DDevice_GetTextureStageState(This,stage,state,value) (This)->lpVtbl->GetTextureStageState(This,stage,state,value)
+#define IWineD3DDevice_SetTransform(This,state,matrix) (This)->lpVtbl->SetTransform(This,state,matrix)
+#define IWineD3DDevice_GetTransform(This,state,matrix) (This)->lpVtbl->GetTransform(This,state,matrix)
+#define IWineD3DDevice_SetVertexDeclaration(This,declaration) (This)->lpVtbl->SetVertexDeclaration(This,declaration)
+#define IWineD3DDevice_GetVertexDeclaration(This,declaration) (This)->lpVtbl->GetVertexDeclaration(This,declaration)
+#define IWineD3DDevice_SetVertexShader(This,shader) (This)->lpVtbl->SetVertexShader(This,shader)
+#define IWineD3DDevice_GetVertexShader(This,shader) (This)->lpVtbl->GetVertexShader(This,shader)
+#define IWineD3DDevice_SetVertexShaderConstantB(This,start_register,constants,bool_count) (This)->lpVtbl->SetVertexShaderConstantB(This,start_register,constants,bool_count)
+#define IWineD3DDevice_GetVertexShaderConstantB(This,start_register,constants,bool_count) (This)->lpVtbl->GetVertexShaderConstantB(This,start_register,constants,bool_count)
+#define IWineD3DDevice_SetVertexShaderConstantI(This,start_register,constants,vector4i_count) (This)->lpVtbl->SetVertexShaderConstantI(This,start_register,constants,vector4i_count)
+#define IWineD3DDevice_GetVertexShaderConstantI(This,start_register,constants,vector4i_count) (This)->lpVtbl->GetVertexShaderConstantI(This,start_register,constants,vector4i_count)
+#define IWineD3DDevice_SetVertexShaderConstantF(This,start_register,constants,vector4f_count) (This)->lpVtbl->SetVertexShaderConstantF(This,start_register,constants,vector4f_count)
+#define IWineD3DDevice_GetVertexShaderConstantF(This,start_register,constants,vector4f_count) (This)->lpVtbl->GetVertexShaderConstantF(This,start_register,constants,vector4f_count)
+#define IWineD3DDevice_SetViewport(This,viewport) (This)->lpVtbl->SetViewport(This,viewport)
+#define IWineD3DDevice_GetViewport(This,viewport) (This)->lpVtbl->GetViewport(This,viewport)
+#define IWineD3DDevice_MultiplyTransform(This,state,matrix) (This)->lpVtbl->MultiplyTransform(This,state,matrix)
+#define IWineD3DDevice_ValidateDevice(This,num_passes) (This)->lpVtbl->ValidateDevice(This,num_passes)
+#define IWineD3DDevice_ProcessVertices(This,src_start_idx,dst_idx,vertex_count,dest_buffer,declaration,flags,DestFVF) (This)->lpVtbl->ProcessVertices(This,src_start_idx,dst_idx,vertex_count,dest_buffer,declaration,flags,DestFVF)
+#define IWineD3DDevice_BeginStateBlock(This) (This)->lpVtbl->BeginStateBlock(This)
+#define IWineD3DDevice_EndStateBlock(This,stateblock) (This)->lpVtbl->EndStateBlock(This,stateblock)
+#define IWineD3DDevice_BeginScene(This) (This)->lpVtbl->BeginScene(This)
+#define IWineD3DDevice_EndScene(This) (This)->lpVtbl->EndScene(This)
+#define IWineD3DDevice_Present(This,src_rect,dst_rect,dst_window_override,dirty_region) (This)->lpVtbl->Present(This,src_rect,dst_rect,dst_window_override,dirty_region)
+#define IWineD3DDevice_Clear(This,rect_count,rects,flags,color,z,stencil) (This)->lpVtbl->Clear(This,rect_count,rects,flags,color,z,stencil)
+#define IWineD3DDevice_ClearRendertargetView(This,rendertarget_view,color) (This)->lpVtbl->ClearRendertargetView(This,rendertarget_view,color)
+#define IWineD3DDevice_SetPrimitiveType(This,primitive_topology) (This)->lpVtbl->SetPrimitiveType(This,primitive_topology)
+#define IWineD3DDevice_GetPrimitiveType(This,primitive_topology) (This)->lpVtbl->GetPrimitiveType(This,primitive_topology)
+#define IWineD3DDevice_DrawPrimitive(This,start_vertex,vertex_count) (This)->lpVtbl->DrawPrimitive(This,start_vertex,vertex_count)
+#define IWineD3DDevice_DrawIndexedPrimitive(This,start_idx,index_count) (This)->lpVtbl->DrawIndexedPrimitive(This,start_idx,index_count)
+#define IWineD3DDevice_DrawPrimitiveUP(This,vertex_count,stream_data,stream_stride) (This)->lpVtbl->DrawPrimitiveUP(This,vertex_count,stream_data,stream_stride)
+#define IWineD3DDevice_DrawIndexedPrimitiveUP(This,index_count,index_data,index_data_format,stream_data,stream_stride) (This)->lpVtbl->DrawIndexedPrimitiveUP(This,index_count,index_data,index_data_format,stream_data,stream_stride)
+#define IWineD3DDevice_DrawPrimitiveStrided(This,vertex_count,strided_data) (This)->lpVtbl->DrawPrimitiveStrided(This,vertex_count,strided_data)
+#define IWineD3DDevice_DrawIndexedPrimitiveStrided(This,index_count,strided_data,vertex_count,index_data,index_data_format) (This)->lpVtbl->DrawIndexedPrimitiveStrided(This,index_count,strided_data,vertex_count,index_data,index_data_format)
+#define IWineD3DDevice_DrawRectPatch(This,handle,num_segs,rect_patch_info) (This)->lpVtbl->DrawRectPatch(This,handle,num_segs,rect_patch_info)
+#define IWineD3DDevice_DrawTriPatch(This,handle,num_segs,tri_patch_info) (This)->lpVtbl->DrawTriPatch(This,handle,num_segs,tri_patch_info)
+#define IWineD3DDevice_DeletePatch(This,handle) (This)->lpVtbl->DeletePatch(This,handle)
+#define IWineD3DDevice_ColorFill(This,surface,rect,color) (This)->lpVtbl->ColorFill(This,surface,rect,color)
+#define IWineD3DDevice_UpdateTexture(This,src_texture,dst_texture) (This)->lpVtbl->UpdateTexture(This,src_texture,dst_texture)
+#define IWineD3DDevice_UpdateSurface(This,src_surface,src_rect,dst_surface,dst_point) (This)->lpVtbl->UpdateSurface(This,src_surface,src_rect,dst_surface,dst_point)
+#define IWineD3DDevice_GetFrontBufferData(This,swapchain_idx,dst_surface) (This)->lpVtbl->GetFrontBufferData(This,swapchain_idx,dst_surface)
+#define IWineD3DDevice_EnumResources(This,callback,data) (This)->lpVtbl->EnumResources(This,callback,data)
+#define IWineD3DDevice_GetSurfaceFromDC(This,dc,surface) (This)->lpVtbl->GetSurfaceFromDC(This,dc,surface)
+#define IWineD3DDevice_AcquireFocusWindow(This,window) (This)->lpVtbl->AcquireFocusWindow(This,window)
+#define IWineD3DDevice_ReleaseFocusWindow(This) (This)->lpVtbl->ReleaseFocusWindow(This)
+#ifdef VBOX_WITH_WDDM
+#define IWineD3DDevice_Flush(This) (This)->lpVtbl->Flush(This)
+#define IWineD3DDevice_AddSwapChain(This,swapchain) (This)->lpVtbl->AddSwapChain(This,swapchain)
+#define IWineD3DDevice_RemoveSwapChain(This,swapchain) (This)->lpVtbl->RemoveSwapChain(This,swapchain)
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateBuffer_Proxy(
+    IWineD3DDevice* This,
+    struct wined3d_buffer_desc *desc,
+    const void *data,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops,
+    IWineD3DBuffer **buffer);
+void __RPC_STUB IWineD3DDevice_CreateBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateVertexBuffer_Proxy(
+    IWineD3DDevice* This,
+    UINT length,
+    DWORD usage,
+    WINED3DPOOL pool,
+    IWineD3DBuffer **vertex_buffer,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops);
+void __RPC_STUB IWineD3DDevice_CreateVertexBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateIndexBuffer_Proxy(
+    IWineD3DDevice* This,
+    UINT length,
+    DWORD usage,
+    WINED3DPOOL pool,
+    IWineD3DBuffer **index_buffer,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops);
+void __RPC_STUB IWineD3DDevice_CreateIndexBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateStateBlock_Proxy(
+    IWineD3DDevice* This,
+    WINED3DSTATEBLOCKTYPE type,
+    IWineD3DStateBlock **stateblock,
+    IUnknown *parent);
+void __RPC_STUB IWineD3DDevice_CreateStateBlock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateSurface_Proxy(
+    IWineD3DDevice* This,
+    UINT width,
+    UINT height,
+    WINED3DFORMAT format,
+    BOOL lockable,
+    BOOL discard,
+    UINT level,
+    IWineD3DSurface **surface,
+    DWORD usage,
+    WINED3DPOOL pool,
+    WINED3DMULTISAMPLE_TYPE multisample_type,
+    DWORD multisample_quality,
+    WINED3DSURFTYPE surface_type,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops);
+void __RPC_STUB IWineD3DDevice_CreateSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateRendertargetView_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DResource *resource,
+    IUnknown *parent,
+    IWineD3DRendertargetView **rendertarget_view);
+void __RPC_STUB IWineD3DDevice_CreateRendertargetView_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateTexture_Proxy(
+    IWineD3DDevice* This,
+    UINT width,
+    UINT height,
+    UINT levels,
+    DWORD usage,
+    WINED3DFORMAT format,
+    WINED3DPOOL pool,
+    IWineD3DTexture **texture,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops);
+void __RPC_STUB IWineD3DDevice_CreateTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateVolumeTexture_Proxy(
+    IWineD3DDevice* This,
+    UINT width,
+    UINT height,
+    UINT depth,
+    UINT levels,
+    DWORD usage,
+    WINED3DFORMAT format,
+    WINED3DPOOL pool,
+    IWineD3DVolumeTexture **texture,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops);
+void __RPC_STUB IWineD3DDevice_CreateVolumeTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateVolume_Proxy(
+    IWineD3DDevice* This,
+    UINT width,
+    UINT height,
+    UINT depth,
+    DWORD usage,
+    WINED3DFORMAT format,
+    WINED3DPOOL pool,
+    IWineD3DVolume **volume,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops);
+void __RPC_STUB IWineD3DDevice_CreateVolume_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateCubeTexture_Proxy(
+    IWineD3DDevice* This,
+    UINT edge_length,
+    UINT levels,
+    DWORD usage,
+    WINED3DFORMAT format,
+    WINED3DPOOL pool,
+    IWineD3DCubeTexture **texture,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops);
+void __RPC_STUB IWineD3DDevice_CreateCubeTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateQuery_Proxy(
+    IWineD3DDevice* This,
+    WINED3DQUERYTYPE type,
+    IWineD3DQuery **query,
+    IUnknown *parent);
+void __RPC_STUB IWineD3DDevice_CreateQuery_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateSwapChain_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRESENT_PARAMETERS *present_parameters,
+    IWineD3DSwapChain **swapchain,
+    IUnknown *parent,
+    WINED3DSURFTYPE surface_type);
+void __RPC_STUB IWineD3DDevice_CreateSwapChain_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateVertexDeclaration_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexDeclaration **declaration,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops,
+    const WINED3DVERTEXELEMENT *elements,
+    UINT element_count);
+void __RPC_STUB IWineD3DDevice_CreateVertexDeclaration_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateVertexDeclarationFromFVF_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexDeclaration **declaration,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops,
+    DWORD fvf);
+void __RPC_STUB IWineD3DDevice_CreateVertexDeclarationFromFVF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateVertexShader_Proxy(
+    IWineD3DDevice* This,
+    const DWORD *function,
+    const struct wined3d_shader_signature *output_signature,
+    IWineD3DVertexShader **shader,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops);
+void __RPC_STUB IWineD3DDevice_CreateVertexShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreateGeometryShader_Proxy(
+    IWineD3DDevice* This,
+    const DWORD *byte_code,
+    const struct wined3d_shader_signature *output_signature,
+    IWineD3DGeometryShader **shader,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops);
+void __RPC_STUB IWineD3DDevice_CreateGeometryShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreatePixelShader_Proxy(
+    IWineD3DDevice* This,
+    const DWORD *function,
+    const struct wined3d_shader_signature *output_signature,
+    IWineD3DPixelShader **shader,
+    IUnknown *parent,
+    const struct wined3d_parent_ops *parent_ops);
+void __RPC_STUB IWineD3DDevice_CreatePixelShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_CreatePalette_Proxy(
+    IWineD3DDevice* This,
+    DWORD flags,
+    const PALETTEENTRY *palette_entry,
+    IWineD3DPalette **palette,
+    IUnknown *parent);
+void __RPC_STUB IWineD3DDevice_CreatePalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_Init3D_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRESENT_PARAMETERS *present_parameters);
+void __RPC_STUB IWineD3DDevice_Init3D_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_InitGDI_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRESENT_PARAMETERS *present_parameters);
+void __RPC_STUB IWineD3DDevice_InitGDI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_Uninit3D_Proxy(
+    IWineD3DDevice* This,
+    ULONG (STDMETHODCALLTYPE * destroy_swapchain_callback)(IWineD3DSwapChain *pSwapChain));
+void __RPC_STUB IWineD3DDevice_Uninit3D_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_UninitGDI_Proxy(
+    IWineD3DDevice* This,
+    ULONG (STDMETHODCALLTYPE * destroy_swapchain_callback)(IWineD3DSwapChain *pSwapChain));
+void __RPC_STUB IWineD3DDevice_UninitGDI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_SetMultithreaded_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_SetMultithreaded_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_EvictManagedResources_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_EvictManagedResources_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT STDMETHODCALLTYPE IWineD3DDevice_GetAvailableTextureMem_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_GetAvailableTextureMem_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetBackBuffer_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    UINT backbuffer_idx,
+    WINED3DBACKBUFFER_TYPE backbuffer_type,
+    IWineD3DSurface **backbuffer);
+void __RPC_STUB IWineD3DDevice_GetBackBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetCreationParameters_Proxy(
+    IWineD3DDevice* This,
+    WINED3DDEVICE_CREATION_PARAMETERS *creation_parameters);
+void __RPC_STUB IWineD3DDevice_GetCreationParameters_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetDeviceCaps_Proxy(
+    IWineD3DDevice* This,
+    WINED3DCAPS *caps);
+void __RPC_STUB IWineD3DDevice_GetDeviceCaps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetDirect3D_Proxy(
+    IWineD3DDevice* This,
+    IWineD3D **d3d);
+void __RPC_STUB IWineD3DDevice_GetDirect3D_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetDisplayMode_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    WINED3DDISPLAYMODE *mode);
+void __RPC_STUB IWineD3DDevice_GetDisplayMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetDisplayMode_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    const WINED3DDISPLAYMODE *mode);
+void __RPC_STUB IWineD3DDevice_SetDisplayMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT STDMETHODCALLTYPE IWineD3DDevice_GetNumberOfSwapChains_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_GetNumberOfSwapChains_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetRasterStatus_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    WINED3DRASTER_STATUS *raster_status);
+void __RPC_STUB IWineD3DDevice_GetRasterStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetSwapChain_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    IWineD3DSwapChain **swapchain);
+void __RPC_STUB IWineD3DDevice_GetSwapChain_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_Reset_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRESENT_PARAMETERS *present_parameters);
+void __RPC_STUB IWineD3DDevice_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetDialogBoxMode_Proxy(
+    IWineD3DDevice* This,
+    BOOL enable_dialogs);
+void __RPC_STUB IWineD3DDevice_SetDialogBoxMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetCursorProperties_Proxy(
+    IWineD3DDevice* This,
+    UINT x_hotspot,
+    UINT y_hotspot,
+    IWineD3DSurface *cursor_surface);
+void __RPC_STUB IWineD3DDevice_SetCursorProperties_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_SetCursorPosition_Proxy(
+    IWineD3DDevice* This,
+    int x_screen_space,
+    int y_screen_space,
+    DWORD flags);
+void __RPC_STUB IWineD3DDevice_SetCursorPosition_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL STDMETHODCALLTYPE IWineD3DDevice_ShowCursor_Proxy(
+    IWineD3DDevice* This,
+    BOOL show);
+void __RPC_STUB IWineD3DDevice_ShowCursor_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetClipPlane_Proxy(
+    IWineD3DDevice* This,
+    DWORD plane_idx,
+    const float *plane);
+void __RPC_STUB IWineD3DDevice_SetClipPlane_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetClipPlane_Proxy(
+    IWineD3DDevice* This,
+    DWORD plane_idx,
+    float *plane);
+void __RPC_STUB IWineD3DDevice_GetClipPlane_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetClipStatus_Proxy(
+    IWineD3DDevice* This,
+    const WINED3DCLIPSTATUS *clip_status);
+void __RPC_STUB IWineD3DDevice_SetClipStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetClipStatus_Proxy(
+    IWineD3DDevice* This,
+    WINED3DCLIPSTATUS *clip_status);
+void __RPC_STUB IWineD3DDevice_GetClipStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetCurrentTexturePalette_Proxy(
+    IWineD3DDevice* This,
+    UINT palette_number);
+void __RPC_STUB IWineD3DDevice_SetCurrentTexturePalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetCurrentTexturePalette_Proxy(
+    IWineD3DDevice* This,
+    UINT *palette_number);
+void __RPC_STUB IWineD3DDevice_GetCurrentTexturePalette_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetDepthStencilSurface_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DSurface *depth_stencil);
+void __RPC_STUB IWineD3DDevice_SetDepthStencilSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetDepthStencilSurface_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DSurface **depth_stencil);
+void __RPC_STUB IWineD3DDevice_GetDepthStencilSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_SetGammaRamp_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    DWORD flags,
+    const WINED3DGAMMARAMP *ramp);
+void __RPC_STUB IWineD3DDevice_SetGammaRamp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_GetGammaRamp_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    WINED3DGAMMARAMP *ramp);
+void __RPC_STUB IWineD3DDevice_GetGammaRamp_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetIndexBuffer_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DBuffer *index_buffer,
+    WINED3DFORMAT format);
+void __RPC_STUB IWineD3DDevice_SetIndexBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetIndexBuffer_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DBuffer **index_buffer);
+void __RPC_STUB IWineD3DDevice_GetIndexBuffer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetBaseVertexIndex_Proxy(
+    IWineD3DDevice* This,
+    INT base_index);
+void __RPC_STUB IWineD3DDevice_SetBaseVertexIndex_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetBaseVertexIndex_Proxy(
+    IWineD3DDevice* This,
+    INT *base_index);
+void __RPC_STUB IWineD3DDevice_GetBaseVertexIndex_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetLight_Proxy(
+    IWineD3DDevice* This,
+    DWORD light_idx,
+    const WINED3DLIGHT *light);
+void __RPC_STUB IWineD3DDevice_SetLight_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetLight_Proxy(
+    IWineD3DDevice* This,
+    DWORD light_idx,
+    WINED3DLIGHT *light);
+void __RPC_STUB IWineD3DDevice_GetLight_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetLightEnable_Proxy(
+    IWineD3DDevice* This,
+    DWORD light_idx,
+    BOOL enable);
+void __RPC_STUB IWineD3DDevice_SetLightEnable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetLightEnable_Proxy(
+    IWineD3DDevice* This,
+    DWORD light_idx,
+    BOOL *enable);
+void __RPC_STUB IWineD3DDevice_GetLightEnable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetMaterial_Proxy(
+    IWineD3DDevice* This,
+    const WINED3DMATERIAL *material);
+void __RPC_STUB IWineD3DDevice_SetMaterial_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetMaterial_Proxy(
+    IWineD3DDevice* This,
+    WINED3DMATERIAL *material);
+void __RPC_STUB IWineD3DDevice_GetMaterial_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetNPatchMode_Proxy(
+    IWineD3DDevice* This,
+    float segments);
+void __RPC_STUB IWineD3DDevice_SetNPatchMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+float STDMETHODCALLTYPE IWineD3DDevice_GetNPatchMode_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_GetNPatchMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetPaletteEntries_Proxy(
+    IWineD3DDevice* This,
+    UINT palette_number,
+    const PALETTEENTRY *entries);
+void __RPC_STUB IWineD3DDevice_SetPaletteEntries_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetPaletteEntries_Proxy(
+    IWineD3DDevice* This,
+    UINT palette_number,
+    PALETTEENTRY *entries);
+void __RPC_STUB IWineD3DDevice_GetPaletteEntries_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetPixelShader_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DPixelShader *shader);
+void __RPC_STUB IWineD3DDevice_SetPixelShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetPixelShader_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DPixelShader **shader);
+void __RPC_STUB IWineD3DDevice_GetPixelShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetPixelShaderConstantB_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    const BOOL *constants,
+    UINT bool_count);
+void __RPC_STUB IWineD3DDevice_SetPixelShaderConstantB_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetPixelShaderConstantB_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    BOOL *constants,
+    UINT bool_count);
+void __RPC_STUB IWineD3DDevice_GetPixelShaderConstantB_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetPixelShaderConstantI_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    const int *constants,
+    UINT vector4i_count);
+void __RPC_STUB IWineD3DDevice_SetPixelShaderConstantI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetPixelShaderConstantI_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    int *constants,
+    UINT vector4i_count);
+void __RPC_STUB IWineD3DDevice_GetPixelShaderConstantI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetPixelShaderConstantF_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    const float *constants,
+    UINT vector4f_count);
+void __RPC_STUB IWineD3DDevice_SetPixelShaderConstantF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetPixelShaderConstantF_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    float *constants,
+    UINT vector4f_count);
+void __RPC_STUB IWineD3DDevice_GetPixelShaderConstantF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetRenderState_Proxy(
+    IWineD3DDevice* This,
+    WINED3DRENDERSTATETYPE state,
+    DWORD value);
+void __RPC_STUB IWineD3DDevice_SetRenderState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetRenderState_Proxy(
+    IWineD3DDevice* This,
+    WINED3DRENDERSTATETYPE state,
+    DWORD *value);
+void __RPC_STUB IWineD3DDevice_GetRenderState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetRenderTarget_Proxy(
+    IWineD3DDevice* This,
+    DWORD render_target_idx,
+    IWineD3DSurface *render_target,
+    BOOL set_viewport);
+void __RPC_STUB IWineD3DDevice_SetRenderTarget_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetRenderTarget_Proxy(
+    IWineD3DDevice* This,
+    DWORD render_target_idx,
+    IWineD3DSurface **render_target);
+void __RPC_STUB IWineD3DDevice_GetRenderTarget_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetFrontBackBuffers_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DSurface *front,
+    IWineD3DSurface *back);
+void __RPC_STUB IWineD3DDevice_SetFrontBackBuffers_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetSamplerState_Proxy(
+    IWineD3DDevice* This,
+    DWORD sampler_idx,
+    WINED3DSAMPLERSTATETYPE state,
+    DWORD value);
+void __RPC_STUB IWineD3DDevice_SetSamplerState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetSamplerState_Proxy(
+    IWineD3DDevice* This,
+    DWORD sampler_idx,
+    WINED3DSAMPLERSTATETYPE state,
+    DWORD *value);
+void __RPC_STUB IWineD3DDevice_GetSamplerState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetScissorRect_Proxy(
+    IWineD3DDevice* This,
+    const RECT *rect);
+void __RPC_STUB IWineD3DDevice_SetScissorRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetScissorRect_Proxy(
+    IWineD3DDevice* This,
+    RECT *rect);
+void __RPC_STUB IWineD3DDevice_GetScissorRect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetSoftwareVertexProcessing_Proxy(
+    IWineD3DDevice* This,
+    BOOL software);
+void __RPC_STUB IWineD3DDevice_SetSoftwareVertexProcessing_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+BOOL STDMETHODCALLTYPE IWineD3DDevice_GetSoftwareVertexProcessing_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_GetSoftwareVertexProcessing_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetStreamSource_Proxy(
+    IWineD3DDevice* This,
+    UINT stream_idx,
+    IWineD3DBuffer *buffer,
+    UINT offset,
+    UINT stride);
+void __RPC_STUB IWineD3DDevice_SetStreamSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetStreamSource_Proxy(
+    IWineD3DDevice* This,
+    UINT stream_idx,
+    IWineD3DBuffer **buffer,
+    UINT *offset,
+    UINT *stride);
+void __RPC_STUB IWineD3DDevice_GetStreamSource_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetStreamSourceFreq_Proxy(
+    IWineD3DDevice* This,
+    UINT stream_idx,
+    UINT divider);
+void __RPC_STUB IWineD3DDevice_SetStreamSourceFreq_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetStreamSourceFreq_Proxy(
+    IWineD3DDevice* This,
+    UINT stream_idx,
+    UINT *divider);
+void __RPC_STUB IWineD3DDevice_GetStreamSourceFreq_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetTexture_Proxy(
+    IWineD3DDevice* This,
+    DWORD stage,
+    IWineD3DBaseTexture *texture);
+void __RPC_STUB IWineD3DDevice_SetTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetTexture_Proxy(
+    IWineD3DDevice* This,
+    DWORD stage,
+    IWineD3DBaseTexture **texture);
+void __RPC_STUB IWineD3DDevice_GetTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetTextureStageState_Proxy(
+    IWineD3DDevice* This,
+    DWORD stage,
+    WINED3DTEXTURESTAGESTATETYPE state,
+    DWORD value);
+void __RPC_STUB IWineD3DDevice_SetTextureStageState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetTextureStageState_Proxy(
+    IWineD3DDevice* This,
+    DWORD stage,
+    WINED3DTEXTURESTAGESTATETYPE state,
+    DWORD *value);
+void __RPC_STUB IWineD3DDevice_GetTextureStageState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetTransform_Proxy(
+    IWineD3DDevice* This,
+    WINED3DTRANSFORMSTATETYPE state,
+    const WINED3DMATRIX *matrix);
+void __RPC_STUB IWineD3DDevice_SetTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetTransform_Proxy(
+    IWineD3DDevice* This,
+    WINED3DTRANSFORMSTATETYPE state,
+    WINED3DMATRIX *matrix);
+void __RPC_STUB IWineD3DDevice_GetTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetVertexDeclaration_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexDeclaration *declaration);
+void __RPC_STUB IWineD3DDevice_SetVertexDeclaration_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetVertexDeclaration_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexDeclaration **declaration);
+void __RPC_STUB IWineD3DDevice_GetVertexDeclaration_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetVertexShader_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexShader *shader);
+void __RPC_STUB IWineD3DDevice_SetVertexShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetVertexShader_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DVertexShader **shader);
+void __RPC_STUB IWineD3DDevice_GetVertexShader_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetVertexShaderConstantB_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    const BOOL *constants,
+    UINT bool_count);
+void __RPC_STUB IWineD3DDevice_SetVertexShaderConstantB_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetVertexShaderConstantB_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    BOOL *constants,
+    UINT bool_count);
+void __RPC_STUB IWineD3DDevice_GetVertexShaderConstantB_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetVertexShaderConstantI_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    const int *constants,
+    UINT vector4i_count);
+void __RPC_STUB IWineD3DDevice_SetVertexShaderConstantI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetVertexShaderConstantI_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    int *constants,
+    UINT vector4i_count);
+void __RPC_STUB IWineD3DDevice_GetVertexShaderConstantI_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetVertexShaderConstantF_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    const float *constants,
+    UINT vector4f_count);
+void __RPC_STUB IWineD3DDevice_SetVertexShaderConstantF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetVertexShaderConstantF_Proxy(
+    IWineD3DDevice* This,
+    UINT start_register,
+    float *constants,
+    UINT vector4f_count);
+void __RPC_STUB IWineD3DDevice_GetVertexShaderConstantF_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_SetViewport_Proxy(
+    IWineD3DDevice* This,
+    const WINED3DVIEWPORT *viewport);
+void __RPC_STUB IWineD3DDevice_SetViewport_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetViewport_Proxy(
+    IWineD3DDevice* This,
+    WINED3DVIEWPORT *viewport);
+void __RPC_STUB IWineD3DDevice_GetViewport_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_MultiplyTransform_Proxy(
+    IWineD3DDevice* This,
+    WINED3DTRANSFORMSTATETYPE state,
+    const WINED3DMATRIX *matrix);
+void __RPC_STUB IWineD3DDevice_MultiplyTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_ValidateDevice_Proxy(
+    IWineD3DDevice* This,
+    DWORD *num_passes);
+void __RPC_STUB IWineD3DDevice_ValidateDevice_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_ProcessVertices_Proxy(
+    IWineD3DDevice* This,
+    UINT src_start_idx,
+    UINT dst_idx,
+    UINT vertex_count,
+    IWineD3DBuffer *dest_buffer,
+    IWineD3DVertexDeclaration *declaration,
+    DWORD flags,
+    DWORD DestFVF);
+void __RPC_STUB IWineD3DDevice_ProcessVertices_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_BeginStateBlock_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_BeginStateBlock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_EndStateBlock_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DStateBlock **stateblock);
+void __RPC_STUB IWineD3DDevice_EndStateBlock_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_BeginScene_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_BeginScene_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_EndScene_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_EndScene_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_Present_Proxy(
+    IWineD3DDevice* This,
+    const RECT *src_rect,
+    const RECT *dst_rect,
+    HWND dst_window_override,
+    const RGNDATA *dirty_region);
+void __RPC_STUB IWineD3DDevice_Present_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_Clear_Proxy(
+    IWineD3DDevice* This,
+    DWORD rect_count,
+    const WINED3DRECT *rects,
+    DWORD flags,
+    WINED3DCOLOR color,
+    float z,
+    DWORD stencil);
+void __RPC_STUB IWineD3DDevice_Clear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_ClearRendertargetView_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DRendertargetView *rendertarget_view,
+    const float color[4]);
+void __RPC_STUB IWineD3DDevice_ClearRendertargetView_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_SetPrimitiveType_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRIMITIVETYPE primitive_topology);
+void __RPC_STUB IWineD3DDevice_SetPrimitiveType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_GetPrimitiveType_Proxy(
+    IWineD3DDevice* This,
+    WINED3DPRIMITIVETYPE *primitive_topology);
+void __RPC_STUB IWineD3DDevice_GetPrimitiveType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawPrimitive_Proxy(
+    IWineD3DDevice* This,
+    UINT start_vertex,
+    UINT vertex_count);
+void __RPC_STUB IWineD3DDevice_DrawPrimitive_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawIndexedPrimitive_Proxy(
+    IWineD3DDevice* This,
+    UINT start_idx,
+    UINT index_count);
+void __RPC_STUB IWineD3DDevice_DrawIndexedPrimitive_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawPrimitiveUP_Proxy(
+    IWineD3DDevice* This,
+    UINT vertex_count,
+    const void *stream_data,
+    UINT stream_stride);
+void __RPC_STUB IWineD3DDevice_DrawPrimitiveUP_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawIndexedPrimitiveUP_Proxy(
+    IWineD3DDevice* This,
+    UINT index_count,
+    const void *index_data,
+    WINED3DFORMAT index_data_format,
+    const void *stream_data,
+    UINT stream_stride);
+void __RPC_STUB IWineD3DDevice_DrawIndexedPrimitiveUP_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawPrimitiveStrided_Proxy(
+    IWineD3DDevice* This,
+    UINT vertex_count,
+    const WineDirect3DVertexStridedData *strided_data);
+void __RPC_STUB IWineD3DDevice_DrawPrimitiveStrided_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawIndexedPrimitiveStrided_Proxy(
+    IWineD3DDevice* This,
+    UINT index_count,
+    const WineDirect3DVertexStridedData *strided_data,
+    UINT vertex_count,
+    const void *index_data,
+    WINED3DFORMAT index_data_format);
+void __RPC_STUB IWineD3DDevice_DrawIndexedPrimitiveStrided_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawRectPatch_Proxy(
+    IWineD3DDevice* This,
+    UINT handle,
+    const float *num_segs,
+    const WINED3DRECTPATCH_INFO *rect_patch_info);
+void __RPC_STUB IWineD3DDevice_DrawRectPatch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DrawTriPatch_Proxy(
+    IWineD3DDevice* This,
+    UINT handle,
+    const float *num_segs,
+    const WINED3DTRIPATCH_INFO *tri_patch_info);
+void __RPC_STUB IWineD3DDevice_DrawTriPatch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_DeletePatch_Proxy(
+    IWineD3DDevice* This,
+    UINT handle);
+void __RPC_STUB IWineD3DDevice_DeletePatch_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_ColorFill_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DSurface *surface,
+    const WINED3DRECT *rect,
+    WINED3DCOLOR color);
+void __RPC_STUB IWineD3DDevice_ColorFill_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_UpdateTexture_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DBaseTexture *src_texture,
+    IWineD3DBaseTexture *dst_texture);
+void __RPC_STUB IWineD3DDevice_UpdateTexture_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_UpdateSurface_Proxy(
+    IWineD3DDevice* This,
+    IWineD3DSurface *src_surface,
+    const RECT *src_rect,
+    IWineD3DSurface *dst_surface,
+    const POINT *dst_point);
+void __RPC_STUB IWineD3DDevice_UpdateSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetFrontBufferData_Proxy(
+    IWineD3DDevice* This,
+    UINT swapchain_idx,
+    IWineD3DSurface *dst_surface);
+void __RPC_STUB IWineD3DDevice_GetFrontBufferData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_EnumResources_Proxy(
+    IWineD3DDevice* This,
+    HRESULT (STDMETHODCALLTYPE * callback)(IWineD3DResource *resource,void *pData),
+    void *data);
+void __RPC_STUB IWineD3DDevice_EnumResources_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_GetSurfaceFromDC_Proxy(
+    IWineD3DDevice* This,
+    HDC dc,
+    IWineD3DSurface **surface);
+void __RPC_STUB IWineD3DDevice_GetSurfaceFromDC_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWineD3DDevice_AcquireFocusWindow_Proxy(
+    IWineD3DDevice* This,
+    HWND window);
+void __RPC_STUB IWineD3DDevice_AcquireFocusWindow_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWineD3DDevice_ReleaseFocusWindow_Proxy(
+    IWineD3DDevice* This);
+void __RPC_STUB IWineD3DDevice_ReleaseFocusWindow_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWineD3DDevice_INTERFACE_DEFINED__ */
+
+IWineD3D * STDMETHODCALLTYPE  WineDirect3DCreate(UINT dxVersion,IUnknown *parent);
+
+IWineD3DClipper * STDMETHODCALLTYPE  WineDirect3DCreateClipper(IUnknown *parent);
+
+void STDMETHODCALLTYPE  wined3d_mutex_lock(void);
+
+void STDMETHODCALLTYPE  wined3d_mutex_unlock(void);
+
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_WINED3D_H */
