// Copyright © 2015, Corey Richardson // Licensed under the MIT License //! Direct3D include file pub const D3D_SDK_VERSION: ::DWORD = 32; pub const D3D9b_SDK_VERSION: ::DWORD = 31; RIDL!( interface IDirect3D9(IDirect3D9Vtbl): IUnknown(IUnknownVtbl) { fn RegisterSoftwareDevice(&mut self, pInitializeFunction: *mut ::VOID) -> ::HRESULT, fn GetAdapterCount(&mut self) -> ::UINT, fn GetAdapterIdentifier( &mut self, Adapter: ::UINT, Flags: ::DWORD, pIdentifier: *mut ::D3DADAPTER_IDENTIFIER9 ) -> ::HRESULT, fn GetAdapterModeCount(&mut self, Adapter: ::UINT, Format: ::D3DFORMAT) -> ::UINT, fn EnumAdapterModes( &mut self, Adapter: ::UINT, Format: ::D3DFORMAT, Mode: ::UINT, pMode: *mut ::D3DDISPLAYMODE ) -> ::HRESULT, fn GetAdapterDisplayMode( &mut self, Adapter: ::UINT, pMode: *mut ::D3DDISPLAYMODE ) -> ::HRESULT, fn CheckDeviceType( &mut self, Adapter: ::UINT, DevType: ::D3DDEVTYPE, AdapterFormat: ::D3DFORMAT, BackBufferFormat: ::D3DFORMAT, bWindowed: ::BOOL ) -> ::HRESULT, fn CheckDeviceFormat( &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, AdapterFormat: ::D3DFORMAT, Usage: ::DWORD, RType: ::D3DRESOURCETYPE, CheckFormat: ::D3DFORMAT ) -> ::HRESULT, fn CheckDeviceMultiSampleType( &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, SurfaceFormat: ::D3DFORMAT, Windowed: ::BOOL, MultiSampleType: ::D3DMULTISAMPLE_TYPE, pQualityLevels: *mut ::DWORD ) -> ::HRESULT, fn CheckDepthStencilMatch( &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, AdapterFormat: ::D3DFORMAT, RenderTargetFormat: ::D3DFORMAT, DepthStencilFormat: ::D3DFORMAT ) -> ::HRESULT, fn CheckDeviceFormatConversion( &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, SourceFormat: ::D3DFORMAT, TargetFormat: ::D3DFORMAT ) -> ::HRESULT, fn GetDeviceCaps( &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, pCaps: *mut ::D3DCAPS9 ) -> ::HRESULT, fn GetAdapterMonitor(&mut self, Adapter: ::UINT) -> ::HMONITOR, fn CreateDevice( &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, hFocusWindow: ::HWND, BehaviorFlags: ::DWORD, pPresentationParameters: *mut ::D3DPRESENT_PARAMETERS, ppReturnedDeviceInterface: *mut *mut IDirect3DDevice9 ) -> ::HRESULT } ); pub type LPDIRECT3D9 = *mut IDirect3D9; pub type PDIRECT3D9 = *mut IDirect3D9; RIDL!( interface IDirect3DDevice9(IDirect3DDevice9Vtbl): IUnknown(IUnknownVtbl) { fn TestCooperativeLevel(&mut self) -> ::HRESULT, fn GetAvailableTextureMem(&mut self) -> ::UINT, fn EvictManagedResources(&mut self) -> ::HRESULT, fn GetDirect3D(&mut self, ppD3D9: *mut *mut IDirect3D9) -> ::HRESULT, fn GetDeviceCaps(&mut self, pCaps: *mut ::D3DCAPS9) -> ::HRESULT, fn GetDisplayMode(&mut self, iSwapChain: ::UINT, pMode: *mut ::D3DDISPLAYMODE) -> ::HRESULT, fn GetCreationParameters( &mut self, pParameters: *mut ::D3DDEVICE_CREATION_PARAMETERS ) -> ::HRESULT, fn SetCursorProperties( &mut self, XHotSpot: ::UINT, YHotSpot: ::UINT, pCursorBitmap: *mut IDirect3DSurface9 ) -> ::HRESULT, fn SetCursorPosition(&mut self, X: ::INT, Y: ::INT, Flags: ::DWORD) -> (), fn ShowCursor(&mut self, bShow: ::BOOL) -> ::BOOL, fn CreateAdditionalSwapChain( &mut self, pPresentationParameters: *mut ::D3DPRESENT_PARAMETERS, pSwapChain: *mut *mut IDirect3DSwapChain9 ) -> ::HRESULT, fn GetSwapChain( &mut self, iSwapChain: ::UINT, pSwapChain: *mut *mut IDirect3DSwapChain9 ) -> ::HRESULT, fn GetNumberOfSwapChains(&mut self) -> ::UINT, fn Reset(&mut self, pPresentationParameters: *mut ::D3DPRESENT_PARAMETERS) -> ::HRESULT, fn Present( &mut self, pSourceRect: *const ::RECT, pDestRect: *const ::RECT, hDestWindowOverride: ::HWND, pDirtyRegion: *const ::RGNDATA ) -> ::HRESULT, fn GetBackBuffer( &mut self, iSwapChain: ::UINT, iBackBuffer: ::UINT, Type: ::D3DBACKBUFFER_TYPE, ppBackBuffer: *mut *mut IDirect3DSurface9 ) -> ::HRESULT, fn GetRasterStatus( &mut self, iSwapChain: ::UINT, pRasterStatus: *mut ::D3DRASTER_STATUS ) -> ::HRESULT, fn SetDialogBoxMode(&mut self, bEnableDialogs: ::BOOL) -> ::HRESULT, fn SetGammaRamp( &mut self, iSwapChain: ::UINT, Flags: ::DWORD, pRamp: *const ::D3DGAMMARAMP ) -> (), fn GetGammaRamp(&mut self, iSwapChain: ::UINT, pRamp: *mut ::D3DGAMMARAMP) -> (), fn CreateTexture( &mut self, Width: ::UINT, Height: ::UINT, Levels: ::UINT, Usage: ::DWORD, Format: ::D3DFORMAT, Pool: ::D3DPOOL, ppTexture: *mut *mut IDirect3DTexture9, pSharedHandle: *mut ::HANDLE ) -> ::HRESULT, fn CreateVolumeTexture( &mut self, Width: ::UINT, Height: ::UINT, Depth: ::UINT, Levels: ::UINT, Usage: ::DWORD, Format: ::D3DFORMAT, Pool: ::D3DPOOL, ppVolumeTexture: *mut *mut IDirect3DVolumeTexture9, pSharedHandle: *mut ::HANDLE ) -> ::HRESULT, fn CreateCubeTexture( &mut self, EdgeLength: ::UINT, Levels: ::UINT, Usage: ::DWORD, Format: ::D3DFORMAT, Pool: ::D3DPOOL, ppCubeTexture: *mut *mut IDirect3DCubeTexture9, pSharedHandle: *mut ::HANDLE ) -> ::HRESULT, fn CreateVertexBuffer( &mut self, Length: ::UINT, Usage: ::DWORD, FVF: ::DWORD, Pool: ::D3DPOOL, ppVertexBuffer: *mut *mut IDirect3DVertexBuffer9, pSharedHandle: *mut ::HANDLE ) -> ::HRESULT, fn CreateIndexBuffer( &mut self, Length: ::UINT, Usage: ::DWORD, Format: ::D3DFORMAT, Pool: ::D3DPOOL, ppIndexBuffer: *mut *mut IDirect3DIndexBuffer9, pSharedHandle: *mut ::HANDLE ) -> ::HRESULT, fn CreateRenderTarget( &mut self, Width: ::UINT, Height: ::UINT, Format: ::D3DFORMAT, MultiSample: ::D3DMULTISAMPLE_TYPE, MultisampleQuality: ::DWORD, Lockable: ::BOOL, ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut ::HANDLE ) -> ::HRESULT, fn CreateDepthStencilSurface( &mut self, Width: ::UINT, Height: ::UINT, Format: ::D3DFORMAT, MultiSample: ::D3DMULTISAMPLE_TYPE, MultisampleQuality: ::DWORD, Discard: ::BOOL, ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut ::HANDLE ) -> ::HRESULT, fn UpdateSurface( &mut self, pSourceSurface: *mut IDirect3DSurface9, pSourceRect: *const ::RECT, pDestinationSurface: *mut IDirect3DSurface9, pDestPoint: *const ::POINT ) -> ::HRESULT, fn UpdateTexture( &mut self, pSourceTexture: *mut IDirect3DBaseTexture9, pDestinationTexture: *mut IDirect3DBaseTexture9 ) -> ::HRESULT, fn GetRenderTargetData( &mut self, pRenderTarget: *mut IDirect3DSurface9, pDestSurface: *mut IDirect3DSurface9 ) -> ::HRESULT, fn GetFrontBufferData( &mut self, iSwapChain: ::UINT, pDestSurface: *mut IDirect3DSurface9 ) -> ::HRESULT, fn StretchRect( &mut self, pSourceSurface: *mut IDirect3DSurface9, pSourceRect: *const ::RECT, pDestSurface: *mut IDirect3DSurface9, pDestRect: *const ::RECT, Filter: ::D3DTEXTUREFILTERTYPE ) -> ::HRESULT, fn ColorFill( &mut self, pSurface: *mut IDirect3DSurface9, pRect: *const ::RECT, color: ::D3DCOLOR ) -> ::HRESULT, fn CreateOffscreenPlainSurface( &mut self, Width: ::UINT, Height: ::UINT, Format: ::D3DFORMAT, Pool: ::D3DPOOL, ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut ::HANDLE ) -> ::HRESULT, fn SetRenderTarget( &mut self, RenderTargetIndex: ::DWORD, pRenderTarget: *mut IDirect3DSurface9 ) -> ::HRESULT, fn GetRenderTarget( &mut self, RenderTargetIndex: ::DWORD, ppRenderTarget: *mut *mut IDirect3DSurface9 ) -> ::HRESULT, fn SetDepthStencilSurface(&mut self, pNewZStencil: *mut IDirect3DSurface9) -> ::HRESULT, fn GetDepthStencilSurface( &mut self, ppZStencilSurface: *mut *mut IDirect3DSurface9 ) -> ::HRESULT, fn BeginScene(&mut self) -> ::HRESULT, fn EndScene(&mut self) -> ::HRESULT, fn Clear( &mut self, Count: ::DWORD, pRects: *const ::D3DRECT, Flags: ::DWORD, Color: ::D3DCOLOR, Z: ::FLOAT, Stencil: ::DWORD ) -> ::HRESULT, fn SetTransform( &mut self, State: ::D3DTRANSFORMSTATETYPE, pMatrix: *const ::D3DMATRIX ) -> ::HRESULT, fn GetTransform( &mut self, State: ::D3DTRANSFORMSTATETYPE, pMatrix: *mut ::D3DMATRIX ) -> ::HRESULT, fn MultiplyTransform( &mut self, arg1: ::D3DTRANSFORMSTATETYPE, arg2: *const ::D3DMATRIX ) -> ::HRESULT, fn SetViewport(&mut self, pViewport: *const ::D3DVIEWPORT9) -> ::HRESULT, fn GetViewport(&mut self, pViewport: *mut ::D3DVIEWPORT9) -> ::HRESULT, fn SetMaterial(&mut self, pMaterial: *const ::D3DMATERIAL9) -> ::HRESULT, fn GetMaterial(&mut self, pMaterial: *mut ::D3DMATERIAL9) -> ::HRESULT, fn SetLight(&mut self, Index: ::DWORD, arg1: *const ::D3DLIGHT9) -> ::HRESULT, fn GetLight(&mut self, Index: ::DWORD, arg1: *mut ::D3DLIGHT9) -> ::HRESULT, fn LightEnable(&mut self, Index: ::DWORD, Enable: ::BOOL) -> ::HRESULT, fn GetLightEnable(&mut self, Index: ::DWORD, pEnable: *mut ::BOOL) -> ::HRESULT, fn SetClipPlane(&mut self, Index: ::DWORD, pPlane: *const ::FLOAT) -> ::HRESULT, fn GetClipPlane(&mut self, Index: ::DWORD, pPlane: *mut ::FLOAT) -> ::HRESULT, fn SetRenderState(&mut self, State: ::D3DRENDERSTATETYPE, Value: ::DWORD) -> ::HRESULT, fn GetRenderState(&mut self, State: ::D3DRENDERSTATETYPE, pValue: *mut ::DWORD) -> ::HRESULT, fn CreateStateBlock( &mut self, Type: ::D3DSTATEBLOCKTYPE, ppSB: *mut *mut IDirect3DStateBlock9 ) -> ::HRESULT, fn BeginStateBlock(&mut self) -> ::HRESULT, fn EndStateBlock(&mut self, ppSB: *mut *mut IDirect3DStateBlock9) -> ::HRESULT, fn SetClipStatus(&mut self, pClipStatus: *const ::D3DCLIPSTATUS9) -> ::HRESULT, fn GetClipStatus(&mut self, pClipStatus: *mut ::D3DCLIPSTATUS9) -> ::HRESULT, fn GetTexture( &mut self, Stage: ::DWORD, ppTexture: *mut *mut IDirect3DBaseTexture9 ) -> ::HRESULT, fn SetTexture(&mut self, Stage: ::DWORD, pTexture: *mut IDirect3DBaseTexture9) -> ::HRESULT, fn GetTextureStageState( &mut self, Stage: ::DWORD, Type: ::D3DTEXTURESTAGESTATETYPE, pValue: *mut ::DWORD ) -> ::HRESULT, fn SetTextureStageState( &mut self, Stage: ::DWORD, Type: ::D3DTEXTURESTAGESTATETYPE, Value: ::DWORD ) -> ::HRESULT, fn GetSamplerState( &mut self, Sampler: ::DWORD, Type: ::D3DSAMPLERSTATETYPE, pValue: *mut ::DWORD ) -> ::HRESULT, fn SetSamplerState( &mut self, Sampler: ::DWORD, Type: ::D3DSAMPLERSTATETYPE, Value: ::DWORD ) -> ::HRESULT, fn ValidateDevice(&mut self, pNumPasses: *mut ::DWORD) -> ::HRESULT, fn SetPaletteEntries( &mut self, PaletteNumber: ::UINT, pEntries: *const ::PALETTEENTRY ) -> ::HRESULT, fn GetPaletteEntries( &mut self, PaletteNumber: ::UINT, pEntries: *mut ::PALETTEENTRY ) -> ::HRESULT, fn SetCurrentTexturePalette(&mut self, PaletteNumber: ::UINT) -> ::HRESULT, fn GetCurrentTexturePalette(&mut self, PaletteNumber: *mut ::UINT) -> ::HRESULT, fn SetScissorRect(&mut self, pRect: *const ::RECT) -> ::HRESULT, fn GetScissorRect(&mut self, pRect: *mut ::RECT) -> ::HRESULT, fn SetSoftwareVertexProcessing(&mut self, bSoftware: ::BOOL) -> ::HRESULT, fn GetSoftwareVertexProcessing(&mut self) -> ::BOOL, fn SetNPatchMode(&mut self, nSegments: ::FLOAT) -> ::HRESULT, fn GetNPatchMode(&mut self) -> ::FLOAT, fn DrawPrimitive( &mut self, PrimitiveType: ::D3DPRIMITIVETYPE, StartVertex: ::UINT, PrimitiveCount: ::UINT ) -> ::HRESULT, fn DrawIndexedPrimitive( &mut self, arg1: ::D3DPRIMITIVETYPE, BaseVertexIndex: ::INT, MinVertexIndex: ::UINT, NumVertices: ::UINT, startIndex: ::UINT, primCount: ::UINT ) -> ::HRESULT, fn DrawPrimitiveUP( &mut self, PrimitiveType: ::D3DPRIMITIVETYPE, PrimitiveCount: ::UINT, pVertexStreamZeroData: *const ::VOID, VertexStreamZeroStride: ::UINT ) -> ::HRESULT, fn DrawIndexedPrimitiveUP( &mut self, PrimitiveType: ::D3DPRIMITIVETYPE, MinVertexIndex: ::UINT, NumVertices: ::UINT, PrimitiveCount: ::UINT, pIndexData: *const ::VOID, IndexDataFormat: ::D3DFORMAT, pVertexStreamZeroData: *const ::VOID, VertexStreamZeroStride: ::UINT ) -> ::HRESULT, fn ProcessVertices( &mut self, SrcStartIndex: ::UINT, DestIndex: ::UINT, VertexCount: ::UINT, pDestBuffer: *mut IDirect3DVertexBuffer9, pVertexDecl: *mut IDirect3DVertexDeclaration9, Flags: ::DWORD ) -> ::HRESULT, fn CreateVertexDeclaration( &mut self, pVertexElements: *const ::D3DVERTEXELEMENT9, ppDecl: *mut *mut IDirect3DVertexDeclaration9 ) -> ::HRESULT, fn SetVertexDeclaration(&mut self, pDecl: *mut IDirect3DVertexDeclaration9) -> ::HRESULT, fn GetVertexDeclaration(&mut self, ppDecl: *mut *mut IDirect3DVertexDeclaration9) -> ::HRESULT, fn SetFVF(&mut self, FVF: ::DWORD) -> ::HRESULT, fn GetFVF(&mut self, pFVF: *mut ::DWORD) -> ::HRESULT, fn CreateVertexShader( &mut self, pFunction: *const ::DWORD, ppShader: *mut *mut IDirect3DVertexShader9 ) -> ::HRESULT, fn SetVertexShader(&mut self, pShader: *mut IDirect3DVertexShader9) -> ::HRESULT, fn GetVertexShader(&mut self, ppShader: *mut *mut IDirect3DVertexShader9) -> ::HRESULT, fn SetVertexShaderConstantF( &mut self, StartRegister: ::UINT, pConstantData: *const ::FLOAT, Vector4fCount: ::UINT ) -> ::HRESULT, fn GetVertexShaderConstantF( &mut self, StartRegister: ::UINT, pConstantData: *mut ::FLOAT, Vector4fCount: ::UINT ) -> ::HRESULT, fn SetVertexShaderConstantI( &mut self, StartRegister: ::UINT, pConstantData: *const ::INT, Vector4iCount: ::UINT ) -> ::HRESULT, fn GetVertexShaderConstantI( &mut self, StartRegister: ::UINT, pConstantData: *mut ::INT, Vector4iCount: ::UINT ) -> ::HRESULT, fn SetVertexShaderConstantB( &mut self, StartRegister: ::UINT, pConstantData: *const ::BOOL, BoolCount: ::UINT ) -> ::HRESULT, fn GetVertexShaderConstantB( &mut self, StartRegister: ::UINT, pConstantData: *mut ::BOOL, BoolCount: ::UINT ) -> ::HRESULT, fn SetStreamSource( &mut self, StreamNumber: ::UINT, pStreamData: *mut IDirect3DVertexBuffer9, OffsetInBytes: ::UINT, Stride: ::UINT ) -> ::HRESULT, fn GetStreamSource( &mut self, StreamNumber: ::UINT, ppStreamData: *mut *mut IDirect3DVertexBuffer9, pOffsetInBytes: *mut ::UINT, pStride: *mut ::UINT ) -> ::HRESULT, fn SetStreamSourceFreq(&mut self, StreamNumber: ::UINT, Setting: ::UINT) -> ::HRESULT, fn GetStreamSourceFreq(&mut self, StreamNumber: ::UINT, pSetting: *mut ::UINT) -> ::HRESULT, fn SetIndices(&mut self, pIndexData: *mut IDirect3DIndexBuffer9) -> ::HRESULT, fn GetIndices(&mut self, ppIndexData: *mut *mut IDirect3DIndexBuffer9) -> ::HRESULT, fn CreatePixelShader( &mut self, pFunction: *const ::DWORD, ppShader: *mut *mut IDirect3DPixelShader9 ) -> ::HRESULT, fn SetPixelShader(&mut self, pShader: *mut IDirect3DPixelShader9) -> ::HRESULT, fn GetPixelShader(&mut self, ppShader: *mut *mut IDirect3DPixelShader9) -> ::HRESULT, fn SetPixelShaderConstantF( &mut self, StartRegister: ::UINT, pConstantData: *const ::FLOAT, Vector4fCount: ::UINT ) -> ::HRESULT, fn GetPixelShaderConstantF( &mut self, StartRegister: ::UINT, pConstantData: *mut ::FLOAT, Vector4fCount: ::UINT ) -> ::HRESULT, fn SetPixelShaderConstantI( &mut self, StartRegister: ::UINT, pConstantData: *const ::INT, Vector4iCount: ::UINT ) -> ::HRESULT, fn GetPixelShaderConstantI( &mut self, StartRegister: ::UINT, pConstantData: *mut ::INT, Vector4iCount: ::UINT ) -> ::HRESULT, fn SetPixelShaderConstantB( &mut self, StartRegister: ::UINT, pConstantData: *const ::BOOL, BoolCount: ::UINT ) -> ::HRESULT, fn GetPixelShaderConstantB( &mut self, StartRegister: ::UINT, pConstantData: *mut ::BOOL, BoolCount: ::UINT ) -> ::HRESULT, fn DrawRectPatch( &mut self, Handle: ::UINT, pNumSegs: *const ::FLOAT, pRectPatchInfo: *const ::D3DRECTPATCH_INFO ) -> ::HRESULT, fn DrawTriPatch( &mut self, Handle: ::UINT, pNumSegs: *const ::FLOAT, pTriPatchInfo: *const ::D3DTRIPATCH_INFO ) -> ::HRESULT, fn DeletePatch(&mut self, Handle: ::UINT) -> ::HRESULT, fn CreateQuery( &mut self, Type: ::D3DQUERYTYPE, ppQuery: *mut *mut IDirect3DQuery9 ) -> ::HRESULT } ); pub type LPDIRECT3DDEVICE9 = *mut IDirect3DDevice9; pub type PDIRECT3DDEVICE9 = *mut IDirect3DDevice9; RIDL!( interface IDirect3DStateBlock9(IDirect3DStateBlock9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT, fn Capture(&mut self) -> ::HRESULT, fn Apply(&mut self) -> ::HRESULT } ); pub type LPDIRECT3DSTATEBLOCK9 = *mut IDirect3DStateBlock9; pub type PDIRECT3DSTATEBLOCK9 = *mut IDirect3DStateBlock9; RIDL!( interface IDirect3DSwapChain9(IDirect3DSwapChain9Vtbl): IUnknown(IUnknownVtbl) { fn Present( &mut self, pSourceRect: *const ::RECT, pDestRect: *const ::RECT, hDestWindowOverride: ::HWND, pDirtyRegion: *const ::RGNDATA, dwFlags: ::DWORD ) -> ::HRESULT, fn GetFrontBufferData(&mut self, pDestSurface: *mut IDirect3DSurface9) -> ::HRESULT, fn GetBackBuffer( &mut self, iBackBuffer: ::UINT, Type: ::D3DBACKBUFFER_TYPE, ppBackBuffer: *mut *mut IDirect3DSurface9 ) -> ::HRESULT, fn GetRasterStatus(&mut self, pRasterStatus: *mut ::D3DRASTER_STATUS) -> ::HRESULT, fn GetDisplayMode(&mut self, pMode: *mut ::D3DDISPLAYMODE) -> ::HRESULT, fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT, fn GetPresentParameters( &mut self, pPresentationParameters: *mut ::D3DPRESENT_PARAMETERS ) -> ::HRESULT } ); pub type LPDIRECT3DSWAPCHAIN9 = *mut IDirect3DSwapChain9; pub type PDIRECT3DSWAPCHAIN9 = *mut IDirect3DSwapChain9; RIDL!( interface IDirect3DResource9(IDirect3DResource9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT, fn SetPrivateData( &mut self, refguid: *const ::GUID, pData: *const ::VOID, SizeOfData: ::DWORD, Flags: ::DWORD ) -> ::HRESULT, fn GetPrivateData( &mut self, refguid: *const ::GUID, pData: *mut ::VOID, pSizeOfData: *mut ::DWORD ) -> ::HRESULT, fn FreePrivateData(&mut self, refguid: *const ::GUID) -> ::HRESULT, fn SetPriority(&mut self, PriorityNew: ::DWORD) -> ::DWORD, fn GetPriority(&mut self) -> ::DWORD, fn PreLoad(&mut self) -> (), fn GetType(&mut self) -> ::D3DRESOURCETYPE } ); pub type LPDIRECT3DRESOURCE9 = *mut IDirect3DResource9; pub type PDIRECT3DRESOURCE9 = *mut IDirect3DResource9; RIDL!( interface IDirect3DVertexDeclaration9(IDirect3DVertexDeclaration9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT, fn GetDeclaration( &mut self, pElement: *mut ::D3DVERTEXELEMENT9, pNumElements: *mut ::UINT ) -> ::HRESULT } ); pub type LPDIRECT3DVERTEXDECLARATION9 = *mut IDirect3DVertexDeclaration9; pub type PDIRECT3DVERTEXDECLARATION9 = *mut IDirect3DVertexDeclaration9; RIDL!( interface IDirect3DVertexShader9(IDirect3DVertexShader9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT, fn GetFunction(&mut self, arg1: *mut ::VOID, pSizeOfData: *mut ::UINT) -> ::HRESULT } ); pub type LPDIRECT3DVERTEXSHADER9 = *mut IDirect3DVertexShader9; pub type PDIRECT3DVERTEXSHADER9 = *mut IDirect3DVertexShader9; RIDL!( interface IDirect3DPixelShader9(IDirect3DPixelShader9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT, fn GetFunction(&mut self, arg1: *mut ::VOID, pSizeOfData: *mut ::UINT) -> ::HRESULT } ); pub type LPDIRECT3DPIXELSHADER9 = *mut IDirect3DPixelShader9; pub type PDIRECT3DPIXELSHADER9 = *mut IDirect3DPixelShader9; RIDL!( interface IDirect3DBaseTexture9(IDirect3DBaseTexture9Vtbl): IDirect3DResource9(IDirect3DResource9Vtbl) { fn SetLOD(&mut self, LODNew: ::DWORD) -> ::DWORD, fn GetLOD(&mut self) -> ::DWORD, fn GetLevelCount(&mut self) -> ::DWORD, fn SetAutoGenFilterType(&mut self, FilterType: ::D3DTEXTUREFILTERTYPE) -> ::HRESULT, fn GetAutoGenFilterType(&mut self) -> ::D3DTEXTUREFILTERTYPE, fn GenerateMipSubLevels(&mut self) -> () } ); pub type LPDIRECT3DBASETEXTURE9 = *mut IDirect3DBaseTexture9; pub type PDIRECT3DBASETEXTURE9 = *mut IDirect3DBaseTexture9; RIDL!( interface IDirect3DTexture9(IDirect3DTexture9Vtbl): IDirect3DBaseTexture9(IDirect3DBaseTexture9Vtbl) { fn GetLevelDesc(&mut self, Level: ::UINT, pDesc: *mut ::D3DSURFACE_DESC) -> ::HRESULT, fn GetSurfaceLevel( &mut self, Level: ::UINT, ppSurfaceLevel: *mut *mut IDirect3DSurface9 ) -> ::HRESULT, fn LockRect( &mut self, Level: ::UINT, pLockedRect: *mut ::D3DLOCKED_RECT, pRect: *const ::RECT, Flags: ::DWORD ) -> ::HRESULT, fn UnlockRect(&mut self, Level: ::UINT) -> ::HRESULT, fn AddDirtyRect(&mut self, pDirtyRect: *const ::RECT) -> ::HRESULT } ); pub type LPDIRECT3DTEXTURE9 = *mut IDirect3DTexture9; pub type PDIRECT3DTEXTURE9 = *mut IDirect3DTexture9; RIDL!( interface IDirect3DVolumeTexture9(IDirect3DVolumeTexture9Vtbl): IDirect3DBaseTexture9(IDirect3DBaseTexture9Vtbl) { fn GetLevelDesc(&mut self, Level: ::UINT, pDesc: *mut ::D3DVOLUME_DESC) -> ::HRESULT, fn GetVolumeLevel( &mut self, Level: ::UINT, ppVolumeLevel: *mut *mut IDirect3DVolume9 ) -> ::HRESULT, fn LockBox( &mut self, Level: ::UINT, pLockedVolume: *mut ::D3DLOCKED_BOX, pBox: *const ::D3DBOX, Flags: ::DWORD ) -> ::HRESULT, fn UnlockBox(&mut self, Level: ::UINT) -> ::HRESULT, fn AddDirtyBox(&mut self, pDirtyBox: *const ::D3DBOX) -> ::HRESULT } ); pub type LPDIRECT3DVOLUMETEXTURE9 = *mut IDirect3DVolumeTexture9; pub type PDIRECT3DVOLUMETEXTURE9 = *mut IDirect3DVolumeTexture9; RIDL!( interface IDirect3DCubeTexture9(IDirect3DCubeTexture9Vtbl): IDirect3DBaseTexture9(IDirect3DBaseTexture9Vtbl) { fn GetLevelDesc(&mut self, Level: ::UINT, pDesc: *mut ::D3DSURFACE_DESC) -> ::HRESULT, fn GetCubeMapSurface( &mut self, FaceType: ::D3DCUBEMAP_FACES, Level: ::UINT, ppCubeMapSurface: *mut *mut IDirect3DSurface9 ) -> ::HRESULT, fn LockRect( &mut self, FaceType: ::D3DCUBEMAP_FACES, Level: ::UINT, pLockedRect: *mut ::D3DLOCKED_RECT, pRect: *const ::RECT, Flags: ::DWORD ) -> ::HRESULT, fn UnlockRect(&mut self, FaceType: ::D3DCUBEMAP_FACES, Level: ::UINT) -> ::HRESULT, fn AddDirtyRect( &mut self, FaceType: ::D3DCUBEMAP_FACES, pDirtyRect: *const ::RECT ) -> ::HRESULT } ); pub type LPDIRECT3DCUBETEXTURE9 = *mut IDirect3DCubeTexture9; pub type PDIRECT3DCUBETEXTURE9 = *mut IDirect3DCubeTexture9; RIDL!( interface IDirect3DVertexBuffer9(IDirect3DVertexBuffer9Vtbl): IDirect3DResource9(IDirect3DResource9Vtbl) { fn Lock( &mut self, OffsetToLock: ::UINT, SizeToLock: ::UINT, ppbData: *mut *mut ::VOID, Flags: ::DWORD ) -> ::HRESULT, fn Unlock(&mut self) -> ::HRESULT, fn GetDesc(&mut self, pDesc: *mut ::D3DVERTEXBUFFER_DESC) -> ::HRESULT } ); pub type LPDIRECT3DVERTEXBUFFER9 = *mut IDirect3DVertexBuffer9; pub type PDIRECT3DVERTEXBUFFER9 = *mut IDirect3DVertexBuffer9; RIDL!( interface IDirect3DIndexBuffer9(IDirect3DIndexBuffer9Vtbl): IDirect3DResource9(IDirect3DResource9Vtbl) { fn Lock( &mut self, OffsetToLock: ::UINT, SizeToLock: ::UINT, ppbData: *mut *mut ::VOID, Flags: ::DWORD ) -> ::HRESULT, fn Unlock(&mut self) -> ::HRESULT, fn GetDesc(&mut self, pDesc: *mut ::D3DINDEXBUFFER_DESC) -> ::HRESULT } ); pub type LPDIRECT3DINDEXBUFFER9 = *mut IDirect3DIndexBuffer9; pub type PDIRECT3DINDEXBUFFER9 = *mut IDirect3DIndexBuffer9; RIDL!( interface IDirect3DSurface9(IDirect3DSurface9Vtbl): IDirect3DResource9(IDirect3DResource9Vtbl) { fn GetContainer(&mut self, riid: *const ::IID, ppContainer: *mut *mut ::VOID) -> ::HRESULT, fn GetDesc(&mut self, pDesc: *mut ::D3DSURFACE_DESC) -> ::HRESULT, fn LockRect( &mut self, pLockedRect: *mut ::D3DLOCKED_RECT, pRect: *const ::RECT, Flags: ::DWORD ) -> ::HRESULT, fn UnlockRect(&mut self) -> ::HRESULT, fn GetDC(&mut self, phdc: *mut ::HDC) -> ::HRESULT, fn ReleaseDC(&mut self, hdc: ::HDC) -> ::HRESULT } ); pub type LPDIRECT3DSURFACE9 = *mut IDirect3DSurface9; pub type PDIRECT3DSURFACE9 = *mut IDirect3DSurface9; RIDL!( interface IDirect3DVolume9(IDirect3DVolume9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT, fn SetPrivateData( &mut self, refguid: *const ::GUID, pData: *const ::VOID, SizeOfData: ::DWORD, Flags: ::DWORD ) -> ::HRESULT, fn GetPrivateData( &mut self, refguid: *const ::GUID, pData: *mut ::VOID, pSizeOfData: *mut ::DWORD ) -> ::HRESULT, fn FreePrivateData(&mut self, refguid: *const ::GUID) -> ::HRESULT, fn GetContainer(&mut self, riid: *const ::IID, ppContainer: *mut *mut ::VOID) -> ::HRESULT, fn GetDesc(&mut self, pDesc: *mut ::D3DVOLUME_DESC) -> ::HRESULT, fn LockBox( &mut self, pLockedVolume: *mut ::D3DLOCKED_BOX, pBox: *const ::D3DBOX, Flags: ::DWORD ) -> ::HRESULT, fn UnlockBox(&mut self) -> ::HRESULT } ); pub type LPDIRECT3DVOLUME9 = *mut IDirect3DVolume9; pub type PDIRECT3DVOLUME9 = *mut IDirect3DVolume9; RIDL!( interface IDirect3DQuery9(IDirect3DQuery9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT, fn GetType(&mut self) -> ::D3DRESOURCETYPE, fn GetDataSize(&mut self) -> ::DWORD, fn Issue(&mut self, dwIssueFlags: ::DWORD) -> ::HRESULT, fn GetData( &mut self, pData: *mut ::VOID, dwSize: ::DWORD, dwGetDataFlags: ::DWORD ) -> ::HRESULT } ); pub type LPDIRECT3DQUERY9 = *mut IDirect3DQuery9; pub type PDIRECT3DQUERY9 = *mut IDirect3DQuery9; pub const D3DCREATE_FPU_PRESERVE: ::DWORD = 0x2; pub const D3DCREATE_MULTITHREADED: ::DWORD = 0x4; pub const D3DCREATE_PUREDEVICE: ::DWORD = 0x10; pub const D3DCREATE_SOFTWARE_VERTEXPROCESSING: ::DWORD = 0x20; pub const D3DCREATE_HARDWARE_VERTEXPROCESSING: ::DWORD = 0x40; pub const D3DCREATE_MIXED_VERTEXPROCESSING: ::DWORD = 0x80; pub const D3DCREATE_DISABLE_DRIVER_MANAGEMENT: ::DWORD = 0x100; pub const D3DCREATE_ADAPTERGROUP_DEVICE: ::DWORD = 0x200; pub const D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX: ::DWORD = 0x400; pub const D3DCREATE_NOWINDOWCHANGES: ::DWORD = 0x800; pub const D3DCREATE_DISABLE_PSGP_THREADING: ::DWORD = 0x2000; pub const D3DCREATE_ENABLE_PRESENTSTATS: ::DWORD = 0x4000; pub const D3DCREATE_DISABLE_PRESENTSTATS: ::DWORD = 0x8000; pub const D3DCREATE_SCREENSAVER: ::DWORD = 0x10000000; pub const D3DADAPTER_DEFAULT: ::DWORD = 0; RIDL!( interface IDirect3D9Ex(IDirect3D9ExVtbl): IDirect3D9(IDirect3D9Vtbl) { fn GetAdapterModeCountEx( &mut self, Adapter: ::UINT, pFilter: *const ::D3DDISPLAYMODEFILTER ) -> ::UINT, fn EnumAdapterModesEx( &mut self, Adapter: ::UINT, pFilter: *const ::D3DDISPLAYMODEFILTER, Mode: ::UINT, pMode: *mut ::D3DDISPLAYMODEEX ) -> ::HRESULT, fn GetAdapterDisplayModeEx( &mut self, Adapter: ::UINT, pMode: *mut ::D3DDISPLAYMODEEX, pRotation: *mut ::D3DDISPLAYROTATION ) -> ::HRESULT, fn CreateDeviceEx( &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, hFocusWindow: ::HWND, BehaviorFlags: ::DWORD, pPresentationParameters: *mut ::D3DPRESENT_PARAMETERS, pFullscreenDisplayMode: *mut ::D3DDISPLAYMODEEX, ppReturnedDeviceInterface: *mut *mut IDirect3DDevice9Ex ) -> ::HRESULT, fn GetAdapterLUID(&mut self, Adapter: ::UINT, pLUID: *mut ::LUID) -> ::HRESULT } ); pub type LPDIRECT3D9EX = *mut IDirect3D9Ex; pub type PDIRECT3D9EX = *mut IDirect3D9Ex; RIDL!( interface IDirect3DDevice9Ex(IDirect3DDevice9ExVtbl): IDirect3DDevice9(IDirect3DDevice9Vtbl) { fn SetConvolutionMonoKernel( &mut self, width: ::UINT, height: ::UINT, rows: *mut ::FLOAT, columns: *mut ::FLOAT ) -> ::HRESULT, fn ComposeRects( &mut self, pSrc: *mut IDirect3DSurface9, pDst: *mut IDirect3DSurface9, pSrcRectDescs: *mut IDirect3DVertexBuffer9, NumRects: ::UINT, pDstRectDescs: *mut IDirect3DVertexBuffer9, Operation: ::D3DCOMPOSERECTSOP, Xoffset: ::INT, Yoffset: ::INT ) -> ::HRESULT, fn PresentEx( &mut self, pSourceRect: *const ::RECT, pDestRect: *const ::RECT, hDestWindowOverride: ::HWND, pDirtyRegion: *const ::RGNDATA, dwFlags: ::DWORD ) -> ::HRESULT, fn GetGPUThreadPriority(&mut self, pPriority: *mut ::INT) -> ::HRESULT, fn SetGPUThreadPriority(&mut self, Priority: ::INT) -> ::HRESULT, fn WaitForVBlank(&mut self, iSwapChain: ::UINT) -> ::HRESULT, fn CheckResourceResidency( &mut self, pResourceArray: *mut *mut IDirect3DResource9, NumResources: ::UINT32 ) -> ::HRESULT, fn SetMaximumFrameLatency(&mut self, MaxLatency: ::UINT) -> ::HRESULT, fn GetMaximumFrameLatency(&mut self, pMaxLatency: *mut ::UINT) -> ::HRESULT, fn CheckDeviceState(&mut self, hDestinationWindow: ::HWND) -> ::HRESULT, fn CreateRenderTargetEx( &mut self, Width: ::UINT, Height: ::UINT, Format: ::D3DFORMAT, MultiSample: ::D3DMULTISAMPLE_TYPE, MultisampleQuality: ::DWORD, Lockable: ::BOOL, ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut ::HANDLE, Usage: ::DWORD ) -> ::HRESULT, fn CreateOffscreenPlainSurfaceEx( &mut self, Width: ::UINT, Height: ::UINT, Format: ::D3DFORMAT, Pool: ::D3DPOOL, ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut ::HANDLE, Usage: ::DWORD ) -> ::HRESULT, fn CreateDepthStencilSurfaceEx( &mut self, Width: ::UINT, Height: ::UINT, Format: ::D3DFORMAT, MultiSample: ::D3DMULTISAMPLE_TYPE, MultisampleQuality: ::DWORD, Discard: ::BOOL, ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut ::HANDLE, Usage: ::DWORD ) -> ::HRESULT, fn ResetEx( &mut self, pPresentationParameters: *mut ::D3DPRESENT_PARAMETERS, pFullscreenDisplayMode: *mut ::D3DDISPLAYMODEEX ) -> ::HRESULT, fn GetDisplayModeEx( &mut self, iSwapChain: ::UINT, pMode: *mut ::D3DDISPLAYMODEEX, pRotation: *mut ::D3DDISPLAYROTATION ) -> ::HRESULT } ); pub type LPDIRECT3DDEVICE9EX = *mut IDirect3DDevice9Ex; pub type PDIRECT3DDEVICE9EX = *mut IDirect3DDevice9Ex; RIDL!( interface IDirect3DSwapChain9Ex(IDirect3DSwapChain9ExVtbl): IDirect3DSwapChain9(IDirect3DSwapChain9Vtbl) { fn GetLastPresentCount(&mut self, pLastPresentCount: *mut ::UINT) -> ::HRESULT, fn GetPresentStats(&mut self, pPresentationStatistics: *mut ::D3DPRESENTSTATS) -> ::HRESULT, fn GetDisplayModeEx( &mut self, pMode: *mut ::D3DDISPLAYMODEEX, pRotation: *mut ::D3DDISPLAYROTATION ) -> ::HRESULT } ); pub type LPDIRECT3DSWAPCHAIN9EX = *mut IDirect3DSwapChain9Ex; pub type PDIRECT3DSWAPCHAIN9EX = *mut IDirect3DSwapChain9Ex; RIDL!( interface IDirect3D9ExOverlayExtension(IDirect3D9ExOverlayExtensionVtbl): IUnknown(IUnknownVtbl) { fn CheckDeviceOverlayType( &mut self, Adapter: ::UINT, DevType: ::D3DDEVTYPE, OverlayWidth: ::UINT, OverlayHeight: ::UINT, OverlayFormat: ::D3DFORMAT, pDisplayMode: *mut ::D3DDISPLAYMODEEX, DisplayRotation: ::D3DDISPLAYROTATION, pOverlayCaps: *mut ::D3DOVERLAYCAPS ) -> ::HRESULT } ); pub type LPDIRECT3D9EXOVERLAYEXTENSION = *mut IDirect3D9ExOverlayExtension; pub type PDIRECT3D9EXOVERLAYEXTENSION = *mut IDirect3D9ExOverlayExtension; RIDL!( interface IDirect3DDevice9Video(IDirect3DDevice9VideoVtbl): IUnknown(IUnknownVtbl) { fn GetContentProtectionCaps( &mut self, pCryptoType: *const ::GUID, pDecodeProfile: *const ::GUID, pCaps: *mut ::D3DCONTENTPROTECTIONCAPS ) -> ::HRESULT, fn CreateAuthenticatedChannel( &mut self, ChannelType: ::D3DAUTHENTICATEDCHANNELTYPE, ppAuthenticatedChannel: *mut *mut IDirect3DAuthenticatedChannel9, pChannelHandle: *mut ::HANDLE ) -> ::HRESULT, fn CreateCryptoSession( &mut self, pCryptoType: *const ::GUID, pDecodeProfile: *const ::GUID, ppCryptoSession: *mut *mut IDirect3DCryptoSession9, pCryptoHandle: *mut ::HANDLE ) -> ::HRESULT } ); pub type LPDIRECT3DDEVICE9VIDEO = *mut IDirect3DDevice9Video; pub type PDIRECT3DDEVICE9VIDEO = *mut IDirect3DDevice9Video; RIDL!( interface IDirect3DAuthenticatedChannel9(IDirect3DAuthenticatedChannel9Vtbl): IUnknown(IUnknownVtbl) { fn GetCertificateSize(&mut self, pCertificateSize: *mut ::UINT) -> ::HRESULT, fn GetCertificate(&mut self, CertifacteSize: ::UINT, ppCertificate: *mut ::BYTE) -> ::HRESULT, fn NegotiateKeyExchange(&mut self, DataSize: ::UINT, pData: *mut ::VOID) -> ::HRESULT, fn Query( &mut self, InputSize: ::UINT, pInput: *const ::VOID, OutputSize: ::UINT, pOutput: *mut ::VOID ) -> ::HRESULT, fn Configure( &mut self, InputSize: ::UINT, pInput: *const ::VOID, pOutput: *mut ::D3DAUTHENTICATEDCHANNEL_CONFIGURE_OUTPUT ) -> ::HRESULT } ); pub type LPDIRECT3DAUTHENTICATEDCHANNEL9 = *mut IDirect3DAuthenticatedChannel9; pub type PDIRECT3DAUTHENTICATEDCHANNEL9 = *mut IDirect3DAuthenticatedChannel9; RIDL!( interface IDirect3DCryptoSession9(IDirect3DCryptoSession9Vtbl): IUnknown(IUnknownVtbl) { fn GetCertificateSize(&mut self, pCertificateSize: *mut ::UINT) -> ::HRESULT, fn GetCertificate(&mut self, CertifacteSize: ::UINT, ppCertificate: *mut ::BYTE) -> ::HRESULT, fn NegotiateKeyExchange(&mut self, DataSize: ::UINT, pData: *mut ::VOID) -> ::HRESULT, fn EncryptionBlt( &mut self, pSrcSurface: *mut IDirect3DSurface9, pDstSurface: *mut IDirect3DSurface9, DstSurfaceSize: ::UINT, pIV: *mut ::VOID ) -> ::HRESULT, fn DecryptionBlt( &mut self, pSrcSurface: *mut IDirect3DSurface9, pDstSurface: *mut IDirect3DSurface9, SrcSurfaceSize: ::UINT, pEncryptedBlockInfo: *mut ::D3DENCRYPTED_BLOCK_INFO, pContentKey: *mut ::VOID, pIV: *mut ::VOID ) -> ::HRESULT, fn GetSurfacePitch( &mut self, pSrcSurface: *mut IDirect3DSurface9, pSurfacePitch: *mut ::UINT ) -> ::HRESULT, fn StartSessionKeyRefresh( &mut self, pRandomNumber: *mut ::VOID, RandomNumberSize: ::UINT ) -> ::HRESULT, fn FinishSessionKeyRefresh(&mut self) -> ::HRESULT, fn GetEncryptionBltKey(&mut self, pReadbackKey: *mut ::VOID, KeySize: ::UINT) -> ::HRESULT } ); pub type LPDIRECT3DCRYPTOSESSION9 = *mut IDirect3DCryptoSession9; pub type PDIRECT3DCRYPTOSESSION9 = *mut IDirect3DCryptoSession9;