// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. //! Direct3D include file use shared::basetsd::UINT32; use shared::d3d9caps::{D3DCAPS9, D3DCONTENTPROTECTIONCAPS, D3DOVERLAYCAPS}; use shared::d3d9types::{ D3DADAPTER_IDENTIFIER9, D3DAUTHENTICATEDCHANNELTYPE, D3DAUTHENTICATEDCHANNEL_CONFIGURE_OUTPUT, D3DBACKBUFFER_TYPE, D3DBOX, D3DCLIPSTATUS9, D3DCOLOR, D3DCOMPOSERECTSOP, D3DCUBEMAP_FACES, D3DDEVICE_CREATION_PARAMETERS, D3DDEVTYPE, D3DDISPLAYMODE, D3DDISPLAYMODEEX, D3DDISPLAYMODEFILTER, D3DDISPLAYROTATION, D3DENCRYPTED_BLOCK_INFO, D3DFORMAT, D3DGAMMARAMP, D3DINDEXBUFFER_DESC, D3DLIGHT9, D3DLOCKED_BOX, D3DLOCKED_RECT, D3DMATERIAL9, D3DMATRIX, D3DMULTISAMPLE_TYPE, D3DPOOL, D3DPRESENTSTATS, D3DPRESENT_PARAMETERS, D3DPRIMITIVETYPE, D3DQUERYTYPE, D3DRASTER_STATUS, D3DRECT, D3DRECTPATCH_INFO, D3DRENDERSTATETYPE, D3DRESOURCETYPE, D3DSAMPLERSTATETYPE, D3DSTATEBLOCKTYPE, D3DSURFACE_DESC, D3DTEXTUREFILTERTYPE, D3DTEXTURESTAGESTATETYPE, D3DTRANSFORMSTATETYPE, D3DTRIPATCH_INFO, D3DVERTEXBUFFER_DESC, D3DVERTEXELEMENT9, D3DVIEWPORT9, D3DVOLUME_DESC, }; use shared::guiddef::{GUID, IID}; use shared::minwindef::{BOOL, BYTE, DWORD, FLOAT, INT, UINT}; use shared::windef::{HDC, HMONITOR, HWND, POINT, RECT}; use um::unknwnbase::{IUnknown, IUnknownVtbl}; use um::wingdi::{PALETTEENTRY, RGNDATA}; use um::winnt::{HANDLE, HRESULT, LPCWSTR, LUID, VOID}; pub const D3D_SDK_VERSION: DWORD = 32; pub const D3D9b_SDK_VERSION: DWORD = 31; DEFINE_GUID!{IID_IDirect3D9, 0x81bdcbca, 0x64d4, 0x426d, 0xae, 0x8d, 0xad, 0x01, 0x47, 0xf4, 0x27, 0x5c} DEFINE_GUID!{IID_IDirect3DDevice9, 0xd0223b96, 0xbf7a, 0x43fd, 0x92, 0xbd, 0xa4, 0x3b, 0x0d, 0x82, 0xb9, 0xeb} DEFINE_GUID!{IID_IDirect3DResource9, 0x05eec05d, 0x8f7d, 0x4362, 0xb9, 0x99, 0xd1, 0xba, 0xf3, 0x57, 0xc7, 0x04} DEFINE_GUID!{IID_IDirect3DBaseTexture9, 0x580ca87e, 0x1d3c, 0x4d54, 0x99, 0x1d, 0xb7, 0xd3, 0xe3, 0xc2, 0x98, 0xce} DEFINE_GUID!{IID_IDirect3DTexture9, 0x85c31227, 0x3de5, 0x4f00, 0x9b, 0x3a, 0xf1, 0x1a, 0xc3, 0x8c, 0x18, 0xb5} DEFINE_GUID!{IID_IDirect3DCubeTexture9, 0xfff32f81, 0xd953, 0x473a, 0x92, 0x23, 0x93, 0xd6, 0x52, 0xab, 0xa9, 0x3f} DEFINE_GUID!{IID_IDirect3DVolumeTexture9, 0x2518526c, 0xe789, 0x4111, 0xa7, 0xb9, 0x47, 0xef, 0x32, 0x8d, 0x13, 0xe6} DEFINE_GUID!{IID_IDirect3DVertexBuffer9, 0xb64bb1b5, 0xfd70, 0x4df6, 0xbf, 0x91, 0x19, 0xd0, 0xa1, 0x24, 0x55, 0xe3} DEFINE_GUID!{IID_IDirect3DIndexBuffer9, 0x7c9dd65e, 0xd3f7, 0x4529, 0xac, 0xee, 0x78, 0x58, 0x30, 0xac, 0xde, 0x35} DEFINE_GUID!{IID_IDirect3DSurface9, 0x0cfbaf3a, 0x9ff6, 0x429a, 0x99, 0xb3, 0xa2, 0x79, 0x6a, 0xf8, 0xb8, 0x9b} DEFINE_GUID!{IID_IDirect3DVolume9, 0x24f416e6, 0x1f67, 0x4aa7, 0xb8, 0x8e, 0xd3, 0x3f, 0x6f, 0x31, 0x28, 0xa1} DEFINE_GUID!{IID_IDirect3DSwapChain9, 0x794950f2, 0xadfc, 0x458a, 0x90, 0x5e, 0x10, 0xa1, 0x0b, 0x0b, 0x50, 0x3b} DEFINE_GUID!{IID_IDirect3DVertexDeclaration9, 0xdd13c59c, 0x36fa, 0x4098, 0xa8, 0xfb, 0xc7, 0xed, 0x39, 0xdc, 0x85, 0x46} DEFINE_GUID!{IID_IDirect3DVertexShader9, 0xefc5557e, 0x6265, 0x4613, 0x8a, 0x94, 0x43, 0x85, 0x78, 0x89, 0xeb, 0x36} DEFINE_GUID!{IID_IDirect3DPixelShader9, 0x6d3bdbdc, 0x5b02, 0x4415, 0xb8, 0x52, 0xce, 0x5e, 0x8b, 0xcc, 0xb2, 0x89} DEFINE_GUID!{IID_IDirect3DStateBlock9, 0xb07c4fe5, 0x310d, 0x4ba8, 0xa2, 0x3c, 0x4f, 0x0f, 0x20, 0x6f, 0x21, 0x8b} DEFINE_GUID!{IID_IDirect3DQuery9, 0xd9771460, 0xa695, 0x4f26, 0xbb, 0xd3, 0x27, 0xb8, 0x40, 0xb5, 0x41, 0xcc} DEFINE_GUID!{IID_HelperName, 0xe4a36723, 0xfdfe, 0x4b22, 0xb1, 0x46, 0x3c, 0x04, 0xc0, 0x7f, 0x4c, 0xc8} DEFINE_GUID!{IID_IDirect3D9Ex, 0x02177241, 0x69fc, 0x400c, 0x8f, 0xf1, 0x93, 0xa4, 0x4d, 0xf6, 0x86, 0x1d} DEFINE_GUID!{IID_IDirect3DDevice9Ex, 0xb18b10ce, 0x2649, 0x405a, 0x87, 0x0f, 0x95, 0xf7, 0x77, 0xd4, 0x31, 0x3a} DEFINE_GUID!{IID_IDirect3DSwapChain9Ex, 0x91886caf, 0x1c3d, 0x4d2e, 0xa0, 0xab, 0x3e, 0x4c, 0x7d, 0x8d, 0x33, 0x03} DEFINE_GUID!{IID_IDirect3D9ExOverlayExtension, 0x187aeb13, 0xaaf5, 0x4c59, 0x87, 0x6d, 0xe0, 0x59, 0x08, 0x8c, 0x0d, 0xf8} DEFINE_GUID!{IID_IDirect3DDevice9Video, 0x26dc4561, 0xa1ee, 0x4ae7, 0x96, 0xda, 0x11, 0x8a, 0x36, 0xc0, 0xec, 0x95} DEFINE_GUID!{IID_IDirect3DAuthenticatedChannel9, 0xff24beee, 0xda21, 0x4beb, 0x98, 0xb5, 0xd2, 0xf8, 0x99, 0xf9, 0x8a, 0xf9} DEFINE_GUID!{IID_IDirect3DCryptoSession9, 0xfa0ab799, 0x7a9c, 0x48ca, 0x8c, 0x5b, 0x23, 0x7e, 0x71, 0xa5, 0x44, 0x34} extern "system" { pub fn Direct3DCreate9( SDKVersion: UINT, ) -> *mut IDirect3D9; pub fn D3DPERF_BeginEvent( col: D3DCOLOR, wszName: LPCWSTR, ) -> INT; pub fn D3DPERF_EndEvent() -> INT; pub fn D3DPERF_SetMarker( col: D3DCOLOR, wszName: LPCWSTR, ) -> (); pub fn D3DPERF_SetRegion( col: D3DCOLOR, wszName: LPCWSTR, ) -> (); pub fn D3DPERF_QueryRepeatFrame() -> BOOL; pub fn D3DPERF_SetOptions( dwOptions: DWORD, ) -> (); pub fn D3DPERF_GetStatus() -> DWORD; } RIDL!{#[uuid(0x81bdcbca, 0x64d4, 0x426d, 0xae, 0x8d, 0xad, 0x1, 0x47, 0xf4, 0x27, 0x5c)] interface IDirect3D9(IDirect3D9Vtbl): IUnknown(IUnknownVtbl) { fn RegisterSoftwareDevice( pInitializeFunction: *mut VOID, ) -> HRESULT, fn GetAdapterCount() -> UINT, fn GetAdapterIdentifier( Adapter: UINT, Flags: DWORD, pIdentifier: *mut D3DADAPTER_IDENTIFIER9, ) -> HRESULT, fn GetAdapterModeCount( Adapter: UINT, Format: D3DFORMAT, ) -> UINT, fn EnumAdapterModes( Adapter: UINT, Format: D3DFORMAT, Mode: UINT, pMode: *mut D3DDISPLAYMODE, ) -> HRESULT, fn GetAdapterDisplayMode( Adapter: UINT, pMode: *mut D3DDISPLAYMODE, ) -> HRESULT, fn CheckDeviceType( Adapter: UINT, DevType: D3DDEVTYPE, AdapterFormat: D3DFORMAT, BackBufferFormat: D3DFORMAT, bWindowed: BOOL, ) -> HRESULT, fn CheckDeviceFormat( Adapter: UINT, DeviceType: D3DDEVTYPE, AdapterFormat: D3DFORMAT, Usage: DWORD, RType: D3DRESOURCETYPE, CheckFormat: D3DFORMAT, ) -> HRESULT, fn CheckDeviceMultiSampleType( Adapter: UINT, DeviceType: D3DDEVTYPE, SurfaceFormat: D3DFORMAT, Windowed: BOOL, MultiSampleType: D3DMULTISAMPLE_TYPE, pQualityLevels: *mut DWORD, ) -> HRESULT, fn CheckDepthStencilMatch( Adapter: UINT, DeviceType: D3DDEVTYPE, AdapterFormat: D3DFORMAT, RenderTargetFormat: D3DFORMAT, DepthStencilFormat: D3DFORMAT, ) -> HRESULT, fn CheckDeviceFormatConversion( Adapter: UINT, DeviceType: D3DDEVTYPE, SourceFormat: D3DFORMAT, TargetFormat: D3DFORMAT, ) -> HRESULT, fn GetDeviceCaps( Adapter: UINT, DeviceType: D3DDEVTYPE, pCaps: *mut D3DCAPS9, ) -> HRESULT, fn GetAdapterMonitor( Adapter: UINT, ) -> HMONITOR, fn CreateDevice( 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!{#[uuid(0xd0223b96, 0xbf7a, 0x43fd, 0x92, 0xbd, 0xa4, 0x3b, 0xd, 0x82, 0xb9, 0xeb)] interface IDirect3DDevice9(IDirect3DDevice9Vtbl): IUnknown(IUnknownVtbl) { fn TestCooperativeLevel() -> HRESULT, fn GetAvailableTextureMem() -> UINT, fn EvictManagedResources() -> HRESULT, fn GetDirect3D( ppD3D9: *mut *mut IDirect3D9, ) -> HRESULT, fn GetDeviceCaps( pCaps: *mut D3DCAPS9, ) -> HRESULT, fn GetDisplayMode( iSwapChain: UINT, pMode: *mut D3DDISPLAYMODE, ) -> HRESULT, fn GetCreationParameters( pParameters: *mut D3DDEVICE_CREATION_PARAMETERS, ) -> HRESULT, fn SetCursorProperties( XHotSpot: UINT, YHotSpot: UINT, pCursorBitmap: *mut IDirect3DSurface9, ) -> HRESULT, fn SetCursorPosition( X: INT, Y: INT, Flags: DWORD, ) -> (), fn ShowCursor( bShow: BOOL, ) -> BOOL, fn CreateAdditionalSwapChain( pPresentationParameters: *mut D3DPRESENT_PARAMETERS, pSwapChain: *mut *mut IDirect3DSwapChain9, ) -> HRESULT, fn GetSwapChain( iSwapChain: UINT, pSwapChain: *mut *mut IDirect3DSwapChain9, ) -> HRESULT, fn GetNumberOfSwapChains() -> UINT, fn Reset( pPresentationParameters: *mut D3DPRESENT_PARAMETERS, ) -> HRESULT, fn Present( pSourceRect: *const RECT, pDestRect: *const RECT, hDestWindowOverride: HWND, pDirtyRegion: *const RGNDATA, ) -> HRESULT, fn GetBackBuffer( iSwapChain: UINT, iBackBuffer: UINT, Type: D3DBACKBUFFER_TYPE, ppBackBuffer: *mut *mut IDirect3DSurface9, ) -> HRESULT, fn GetRasterStatus( iSwapChain: UINT, pRasterStatus: *mut D3DRASTER_STATUS, ) -> HRESULT, fn SetDialogBoxMode( bEnableDialogs: BOOL, ) -> HRESULT, fn SetGammaRamp( iSwapChain: UINT, Flags: DWORD, pRamp: *const D3DGAMMARAMP, ) -> (), fn GetGammaRamp( iSwapChain: UINT, pRamp: *mut D3DGAMMARAMP, ) -> (), fn CreateTexture( Width: UINT, Height: UINT, Levels: UINT, Usage: DWORD, Format: D3DFORMAT, Pool: D3DPOOL, ppTexture: *mut *mut IDirect3DTexture9, pSharedHandle: *mut HANDLE, ) -> HRESULT, fn CreateVolumeTexture( Width: UINT, Height: UINT, Depth: UINT, Levels: UINT, Usage: DWORD, Format: D3DFORMAT, Pool: D3DPOOL, ppVolumeTexture: *mut *mut IDirect3DVolumeTexture9, pSharedHandle: *mut HANDLE, ) -> HRESULT, fn CreateCubeTexture( EdgeLength: UINT, Levels: UINT, Usage: DWORD, Format: D3DFORMAT, Pool: D3DPOOL, ppCubeTexture: *mut *mut IDirect3DCubeTexture9, pSharedHandle: *mut HANDLE, ) -> HRESULT, fn CreateVertexBuffer( Length: UINT, Usage: DWORD, FVF: DWORD, Pool: D3DPOOL, ppVertexBuffer: *mut *mut IDirect3DVertexBuffer9, pSharedHandle: *mut HANDLE, ) -> HRESULT, fn CreateIndexBuffer( Length: UINT, Usage: DWORD, Format: D3DFORMAT, Pool: D3DPOOL, ppIndexBuffer: *mut *mut IDirect3DIndexBuffer9, pSharedHandle: *mut HANDLE, ) -> HRESULT, fn CreateRenderTarget( Width: UINT, Height: UINT, Format: D3DFORMAT, MultiSample: D3DMULTISAMPLE_TYPE, MultisampleQuality: DWORD, Lockable: BOOL, ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut HANDLE, ) -> HRESULT, fn CreateDepthStencilSurface( Width: UINT, Height: UINT, Format: D3DFORMAT, MultiSample: D3DMULTISAMPLE_TYPE, MultisampleQuality: DWORD, Discard: BOOL, ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut HANDLE, ) -> HRESULT, fn UpdateSurface( pSourceSurface: *mut IDirect3DSurface9, pSourceRect: *const RECT, pDestinationSurface: *mut IDirect3DSurface9, pDestPoint: *const POINT, ) -> HRESULT, fn UpdateTexture( pSourceTexture: *mut IDirect3DBaseTexture9, pDestinationTexture: *mut IDirect3DBaseTexture9, ) -> HRESULT, fn GetRenderTargetData( pRenderTarget: *mut IDirect3DSurface9, pDestSurface: *mut IDirect3DSurface9, ) -> HRESULT, fn GetFrontBufferData( iSwapChain: UINT, pDestSurface: *mut IDirect3DSurface9, ) -> HRESULT, fn StretchRect( pSourceSurface: *mut IDirect3DSurface9, pSourceRect: *const RECT, pDestSurface: *mut IDirect3DSurface9, pDestRect: *const RECT, Filter: D3DTEXTUREFILTERTYPE, ) -> HRESULT, fn ColorFill( pSurface: *mut IDirect3DSurface9, pRect: *const RECT, color: D3DCOLOR, ) -> HRESULT, fn CreateOffscreenPlainSurface( Width: UINT, Height: UINT, Format: D3DFORMAT, Pool: D3DPOOL, ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut HANDLE, ) -> HRESULT, fn SetRenderTarget( RenderTargetIndex: DWORD, pRenderTarget: *mut IDirect3DSurface9, ) -> HRESULT, fn GetRenderTarget( RenderTargetIndex: DWORD, ppRenderTarget: *mut *mut IDirect3DSurface9, ) -> HRESULT, fn SetDepthStencilSurface( pNewZStencil: *mut IDirect3DSurface9, ) -> HRESULT, fn GetDepthStencilSurface( ppZStencilSurface: *mut *mut IDirect3DSurface9, ) -> HRESULT, fn BeginScene() -> HRESULT, fn EndScene() -> HRESULT, fn Clear( Count: DWORD, pRects: *const D3DRECT, Flags: DWORD, Color: D3DCOLOR, Z: FLOAT, Stencil: DWORD, ) -> HRESULT, fn SetTransform( State: D3DTRANSFORMSTATETYPE, pMatrix: *const D3DMATRIX, ) -> HRESULT, fn GetTransform( State: D3DTRANSFORMSTATETYPE, pMatrix: *mut D3DMATRIX, ) -> HRESULT, fn MultiplyTransform( arg1: D3DTRANSFORMSTATETYPE, arg2: *const D3DMATRIX, ) -> HRESULT, fn SetViewport( pViewport: *const D3DVIEWPORT9, ) -> HRESULT, fn GetViewport( pViewport: *mut D3DVIEWPORT9, ) -> HRESULT, fn SetMaterial( pMaterial: *const D3DMATERIAL9, ) -> HRESULT, fn GetMaterial( pMaterial: *mut D3DMATERIAL9, ) -> HRESULT, fn SetLight( Index: DWORD, arg1: *const D3DLIGHT9, ) -> HRESULT, fn GetLight( Index: DWORD, arg1: *mut D3DLIGHT9, ) -> HRESULT, fn LightEnable( Index: DWORD, Enable: BOOL, ) -> HRESULT, fn GetLightEnable( Index: DWORD, pEnable: *mut BOOL, ) -> HRESULT, fn SetClipPlane( Index: DWORD, pPlane: *const FLOAT, ) -> HRESULT, fn GetClipPlane( Index: DWORD, pPlane: *mut FLOAT, ) -> HRESULT, fn SetRenderState( State: D3DRENDERSTATETYPE, Value: DWORD, ) -> HRESULT, fn GetRenderState( State: D3DRENDERSTATETYPE, pValue: *mut DWORD, ) -> HRESULT, fn CreateStateBlock( Type: D3DSTATEBLOCKTYPE, ppSB: *mut *mut IDirect3DStateBlock9, ) -> HRESULT, fn BeginStateBlock() -> HRESULT, fn EndStateBlock( ppSB: *mut *mut IDirect3DStateBlock9, ) -> HRESULT, fn SetClipStatus( pClipStatus: *const D3DCLIPSTATUS9, ) -> HRESULT, fn GetClipStatus( pClipStatus: *mut D3DCLIPSTATUS9, ) -> HRESULT, fn GetTexture( Stage: DWORD, ppTexture: *mut *mut IDirect3DBaseTexture9, ) -> HRESULT, fn SetTexture( Stage: DWORD, pTexture: *mut IDirect3DBaseTexture9, ) -> HRESULT, fn GetTextureStageState( Stage: DWORD, Type: D3DTEXTURESTAGESTATETYPE, pValue: *mut DWORD, ) -> HRESULT, fn SetTextureStageState( Stage: DWORD, Type: D3DTEXTURESTAGESTATETYPE, Value: DWORD, ) -> HRESULT, fn GetSamplerState( Sampler: DWORD, Type: D3DSAMPLERSTATETYPE, pValue: *mut DWORD, ) -> HRESULT, fn SetSamplerState( Sampler: DWORD, Type: D3DSAMPLERSTATETYPE, Value: DWORD, ) -> HRESULT, fn ValidateDevice( pNumPasses: *mut DWORD, ) -> HRESULT, fn SetPaletteEntries( PaletteNumber: UINT, pEntries: *const PALETTEENTRY, ) -> HRESULT, fn GetPaletteEntries( PaletteNumber: UINT, pEntries: *mut PALETTEENTRY, ) -> HRESULT, fn SetCurrentTexturePalette( PaletteNumber: UINT, ) -> HRESULT, fn GetCurrentTexturePalette( PaletteNumber: *mut UINT, ) -> HRESULT, fn SetScissorRect( pRect: *const RECT, ) -> HRESULT, fn GetScissorRect( pRect: *mut RECT, ) -> HRESULT, fn SetSoftwareVertexProcessing( bSoftware: BOOL, ) -> HRESULT, fn GetSoftwareVertexProcessing() -> BOOL, fn SetNPatchMode( nSegments: FLOAT, ) -> HRESULT, fn GetNPatchMode() -> FLOAT, fn DrawPrimitive( PrimitiveType: D3DPRIMITIVETYPE, StartVertex: UINT, PrimitiveCount: UINT, ) -> HRESULT, fn DrawIndexedPrimitive( arg1: D3DPRIMITIVETYPE, BaseVertexIndex: INT, MinVertexIndex: UINT, NumVertices: UINT, startIndex: UINT, primCount: UINT, ) -> HRESULT, fn DrawPrimitiveUP( PrimitiveType: D3DPRIMITIVETYPE, PrimitiveCount: UINT, pVertexStreamZeroData: *const VOID, VertexStreamZeroStride: UINT, ) -> HRESULT, fn DrawIndexedPrimitiveUP( PrimitiveType: D3DPRIMITIVETYPE, MinVertexIndex: UINT, NumVertices: UINT, PrimitiveCount: UINT, pIndexData: *const VOID, IndexDataFormat: D3DFORMAT, pVertexStreamZeroData: *const VOID, VertexStreamZeroStride: UINT, ) -> HRESULT, fn ProcessVertices( SrcStartIndex: UINT, DestIndex: UINT, VertexCount: UINT, pDestBuffer: *mut IDirect3DVertexBuffer9, pVertexDecl: *mut IDirect3DVertexDeclaration9, Flags: DWORD, ) -> HRESULT, fn CreateVertexDeclaration( pVertexElements: *const D3DVERTEXELEMENT9, ppDecl: *mut *mut IDirect3DVertexDeclaration9, ) -> HRESULT, fn SetVertexDeclaration( pDecl: *mut IDirect3DVertexDeclaration9, ) -> HRESULT, fn GetVertexDeclaration( ppDecl: *mut *mut IDirect3DVertexDeclaration9, ) -> HRESULT, fn SetFVF( FVF: DWORD, ) -> HRESULT, fn GetFVF( pFVF: *mut DWORD, ) -> HRESULT, fn CreateVertexShader( pFunction: *const DWORD, ppShader: *mut *mut IDirect3DVertexShader9, ) -> HRESULT, fn SetVertexShader( pShader: *mut IDirect3DVertexShader9, ) -> HRESULT, fn GetVertexShader( ppShader: *mut *mut IDirect3DVertexShader9, ) -> HRESULT, fn SetVertexShaderConstantF( StartRegister: UINT, pConstantData: *const FLOAT, Vector4fCount: UINT, ) -> HRESULT, fn GetVertexShaderConstantF( StartRegister: UINT, pConstantData: *mut FLOAT, Vector4fCount: UINT, ) -> HRESULT, fn SetVertexShaderConstantI( StartRegister: UINT, pConstantData: *const INT, Vector4iCount: UINT, ) -> HRESULT, fn GetVertexShaderConstantI( StartRegister: UINT, pConstantData: *mut INT, Vector4iCount: UINT, ) -> HRESULT, fn SetVertexShaderConstantB( StartRegister: UINT, pConstantData: *const BOOL, BoolCount: UINT, ) -> HRESULT, fn GetVertexShaderConstantB( StartRegister: UINT, pConstantData: *mut BOOL, BoolCount: UINT, ) -> HRESULT, fn SetStreamSource( StreamNumber: UINT, pStreamData: *mut IDirect3DVertexBuffer9, OffsetInBytes: UINT, Stride: UINT, ) -> HRESULT, fn GetStreamSource( StreamNumber: UINT, ppStreamData: *mut *mut IDirect3DVertexBuffer9, pOffsetInBytes: *mut UINT, pStride: *mut UINT, ) -> HRESULT, fn SetStreamSourceFreq( StreamNumber: UINT, Setting: UINT, ) -> HRESULT, fn GetStreamSourceFreq( StreamNumber: UINT, pSetting: *mut UINT, ) -> HRESULT, fn SetIndices( pIndexData: *mut IDirect3DIndexBuffer9, ) -> HRESULT, fn GetIndices( ppIndexData: *mut *mut IDirect3DIndexBuffer9, ) -> HRESULT, fn CreatePixelShader( pFunction: *const DWORD, ppShader: *mut *mut IDirect3DPixelShader9, ) -> HRESULT, fn SetPixelShader( pShader: *mut IDirect3DPixelShader9, ) -> HRESULT, fn GetPixelShader( ppShader: *mut *mut IDirect3DPixelShader9, ) -> HRESULT, fn SetPixelShaderConstantF( StartRegister: UINT, pConstantData: *const FLOAT, Vector4fCount: UINT, ) -> HRESULT, fn GetPixelShaderConstantF( StartRegister: UINT, pConstantData: *mut FLOAT, Vector4fCount: UINT, ) -> HRESULT, fn SetPixelShaderConstantI( StartRegister: UINT, pConstantData: *const INT, Vector4iCount: UINT, ) -> HRESULT, fn GetPixelShaderConstantI( StartRegister: UINT, pConstantData: *mut INT, Vector4iCount: UINT, ) -> HRESULT, fn SetPixelShaderConstantB( StartRegister: UINT, pConstantData: *const BOOL, BoolCount: UINT, ) -> HRESULT, fn GetPixelShaderConstantB( StartRegister: UINT, pConstantData: *mut BOOL, BoolCount: UINT, ) -> HRESULT, fn DrawRectPatch( Handle: UINT, pNumSegs: *const FLOAT, pRectPatchInfo: *const D3DRECTPATCH_INFO, ) -> HRESULT, fn DrawTriPatch( Handle: UINT, pNumSegs: *const FLOAT, pTriPatchInfo: *const D3DTRIPATCH_INFO, ) -> HRESULT, fn DeletePatch( Handle: UINT, ) -> HRESULT, fn CreateQuery( Type: D3DQUERYTYPE, ppQuery: *mut *mut IDirect3DQuery9, ) -> HRESULT, }} pub type LPDIRECT3DDEVICE9 = *mut IDirect3DDevice9; pub type PDIRECT3DDEVICE9 = *mut IDirect3DDevice9; RIDL!{#[uuid(0xb07c4fe5, 0x310d, 0x4ba8, 0xa2, 0x3c, 0x4f, 0xf, 0x20, 0x6f, 0x21, 0x8b)] interface IDirect3DStateBlock9(IDirect3DStateBlock9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice( ppDevice: *mut *mut IDirect3DDevice9, ) -> HRESULT, fn Capture() -> HRESULT, fn Apply() -> HRESULT, }} pub type LPDIRECT3DSTATEBLOCK9 = *mut IDirect3DStateBlock9; pub type PDIRECT3DSTATEBLOCK9 = *mut IDirect3DStateBlock9; RIDL!{#[uuid(0x794950f2, 0xadfc, 0x458a, 0x90, 0x5e, 0x10, 0xa1, 0xb, 0xb, 0x50, 0x3b)] interface IDirect3DSwapChain9(IDirect3DSwapChain9Vtbl): IUnknown(IUnknownVtbl) { fn Present( pSourceRect: *const RECT, pDestRect: *const RECT, hDestWindowOverride: HWND, pDirtyRegion: *const RGNDATA, dwFlags: DWORD, ) -> HRESULT, fn GetFrontBufferData( pDestSurface: *mut IDirect3DSurface9, ) -> HRESULT, fn GetBackBuffer( iBackBuffer: UINT, Type: D3DBACKBUFFER_TYPE, ppBackBuffer: *mut *mut IDirect3DSurface9, ) -> HRESULT, fn GetRasterStatus( pRasterStatus: *mut D3DRASTER_STATUS, ) -> HRESULT, fn GetDisplayMode( pMode: *mut D3DDISPLAYMODE, ) -> HRESULT, fn GetDevice( ppDevice: *mut *mut IDirect3DDevice9, ) -> HRESULT, fn GetPresentParameters( pPresentationParameters: *mut D3DPRESENT_PARAMETERS, ) -> HRESULT, }} pub type LPDIRECT3DSWAPCHAIN9 = *mut IDirect3DSwapChain9; pub type PDIRECT3DSWAPCHAIN9 = *mut IDirect3DSwapChain9; RIDL!{#[uuid(0x5eec05d, 0x8f7d, 0x4362, 0xb9, 0x99, 0xd1, 0xba, 0xf3, 0x57, 0xc7, 0x4)] interface IDirect3DResource9(IDirect3DResource9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice( ppDevice: *mut *mut IDirect3DDevice9, ) -> HRESULT, fn SetPrivateData( refguid: *const GUID, pData: *const VOID, SizeOfData: DWORD, Flags: DWORD, ) -> HRESULT, fn GetPrivateData( refguid: *const GUID, pData: *mut VOID, pSizeOfData: *mut DWORD, ) -> HRESULT, fn FreePrivateData( refguid: *const GUID, ) -> HRESULT, fn SetPriority( PriorityNew: DWORD, ) -> DWORD, fn GetPriority() -> DWORD, fn PreLoad() -> (), fn GetType() -> D3DRESOURCETYPE, }} pub type LPDIRECT3DRESOURCE9 = *mut IDirect3DResource9; pub type PDIRECT3DRESOURCE9 = *mut IDirect3DResource9; RIDL!{#[uuid(0xdd13c59c, 0x36fa, 0x4098, 0xa8, 0xfb, 0xc7, 0xed, 0x39, 0xdc, 0x85, 0x46)] interface IDirect3DVertexDeclaration9(IDirect3DVertexDeclaration9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice( ppDevice: *mut *mut IDirect3DDevice9, ) -> HRESULT, fn GetDeclaration( pElement: *mut D3DVERTEXELEMENT9, pNumElements: *mut UINT, ) -> HRESULT, }} pub type LPDIRECT3DVERTEXDECLARATION9 = *mut IDirect3DVertexDeclaration9; pub type PDIRECT3DVERTEXDECLARATION9 = *mut IDirect3DVertexDeclaration9; RIDL!{#[uuid(0xefc5557e, 0x6265, 0x4613, 0x8a, 0x94, 0x43, 0x85, 0x78, 0x89, 0xeb, 0x36)] interface IDirect3DVertexShader9(IDirect3DVertexShader9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice( ppDevice: *mut *mut IDirect3DDevice9, ) -> HRESULT, fn GetFunction( arg1: *mut VOID, pSizeOfData: *mut UINT, ) -> HRESULT, }} pub type LPDIRECT3DVERTEXSHADER9 = *mut IDirect3DVertexShader9; pub type PDIRECT3DVERTEXSHADER9 = *mut IDirect3DVertexShader9; RIDL!{#[uuid(0x6d3bdbdc, 0x5b02, 0x4415, 0xb8, 0x52, 0xce, 0x5e, 0x8b, 0xcc, 0xb2, 0x89)] interface IDirect3DPixelShader9(IDirect3DPixelShader9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice( ppDevice: *mut *mut IDirect3DDevice9, ) -> HRESULT, fn GetFunction( arg1: *mut VOID, pSizeOfData: *mut UINT, ) -> HRESULT, }} pub type LPDIRECT3DPIXELSHADER9 = *mut IDirect3DPixelShader9; pub type PDIRECT3DPIXELSHADER9 = *mut IDirect3DPixelShader9; RIDL!{#[uuid(0x580ca87e, 0x1d3c, 0x4d54, 0x99, 0x1d, 0xb7, 0xd3, 0xe3, 0xc2, 0x98, 0xce)] interface IDirect3DBaseTexture9(IDirect3DBaseTexture9Vtbl): IDirect3DResource9(IDirect3DResource9Vtbl) { fn SetLOD( LODNew: DWORD, ) -> DWORD, fn GetLOD() -> DWORD, fn GetLevelCount() -> DWORD, fn SetAutoGenFilterType( FilterType: D3DTEXTUREFILTERTYPE, ) -> HRESULT, fn GetAutoGenFilterType() -> D3DTEXTUREFILTERTYPE, fn GenerateMipSubLevels() -> (), }} pub type LPDIRECT3DBASETEXTURE9 = *mut IDirect3DBaseTexture9; pub type PDIRECT3DBASETEXTURE9 = *mut IDirect3DBaseTexture9; RIDL!{#[uuid(0x85c31227, 0x3de5, 0x4f00, 0x9b, 0x3a, 0xf1, 0x1a, 0xc3, 0x8c, 0x18, 0xb5)] interface IDirect3DTexture9(IDirect3DTexture9Vtbl): IDirect3DBaseTexture9(IDirect3DBaseTexture9Vtbl) { fn GetLevelDesc( Level: UINT, pDesc: *mut D3DSURFACE_DESC, ) -> HRESULT, fn GetSurfaceLevel( Level: UINT, ppSurfaceLevel: *mut *mut IDirect3DSurface9, ) -> HRESULT, fn LockRect( Level: UINT, pLockedRect: *mut D3DLOCKED_RECT, pRect: *const RECT, Flags: DWORD, ) -> HRESULT, fn UnlockRect( Level: UINT, ) -> HRESULT, fn AddDirtyRect( pDirtyRect: *const RECT, ) -> HRESULT, }} pub type LPDIRECT3DTEXTURE9 = *mut IDirect3DTexture9; pub type PDIRECT3DTEXTURE9 = *mut IDirect3DTexture9; RIDL!{#[uuid(0x2518526c, 0xe789, 0x4111, 0xa7, 0xb9, 0x47, 0xef, 0x32, 0x8d, 0x13, 0xe6)] interface IDirect3DVolumeTexture9(IDirect3DVolumeTexture9Vtbl): IDirect3DBaseTexture9(IDirect3DBaseTexture9Vtbl) { fn GetLevelDesc( Level: UINT, pDesc: *mut D3DVOLUME_DESC, ) -> HRESULT, fn GetVolumeLevel( Level: UINT, ppVolumeLevel: *mut *mut IDirect3DVolume9, ) -> HRESULT, fn LockBox( Level: UINT, pLockedVolume: *mut D3DLOCKED_BOX, pBox: *const D3DBOX, Flags: DWORD, ) -> HRESULT, fn UnlockBox( Level: UINT, ) -> HRESULT, fn AddDirtyBox( pDirtyBox: *const D3DBOX, ) -> HRESULT, }} pub type LPDIRECT3DVOLUMETEXTURE9 = *mut IDirect3DVolumeTexture9; pub type PDIRECT3DVOLUMETEXTURE9 = *mut IDirect3DVolumeTexture9; RIDL!{#[uuid(0xfff32f81, 0xd953, 0x473a, 0x92, 0x23, 0x93, 0xd6, 0x52, 0xab, 0xa9, 0x3f)] interface IDirect3DCubeTexture9(IDirect3DCubeTexture9Vtbl): IDirect3DBaseTexture9(IDirect3DBaseTexture9Vtbl) { fn GetLevelDesc( Level: UINT, pDesc: *mut D3DSURFACE_DESC, ) -> HRESULT, fn GetCubeMapSurface( FaceType: D3DCUBEMAP_FACES, Level: UINT, ppCubeMapSurface: *mut *mut IDirect3DSurface9, ) -> HRESULT, fn LockRect( FaceType: D3DCUBEMAP_FACES, Level: UINT, pLockedRect: *mut D3DLOCKED_RECT, pRect: *const RECT, Flags: DWORD, ) -> HRESULT, fn UnlockRect( FaceType: D3DCUBEMAP_FACES, Level: UINT, ) -> HRESULT, fn AddDirtyRect( FaceType: D3DCUBEMAP_FACES, pDirtyRect: *const RECT, ) -> HRESULT, }} pub type LPDIRECT3DCUBETEXTURE9 = *mut IDirect3DCubeTexture9; pub type PDIRECT3DCUBETEXTURE9 = *mut IDirect3DCubeTexture9; RIDL!{#[uuid(0xb64bb1b5, 0xfd70, 0x4df6, 0xbf, 0x91, 0x19, 0xd0, 0xa1, 0x24, 0x55, 0xe3)] interface IDirect3DVertexBuffer9(IDirect3DVertexBuffer9Vtbl): IDirect3DResource9(IDirect3DResource9Vtbl) { fn Lock( OffsetToLock: UINT, SizeToLock: UINT, ppbData: *mut *mut VOID, Flags: DWORD, ) -> HRESULT, fn Unlock() -> HRESULT, fn GetDesc( pDesc: *mut D3DVERTEXBUFFER_DESC, ) -> HRESULT, }} pub type LPDIRECT3DVERTEXBUFFER9 = *mut IDirect3DVertexBuffer9; pub type PDIRECT3DVERTEXBUFFER9 = *mut IDirect3DVertexBuffer9; RIDL!{#[uuid(0x7c9dd65e, 0xd3f7, 0x4529, 0xac, 0xee, 0x78, 0x58, 0x30, 0xac, 0xde, 0x35)] interface IDirect3DIndexBuffer9(IDirect3DIndexBuffer9Vtbl): IDirect3DResource9(IDirect3DResource9Vtbl) { fn Lock( OffsetToLock: UINT, SizeToLock: UINT, ppbData: *mut *mut VOID, Flags: DWORD, ) -> HRESULT, fn Unlock() -> HRESULT, fn GetDesc( pDesc: *mut D3DINDEXBUFFER_DESC, ) -> HRESULT, }} pub type LPDIRECT3DINDEXBUFFER9 = *mut IDirect3DIndexBuffer9; pub type PDIRECT3DINDEXBUFFER9 = *mut IDirect3DIndexBuffer9; RIDL!{#[uuid(0xcfbaf3a, 0x9ff6, 0x429a, 0x99, 0xb3, 0xa2, 0x79, 0x6a, 0xf8, 0xb8, 0x9b)] interface IDirect3DSurface9(IDirect3DSurface9Vtbl): IDirect3DResource9(IDirect3DResource9Vtbl) { fn GetContainer( riid: *const IID, ppContainer: *mut *mut VOID, ) -> HRESULT, fn GetDesc( pDesc: *mut D3DSURFACE_DESC, ) -> HRESULT, fn LockRect( pLockedRect: *mut D3DLOCKED_RECT, pRect: *const RECT, Flags: DWORD, ) -> HRESULT, fn UnlockRect() -> HRESULT, fn GetDC( phdc: *mut HDC, ) -> HRESULT, fn ReleaseDC( hdc: HDC, ) -> HRESULT, }} pub type LPDIRECT3DSURFACE9 = *mut IDirect3DSurface9; pub type PDIRECT3DSURFACE9 = *mut IDirect3DSurface9; RIDL!{#[uuid(0x24f416e6, 0x1f67, 0x4aa7, 0xb8, 0x8e, 0xd3, 0x3f, 0x6f, 0x31, 0x28, 0xa1)] interface IDirect3DVolume9(IDirect3DVolume9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice( ppDevice: *mut *mut IDirect3DDevice9, ) -> HRESULT, fn SetPrivateData( refguid: *const GUID, pData: *const VOID, SizeOfData: DWORD, Flags: DWORD, ) -> HRESULT, fn GetPrivateData( refguid: *const GUID, pData: *mut VOID, pSizeOfData: *mut DWORD, ) -> HRESULT, fn FreePrivateData( refguid: *const GUID, ) -> HRESULT, fn GetContainer( riid: *const IID, ppContainer: *mut *mut VOID, ) -> HRESULT, fn GetDesc( pDesc: *mut D3DVOLUME_DESC, ) -> HRESULT, fn LockBox( pLockedVolume: *mut D3DLOCKED_BOX, pBox: *const D3DBOX, Flags: DWORD, ) -> HRESULT, fn UnlockBox() -> HRESULT, }} pub type LPDIRECT3DVOLUME9 = *mut IDirect3DVolume9; pub type PDIRECT3DVOLUME9 = *mut IDirect3DVolume9; RIDL!{#[uuid(0xd9771460, 0xa695, 0x4f26, 0xbb, 0xd3, 0x27, 0xb8, 0x40, 0xb5, 0x41, 0xcc)] interface IDirect3DQuery9(IDirect3DQuery9Vtbl): IUnknown(IUnknownVtbl) { fn GetDevice( ppDevice: *mut *mut IDirect3DDevice9, ) -> HRESULT, fn GetType() -> D3DRESOURCETYPE, fn GetDataSize() -> DWORD, fn Issue( dwIssueFlags: DWORD, ) -> HRESULT, fn GetData( 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; extern "system" { pub fn Direct3DCreate9Ex( SDKVersion: UINT, arg1: *mut *mut IDirect3D9Ex, ) -> HRESULT; } RIDL!{#[uuid(0x02177241, 0x69fc, 0x400c, 0x8f, 0xf1, 0x93, 0xa4, 0x4d, 0xf6, 0x86, 0x1d)] interface IDirect3D9Ex(IDirect3D9ExVtbl): IDirect3D9(IDirect3D9Vtbl) { fn GetAdapterModeCountEx( Adapter: UINT, pFilter: *const D3DDISPLAYMODEFILTER, ) -> UINT, fn EnumAdapterModesEx( Adapter: UINT, pFilter: *const D3DDISPLAYMODEFILTER, Mode: UINT, pMode: *mut D3DDISPLAYMODEEX, ) -> HRESULT, fn GetAdapterDisplayModeEx( Adapter: UINT, pMode: *mut D3DDISPLAYMODEEX, pRotation: *mut D3DDISPLAYROTATION, ) -> HRESULT, fn CreateDeviceEx( Adapter: UINT, DeviceType: D3DDEVTYPE, hFocusWindow: HWND, BehaviorFlags: DWORD, pPresentationParameters: *mut D3DPRESENT_PARAMETERS, pFullscreenDisplayMode: *mut D3DDISPLAYMODEEX, ppReturnedDeviceInterface: *mut *mut IDirect3DDevice9Ex, ) -> HRESULT, fn GetAdapterLUID( Adapter: UINT, pLUID: *mut LUID, ) -> HRESULT, }} pub type LPDIRECT3D9EX = *mut IDirect3D9Ex; pub type PDIRECT3D9EX = *mut IDirect3D9Ex; RIDL!{#[uuid(0xb18b10ce, 0x2649, 0x405a, 0x87, 0xf, 0x95, 0xf7, 0x77, 0xd4, 0x31, 0x3a)] interface IDirect3DDevice9Ex(IDirect3DDevice9ExVtbl): IDirect3DDevice9(IDirect3DDevice9Vtbl) { fn SetConvolutionMonoKernel( width: UINT, height: UINT, rows: *mut FLOAT, columns: *mut FLOAT, ) -> HRESULT, fn ComposeRects( pSrc: *mut IDirect3DSurface9, pDst: *mut IDirect3DSurface9, pSrcRectDescs: *mut IDirect3DVertexBuffer9, NumRects: UINT, pDstRectDescs: *mut IDirect3DVertexBuffer9, Operation: D3DCOMPOSERECTSOP, Xoffset: INT, Yoffset: INT, ) -> HRESULT, fn PresentEx( pSourceRect: *const RECT, pDestRect: *const RECT, hDestWindowOverride: HWND, pDirtyRegion: *const RGNDATA, dwFlags: DWORD, ) -> HRESULT, fn GetGPUThreadPriority( pPriority: *mut INT, ) -> HRESULT, fn SetGPUThreadPriority( Priority: INT, ) -> HRESULT, fn WaitForVBlank( iSwapChain: UINT, ) -> HRESULT, fn CheckResourceResidency( pResourceArray: *mut *mut IDirect3DResource9, NumResources: UINT32, ) -> HRESULT, fn SetMaximumFrameLatency( MaxLatency: UINT, ) -> HRESULT, fn GetMaximumFrameLatency( pMaxLatency: *mut UINT, ) -> HRESULT, fn CheckDeviceState( hDestinationWindow: HWND, ) -> HRESULT, fn CreateRenderTargetEx( 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( Width: UINT, Height: UINT, Format: D3DFORMAT, Pool: D3DPOOL, ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut HANDLE, Usage: DWORD, ) -> HRESULT, fn CreateDepthStencilSurfaceEx( 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( pPresentationParameters: *mut D3DPRESENT_PARAMETERS, pFullscreenDisplayMode: *mut D3DDISPLAYMODEEX, ) -> HRESULT, fn GetDisplayModeEx( iSwapChain: UINT, pMode: *mut D3DDISPLAYMODEEX, pRotation: *mut D3DDISPLAYROTATION, ) -> HRESULT, }} pub type LPDIRECT3DDEVICE9EX = *mut IDirect3DDevice9Ex; pub type PDIRECT3DDEVICE9EX = *mut IDirect3DDevice9Ex; RIDL!{#[uuid(0x91886caf, 0x1c3d, 0x4d2e, 0xa0, 0xab, 0x3e, 0x4c, 0x7d, 0x8d, 0x33, 0x3)] interface IDirect3DSwapChain9Ex(IDirect3DSwapChain9ExVtbl): IDirect3DSwapChain9(IDirect3DSwapChain9Vtbl) { fn GetLastPresentCount( pLastPresentCount: *mut UINT, ) -> HRESULT, fn GetPresentStats( pPresentationStatistics: *mut D3DPRESENTSTATS, ) -> HRESULT, fn GetDisplayModeEx( pMode: *mut D3DDISPLAYMODEEX, pRotation: *mut D3DDISPLAYROTATION, ) -> HRESULT, }} pub type LPDIRECT3DSWAPCHAIN9EX = *mut IDirect3DSwapChain9Ex; pub type PDIRECT3DSWAPCHAIN9EX = *mut IDirect3DSwapChain9Ex; RIDL!{#[uuid(0x187aeb13, 0xaaf5, 0x4c59, 0x87, 0x6d, 0xe0, 0x59, 0x8, 0x8c, 0xd, 0xf8)] interface IDirect3D9ExOverlayExtension(IDirect3D9ExOverlayExtensionVtbl): IUnknown(IUnknownVtbl) { fn CheckDeviceOverlayType( 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!{#[uuid(0x26dc4561, 0xa1ee, 0x4ae7, 0x96, 0xda, 0x11, 0x8a, 0x36, 0xc0, 0xec, 0x95)] interface IDirect3DDevice9Video(IDirect3DDevice9VideoVtbl): IUnknown(IUnknownVtbl) { fn GetContentProtectionCaps( pCryptoType: *const GUID, pDecodeProfile: *const GUID, pCaps: *mut D3DCONTENTPROTECTIONCAPS, ) -> HRESULT, fn CreateAuthenticatedChannel( ChannelType: D3DAUTHENTICATEDCHANNELTYPE, ppAuthenticatedChannel: *mut *mut IDirect3DAuthenticatedChannel9, pChannelHandle: *mut HANDLE, ) -> HRESULT, fn CreateCryptoSession( 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!{#[uuid(0xff24beee, 0xda21, 0x4beb, 0x98, 0xb5, 0xd2, 0xf8, 0x99, 0xf9, 0x8a, 0xf9)] interface IDirect3DAuthenticatedChannel9(IDirect3DAuthenticatedChannel9Vtbl): IUnknown(IUnknownVtbl) { fn GetCertificateSize( pCertificateSize: *mut UINT, ) -> HRESULT, fn GetCertificate( CertifacteSize: UINT, ppCertificate: *mut BYTE, ) -> HRESULT, fn NegotiateKeyExchange( DataSize: UINT, pData: *mut VOID, ) -> HRESULT, fn Query( InputSize: UINT, pInput: *const VOID, OutputSize: UINT, pOutput: *mut VOID, ) -> HRESULT, fn Configure( InputSize: UINT, pInput: *const VOID, pOutput: *mut D3DAUTHENTICATEDCHANNEL_CONFIGURE_OUTPUT, ) -> HRESULT, }} pub type LPDIRECT3DAUTHENTICATEDCHANNEL9 = *mut IDirect3DAuthenticatedChannel9; pub type PDIRECT3DAUTHENTICATEDCHANNEL9 = *mut IDirect3DAuthenticatedChannel9; RIDL!{#[uuid(0xfa0ab799, 0x7a9c, 0x48ca, 0x8c, 0x5b, 0x23, 0x7e, 0x71, 0xa5, 0x44, 0x34)] interface IDirect3DCryptoSession9(IDirect3DCryptoSession9Vtbl): IUnknown(IUnknownVtbl) { fn GetCertificateSize( pCertificateSize: *mut UINT, ) -> HRESULT, fn GetCertificate( CertifacteSize: UINT, ppCertificate: *mut BYTE, ) -> HRESULT, fn NegotiateKeyExchange( DataSize: UINT, pData: *mut VOID, ) -> HRESULT, fn EncryptionBlt( pSrcSurface: *mut IDirect3DSurface9, pDstSurface: *mut IDirect3DSurface9, DstSurfaceSize: UINT, pIV: *mut VOID, ) -> HRESULT, fn DecryptionBlt( pSrcSurface: *mut IDirect3DSurface9, pDstSurface: *mut IDirect3DSurface9, SrcSurfaceSize: UINT, pEncryptedBlockInfo: *mut D3DENCRYPTED_BLOCK_INFO, pContentKey: *mut VOID, pIV: *mut VOID, ) -> HRESULT, fn GetSurfacePitch( pSrcSurface: *mut IDirect3DSurface9, pSurfacePitch: *mut UINT, ) -> HRESULT, fn StartSessionKeyRefresh( pRandomNumber: *mut VOID, RandomNumberSize: UINT, ) -> HRESULT, fn FinishSessionKeyRefresh() -> HRESULT, fn GetEncryptionBltKey( pReadbackKey: *mut VOID, KeySize: UINT, ) -> HRESULT, }} pub type LPDIRECT3DCRYPTOSESSION9 = *mut IDirect3DCryptoSession9; pub type PDIRECT3DCRYPTOSESSION9 = *mut IDirect3DCryptoSession9;