diff --git a/dlls/d3d9/d3d9_main.c b/dlls/d3d9/d3d9_main.c index a80424a66e1..5eba575a5bc 100644 --- a/dlls/d3d9/d3d9_main.c +++ b/dlls/d3d9/d3d9_main.c @@ -21,6 +21,7 @@ */ #include "config.h" +#include "initguid.h" #include "d3d9_private.h" WINE_DEFAULT_DEBUG_CHANNEL(d3d); diff --git a/dlls/d3d9/surface.c b/dlls/d3d9/surface.c index 2eed31cc951..682bc869839 100644 --- a/dlls/d3d9/surface.c +++ b/dlls/d3d9/surface.c @@ -109,26 +109,46 @@ HRESULT WINAPI IDirect3DSurface9Impl_GetContainer(LPDIRECT3DSURFACE9 iface, REFI IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface; HRESULT res; - /* The container returned from IWineD3DSurface_GetContainer is either a IWineD3DDevice or - opne of the subclasses of resource */ + /* The container returned from IWineD3DSurface_GetContainer is either a IWineD3DDevice, + one of the subclasses of IWineD3DBaseTexture or a IWineD3DSwapChain */ IUnknown *IWineContainer = NULL; - res = IWineD3DSurface_GetContainer(This->wineD3DSurface, riid, (void **)&IWineContainer); - if (res == D3D_OK) { - IWineD3DDevice *myDevice = NULL; - IWineD3DResource_GetDevice((IWineD3DSurface *)This->wineD3DSurface, &myDevice); + TRACE("(%p) Relay\n", This); - if (IWineContainer == (IUnknown *)myDevice) { - IWineD3DDevice_GetParent((IWineD3DDevice *)IWineContainer, (IUnknown **)ppContainer); - IWineD3DDevice_Release((IWineD3DDevice *)IWineContainer); - } else { - IWineD3DResource_GetParent((IWineD3DResource *)IWineContainer, (IUnknown **)ppContainer); - IWineD3DResource_Release((IWineD3DResource *)IWineContainer); + /* Get the IUnknown container. */ + res = IWineD3DSurface_GetContainer(This->wineD3DSurface, &IID_IUnknown, (void **)&IWineContainer); + if (res == D3D_OK && IWineContainer != NULL) { + + /* Now find out what kind of container it is (so that we can get its parent)*/ + IUnknown *IUnknownParent = NULL; + IUnknown *myContainer = NULL; + if(D3D_OK == IUnknown_QueryInterface(IWineContainer, &IID_IWineD3DDevice, (void **)&myContainer)){ + IWineD3DDevice_GetParent((IWineD3DDevice *)IWineContainer, &IUnknownParent); + IUnknown_Release(myContainer); + } else + if(D3D_OK == IUnknown_QueryInterface(IWineContainer, &IID_IWineD3DBaseTexture, (void **)&myContainer)){ + IWineD3DBaseTexture_GetParent((IWineD3DBaseTexture *)IWineContainer, &IUnknownParent); + IUnknown_Release(myContainer); + } else + if(D3D_OK == IUnknown_QueryInterface(IWineContainer, &IID_IWineD3DSwapChain, (void **)&myContainer)){ + IWineD3DBaseTexture_GetParent((IWineD3DBaseTexture *)IWineContainer, &IUnknownParent); + IUnknown_Release(myContainer); + }else{ + FIXME("Container is of unknown interface\n"); } + /* Tidy up.. */ + IUnknown_Release((IWineD3DDevice *)IWineContainer); - IWineD3DDevice_Release(myDevice); + /* Now, query the interface of the parent for the riid */ + if(IUnknownParent != NULL){ + res = IUnknown_QueryInterface(IUnknownParent, riid, ppContainer); + /* Tidy up.. */ + IUnknown_Release(IUnknownParent); + } + } + TRACE("(%p) : returning %p\n", This, *ppContainer); return res; } diff --git a/dlls/wined3d/basetexture.c b/dlls/wined3d/basetexture.c index bdada7b3e1b..69a8ef37c6f 100644 --- a/dlls/wined3d/basetexture.c +++ b/dlls/wined3d/basetexture.c @@ -30,8 +30,16 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d); ******************************************* */ HRESULT WINAPI IWineD3DBaseTextureImpl_QueryInterface(IWineD3DBaseTexture *iface, REFIID riid, LPVOID *ppobj) { - IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface; - WARN("(%p)->(%s,%p) should not be called\n",This,debugstr_guid(riid),ppobj); + IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface; + TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); + /* FIXME: This needs to extend a IWineD3DBaseObject */ + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IWineD3DResource) + || IsEqualGUID(riid, &IID_IWineD3DBaseTexture)) { + IUnknown_AddRef(iface); + *ppobj = This; + return D3D_OK; + } return E_NOINTERFACE; } diff --git a/dlls/wined3d/cubetexture.c b/dlls/wined3d/cubetexture.c index 0c6f1163222..8f1938f3af4 100644 --- a/dlls/wined3d/cubetexture.c +++ b/dlls/wined3d/cubetexture.c @@ -2,7 +2,8 @@ * IDirect3DCubeTexture9 implementation * * Copyright 2002-2005 Jason Edmeades - * Raphael Junqueira + * Copyright 2002-2005 Raphael Junqueira + * Copyright 2005 Oliver Stieber * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -49,7 +50,15 @@ static const GLenum cube_targets[6] = { HRESULT WINAPI IWineD3DCubeTextureImpl_QueryInterface(IWineD3DCubeTexture *iface, REFIID riid, LPVOID *ppobj) { IWineD3DCubeTextureImpl *This = (IWineD3DCubeTextureImpl *)iface; - WARN("(%p)->(%s,%p) should not be called\n",This,debugstr_guid(riid),ppobj); + TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IWineD3DResource) + || IsEqualGUID(riid, &IID_IWineD3DBaseTexture) + || IsEqualGUID(riid, &IID_IWineD3DTexture)) { + IUnknown_AddRef(iface); + *ppobj = This; + return D3D_OK; + } return E_NOINTERFACE; } diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 3972f078620..e4814ba4d15 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -230,6 +230,17 @@ void WINAPI IWineD3DDeviceImpl_SetupTextureStates(IWineD3DDevice *iface, DWORD S HRESULT WINAPI IWineD3DDeviceImpl_QueryInterface(IWineD3DDevice *iface,REFIID riid,LPVOID *ppobj) { + IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + /* FIXME: This needs to extend a IWineD3DBaseObject */ + + TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IWineD3DDevice)) { + IUnknown_AddRef(iface); + *ppobj = This; + return D3D_OK; + } + return E_NOINTERFACE; } diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 7019cf08929..e8b29cd873a 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -149,6 +149,50 @@ static void WineD3D_ReleaseFakeGLContext(WineD3D_Context* ctx) { } } +/********************************************************** + * IUnknown parts follows + **********************************************************/ + +HRESULT WINAPI IWineD3DImpl_QueryInterface(IWineD3D *iface,REFIID riid,LPVOID *ppobj) +{ + IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + /* FIXME: This needs to extend a IWineD3DBaseObject */ + + TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IWineD3DDevice)) { + IUnknown_AddRef(iface); + *ppobj = This; + return D3D_OK; + } + + return E_NOINTERFACE; +} + +ULONG WINAPI IWineD3DImpl_AddRef(IWineD3D *iface) { + IWineD3DImpl *This = (IWineD3DImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p) : AddRef increasing from %ld\n", This, refCount - 1); + return refCount; +} + +ULONG WINAPI IWineD3DImpl_Release(IWineD3D *iface) { + IWineD3DImpl *This = (IWineD3DImpl *)iface; + ULONG ref; + TRACE("(%p) : Releasing from %ld\n", This, This->ref); + ref = InterlockedDecrement(&This->ref); + if (ref == 0) { + HeapFree(GetProcessHeap(), 0, This); + } + + return ref; +} + +/********************************************************** + * IWineD3D parts follows + **********************************************************/ + static BOOL IWineD3DImpl_FillGLCaps(WineD3D_GL_Info *gl_info, Display* display) { const char *GL_Extensions = NULL; const char *GLX_Extensions = NULL; @@ -1613,33 +1657,6 @@ HRESULT WINAPI IWineD3DImpl_GetParent(IWineD3D *iface, IUnknown **pParent) { return D3D_OK; } -/********************************************************** - * IUnknown parts follows - **********************************************************/ - -HRESULT WINAPI IWineD3DImpl_QueryInterface(IWineD3D *iface,REFIID riid,LPVOID *ppobj) -{ - return E_NOINTERFACE; -} - -ULONG WINAPI IWineD3DImpl_AddRef(IWineD3D *iface) { - IWineD3DImpl *This = (IWineD3DImpl *)iface; - ULONG refCount = InterlockedIncrement(&This->ref); - - TRACE("(%p) : AddRef increasing from %ld\n", This, refCount - 1); - return refCount; -} - -ULONG WINAPI IWineD3DImpl_Release(IWineD3D *iface) { - IWineD3DImpl *This = (IWineD3DImpl *)iface; - ULONG refCount = InterlockedDecrement(&This->ref); - - TRACE("(%p) : Releasing from %ld\n", This, refCount + 1); - - if (!refCount) HeapFree(GetProcessHeap(), 0, This); - return refCount; -} - /********************************************************** * IWineD3D VTbl follows **********************************************************/ diff --git a/dlls/wined3d/indexbuffer.c b/dlls/wined3d/indexbuffer.c index 03c969926d4..a0d3e8f8268 100644 --- a/dlls/wined3d/indexbuffer.c +++ b/dlls/wined3d/indexbuffer.c @@ -32,7 +32,14 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d); HRESULT WINAPI IWineD3DIndexBufferImpl_QueryInterface(IWineD3DIndexBuffer *iface, REFIID riid, LPVOID *ppobj) { IWineD3DIndexBufferImpl *This = (IWineD3DIndexBufferImpl *)iface; - WARN("(%p)->(%s,%p) should not be called\n",This,debugstr_guid(riid),ppobj); + TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IWineD3DResource) + || IsEqualGUID(riid, &IID_IWineD3DIndexBuffer)){ + IUnknown_AddRef(iface); + *ppobj = This; + return D3D_OK; + } return E_NOINTERFACE; } diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c index 73f1e0d050e..d5822eef9cd 100644 --- a/dlls/wined3d/resource.c +++ b/dlls/wined3d/resource.c @@ -30,7 +30,13 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d); HRESULT WINAPI IWineD3DResourceImpl_QueryInterface(IWineD3DResource *iface, REFIID riid, LPVOID *ppobj) { IWineD3DResourceImpl *This = (IWineD3DResourceImpl *)iface; - WARN("(%p)->(%s,%p) should not be called\n",This,debugstr_guid(riid),ppobj); + TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IWineD3DResource)) { + IUnknown_AddRef(iface); + *ppobj = This; + return D3D_OK; + } return E_NOINTERFACE; } diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index 1d447e66e3e..93c9b24c4b0 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -2,7 +2,8 @@ * state block implementation * * Copyright 2002 Raphael Junqueira - * 2004 Jason Edmeades + * Copyright 2004 Jason Edmeades + * Copyright 2005 Oliver Stieber * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -25,6 +26,46 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d); #define GLINFO_LOCATION ((IWineD3DImpl *)(((IWineD3DDeviceImpl *)This->wineD3DDevice)->wineD3D))->gl_info +/********************************************************** + * IWineD3DStateBlockImpl IUnknown parts follows + **********************************************************/ +HRESULT WINAPI IWineD3DStateBlockImpl_QueryInterface(IWineD3DStateBlock *iface,REFIID riid,LPVOID *ppobj) +{ + IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface; + TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IWineD3DStateBlock)){ + IUnknown_AddRef(iface); + *ppobj = This; + return D3D_OK; + } + return E_NOINTERFACE; +} + +ULONG WINAPI IWineD3DStateBlockImpl_AddRef(IWineD3DStateBlock *iface) { + IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p) : AddRef increasing from %ld\n", This, refCount - 1); + return refCount; +} + +ULONG WINAPI IWineD3DStateBlockImpl_Release(IWineD3DStateBlock *iface) { + IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); + + TRACE("(%p) : Releasing from %ld\n", This, refCount + 1); + + if (!refCount) { + IWineD3DDevice_Release((IWineD3DDevice *)This->wineD3DDevice); + HeapFree(GetProcessHeap(), 0, This); + } + return refCount; +} + +/********************************************************** + * IWineD3DStateBlockImpl parts follows + **********************************************************/ HRESULT WINAPI IWineD3DStateBlockImpl_GetParent(IWineD3DStateBlock *iface, IUnknown **pParent) { IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface; IUnknown_AddRef(This->parent); @@ -252,35 +293,6 @@ HRESULT WINAPI IWineD3DStateBlockImpl_InitStartupStateBlock(IWineD3DStateBlock* return D3D_OK; } -/********************************************************** - * IUnknown parts follows - **********************************************************/ -HRESULT WINAPI IWineD3DStateBlockImpl_QueryInterface(IWineD3DStateBlock *iface,REFIID riid,LPVOID *ppobj) -{ - return E_NOINTERFACE; -} - -ULONG WINAPI IWineD3DStateBlockImpl_AddRef(IWineD3DStateBlock *iface) { - IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface; - ULONG refCount = InterlockedIncrement(&This->ref); - - TRACE("(%p) : AddRef increasing from %ld\n", This, refCount - 1); - return refCount; -} - -ULONG WINAPI IWineD3DStateBlockImpl_Release(IWineD3DStateBlock *iface) { - IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface; - ULONG refCount = InterlockedDecrement(&This->ref); - - TRACE("(%p) : Releasing from %ld\n", This, refCount + 1); - - if (!refCount) { - IWineD3DDevice_Release((IWineD3DDevice *)This->wineD3DDevice); - HeapFree(GetProcessHeap(), 0, This); - } - return refCount; -} - /********************************************************** * IWineD3DStateBlock VTbl follows **********************************************************/ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index ea21b4bf29e..2d6a4b9bcc1 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -31,7 +31,15 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d); HRESULT WINAPI IWineD3DTextureImpl_QueryInterface(IWineD3DTexture *iface, REFIID riid, LPVOID *ppobj) { IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface; - WARN("(%p)->(%s,%p) should not be called\n",This,debugstr_guid(riid),ppobj); + TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IWineD3DResource) + || IsEqualGUID(riid, &IID_IWineD3DBaseTexture) + || IsEqualGUID(riid, &IID_IWineD3DTexture)){ + IUnknown_AddRef(iface); + *ppobj = This; + return D3D_OK; + } return E_NOINTERFACE; } diff --git a/dlls/wined3d/vertexbuffer.c b/dlls/wined3d/vertexbuffer.c index b8abcfbcc83..97d02ed0610 100644 --- a/dlls/wined3d/vertexbuffer.c +++ b/dlls/wined3d/vertexbuffer.c @@ -32,7 +32,14 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d); HRESULT WINAPI IWineD3DVertexBufferImpl_QueryInterface(IWineD3DVertexBuffer *iface, REFIID riid, LPVOID *ppobj) { IWineD3DVertexBufferImpl *This = (IWineD3DVertexBufferImpl *)iface; - WARN("(%p)->(%s,%p) should not be called\n",This,debugstr_guid(riid),ppobj); + TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IWineD3DResource) + || IsEqualGUID(riid, &IID_IWineD3DVertexBuffer)){ + IUnknown_AddRef(iface); + *ppobj = This; + return D3D_OK; + } return E_NOINTERFACE; } diff --git a/dlls/wined3d/vertexdeclaration.c b/dlls/wined3d/vertexdeclaration.c index 1a3259e9689..9665a3007bd 100644 --- a/dlls/wined3d/vertexdeclaration.c +++ b/dlls/wined3d/vertexdeclaration.c @@ -747,7 +747,13 @@ HRESULT IWineD3DVertexDeclarationImpl_ParseDeclaration9(IWineD3DDeviceImpl* This HRESULT WINAPI IWineD3DVertexDeclarationImpl_QueryInterface(IWineD3DVertexDeclaration *iface, REFIID riid, LPVOID *ppobj) { IWineD3DVertexDeclarationImpl *This = (IWineD3DVertexDeclarationImpl *)iface; - WARN("(%p)->(%s,%p) should not be called\n",This,debugstr_guid(riid),ppobj); + TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IWineD3DVertexDeclaration)){ + IUnknown_AddRef(iface); + *ppobj = This; + return D3D_OK; + } return E_NOINTERFACE; } diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c index ef7534c9e0f..08c0bd9a63c 100644 --- a/dlls/wined3d/volume.c +++ b/dlls/wined3d/volume.c @@ -31,7 +31,13 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d); HRESULT WINAPI IWineD3DVolumeImpl_QueryInterface(IWineD3DVolume *iface, REFIID riid, LPVOID *ppobj) { IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface; - WARN("(%p)->(%s,%p) should not be called\n",This,debugstr_guid(riid),ppobj); + TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IWineD3DVolume)){ + IUnknown_AddRef(iface); + *ppobj = This; + return D3D_OK; + } return E_NOINTERFACE; } diff --git a/dlls/wined3d/volumetexture.c b/dlls/wined3d/volumetexture.c index 30243c5270c..20bd6fc7877 100644 --- a/dlls/wined3d/volumetexture.c +++ b/dlls/wined3d/volumetexture.c @@ -31,7 +31,15 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d); HRESULT WINAPI IWineD3DVolumeTextureImpl_QueryInterface(IWineD3DVolumeTexture *iface, REFIID riid, LPVOID *ppobj) { IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface; - WARN("(%p)->(%s,%p) should not be called\n",This,debugstr_guid(riid),ppobj); + TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IWineD3DResource) + || IsEqualGUID(riid, &IID_IWineD3DBaseTexture) + || IsEqualGUID(riid, &IID_IWineD3DVolumeTexture)) { + IUnknown_AddRef(iface); + *ppobj = This; + return D3D_OK; + } return E_NOINTERFACE; } diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c index aee3c8d0664..15015212c35 100644 --- a/dlls/wined3d/wined3d_main.c +++ b/dlls/wined3d/wined3d_main.c @@ -22,6 +22,7 @@ #include "config.h" +#include "initguid.h" #include "wined3d_private.h" WINE_DEFAULT_DEBUG_CHANNEL(wine_d3d); diff --git a/include/wine/wined3d_interface.h b/include/wine/wined3d_interface.h index c6b87871d6d..8cf7b1eec65 100644 --- a/include/wine/wined3d_interface.h +++ b/include/wine/wined3d_interface.h @@ -37,6 +37,84 @@ */ + /***************************************************************************** + * Predeclare the interfaces + */ + + +/* {108F9C44-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3D, +0x108f9c44, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {108F9C44-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DDevice, +0x108f9c44, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + + +/* {1F3BFB34-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DResource, +0x1f3bfb34, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {217F671E-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DVertexBuffer, +0x217f671e, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {24769ED8-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DVolume, +0x24769ed8, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + + +/* {34D01B10-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DSwapChain, +0x34d01b10, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {37CD5526-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DSurface, +0x37cd5526, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + + +/* {3A02A54E-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DIndexBuffer, +0x3a02a54e, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {3C2AEBF6-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DBaseTexture, +0x3c2aebf6, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {3E72CC1C-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DTexture, +0x3e72cc1c, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {41752900-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DCubeTexture, +0x41752900, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {7B39470C-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DVolumeTexture, +0x7b39470c, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {7CD55BE6-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DVertexDeclaration, +0x7cd55be6, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {7F7A2B60-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DVertexShader, +0x7f7a2b60, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {818503DA-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DPixelShader, +0x818503da, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {83B073CE-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DStateBlock, +0x83b073ce, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + +/* {905DDBAC-6F30-11d9-C687-00046142C14F} */ +DEFINE_GUID(IID_IWineD3DQuery, +0x905ddbac, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f); + + + /***************************************************************************** * WineD3D Structures to be used when d3d8 and d3d9 are incompatible */