// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0 > or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT >, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
use ctypes::c_void;
use shared::basetsd::{UINT64, UINT8};
use shared::dxgiformat::DXGI_FORMAT;
use shared::dxgitype::{DXGI_COLOR_SPACE_TYPE, DXGI_RATIONAL};
use shared::guiddef::{GUID, REFIID};
use shared::minwindef::{BOOL, BYTE, DWORD, FLOAT, INT, UINT};
use um::d3d11::{
D3D11_BLEND, D3D11_BLEND_OP, D3D11_BOX, D3D11_CULL_MODE, D3D11_FILL_MODE, D3D11_RECT,
D3D11_VIDEO_DECODER_BUFFER_TYPE, D3D11_VIDEO_DECODER_CONFIG, D3D11_VIDEO_DECODER_D
ESC,
ID3D11BlendState, ID3D11BlendStateVtbl, ID3D11Buffer, ID3D11CryptoSession, ID3D11Device,
ID3D11DeviceChild, ID3D11DeviceChildVtbl, ID3D11DeviceContext, ID3D11DeviceContextVtbl,
ID3D11DeviceVtbl, ID3D11RasterizerState, ID3D11RasterizerStateVtbl, ID3D11Resource,
ID3D11VideoContext, ID3D11VideoContextVtbl, ID3D11VideoDecoder, ID3D11VideoDevice,
ID3D11VideoDeviceVtbl, ID3D11VideoProcessor, ID3D11VideoProcessorEnumerator,
ID3D11VideoProcessorEnumeratorVtbl, ID3D11View
};
use um::d3dcommon::D3D_FEATURE_LEVEL;
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::winnt::{HANDLE, HRESULT, LPCWSTR};
DEFINE_GUID!{IID_ID3D11BlendState1,
0 xcc86fabe, 0 xda55, 0 x401d, 0 x85, 0 xe7, 0 xe3, 0 xc9, 0 xde, 0 x28, 0 x77, 0 xe9}
DEFINE_GUID!{IID_ID3D11RasterizerState1,
0 x1217d7a6, 0 x5039, 0 x418c, 0 xb0, 0 x42, 0 x9c, 0 xbe, 0 x25, 0 x6a, 0 xfd, 0 x6e}
DEFINE_GUID!{IID_ID3DDeviceContextState,
0 x5c1e0d8a, 0 x7c23, 0 x48f9, 0 x8c, 0 x59, 0 xa9, 0 x29, 0 x58, 0 xce, 0 xff, 0 x11}
DEFINE_GUID!{IID_ID3D11DeviceContext1,
0 xbb2c6faa, 0 xb5fb, 0 x4082, 0 x8e, 0 x6b, 0 x38, 0 x8b, 0 x8c, 0 xfa, 0 x90, 0 xe1}
DEFINE_GUID!{IID_ID3D11VideoContext1,
0 xa7f026da, 0 xa5f8, 0 x4487, 0 xa5, 0 x64, 0 x15, 0 xe3, 0 x43, 0 x57, 0 x65, 0 x1e}
DEFINE_GUID!{IID_ID3D11VideoDevice1,
0 x29da1d51, 0 x1321, 0 x4454, 0 x80, 0 x4b, 0 xf5, 0 xfc, 0 x9f, 0 x86, 0 x1f, 0 x0f}
DEFINE_GUID!{IID_ID3D11VideoProcessorEnumerator1,
0 x465217f2, 0 x5568, 0 x43cf, 0 xb5, 0 xb9, 0 xf6, 0 x1d, 0 x54, 0 x53, 0 x1c, 0 xa1}
DEFINE_GUID!{IID_ID3D11Device1,
0 xa04bfb29, 0 x08ef, 0 x43d6, 0 xa4, 0 x9c, 0 xa9, 0 xbd, 0 xbd, 0 xcb, 0 xe6, 0 x86}
DEFINE_GUID!{IID_ID3DUserDefinedAnnotation,
0 xb2daad8b, 0 x03d4, 0 x4dbf, 0 x95, 0 xeb, 0 x32, 0 xab, 0 x4b, 0 x63, 0 xd0, 0 xab}
ENUM !{enum D3D11_COPY_FLAGS {
D3D11_COPY_NO_OVERWRITE = 0 x00000001,
D3D11_COPY_DISCARD = 0 x00000002,
}}
ENUM !{enum D3D11_LOGIC_OP {
D3D11_LOGIC_OP_CLEAR = 0 ,
D3D11_LOGIC_OP_SET = 1 ,
D3D11_LOGIC_OP_COPY = 2 ,
D3D11_LOGIC_OP_COPY_INVERTED = 3 ,
D3D11_LOGIC_OP_NOOP = 4 ,
D3D11_LOGIC_OP_INVERT = 5 ,
D3D11_LOGIC_OP_AND = 6 ,
D3D11_LOGIC_OP_NAND = 7 ,
D3D11_LOGIC_OP_OR = 8 ,
D3D11_LOGIC_OP_NOR = 9 ,
D3D11_LOGIC_OP_XOR = 10 ,
D3D11_LOGIC_OP_EQUIV = 11 ,
D3D11_LOGIC_OP_AND_REVERSE = 12 ,
D3D11_LOGIC_OP_AND_INVERTED = 13 ,
D3D11_LOGIC_OP_OR_REVERSE = 14 ,
D3D11_LOGIC_OP_OR_INVERTED = 15 ,
}}
STRUCT !{struct D3D11_RENDER_TARGET_BLEND_DESC1 {
BlendEnable: BOOL,
LogicOpEnable: BOOL,
SrcBlend: D3D11_BLEND,
DestBlend: D3D11_BLEND,
BlendOp: D3D11_BLEND_OP,
SrcBlendAlpha: D3D11_BLEND,
DestBlendAlpha: D3D11_BLEND,
BlendOpAlpha: D3D11_BLEND_OP,
LogicOp: D3D11_LOGIC_OP,
RenderTargetWriteMask: UINT8,
}}
STRUCT !{struct D3D11_BLEND_DESC1 {
AlphaToCoverageEnable: BOOL,
IndependentBlendEnable: BOOL,
RenderTarget: [D3D11_RENDER_TARGET_BLEND_DESC1; 8 ],
}}
RIDL!{#[ uuid(0 xcc86fabe, 0 xda55, 0 x401d, 0 x85, 0 xe7, 0 xe3, 0 xc9, 0 xde, 0 x28, 0 x77, 0 xe9)]
interface ID3D11BlendState1(ID3D11BlendState1Vtbl): ID3D11BlendState(ID3D11BlendStateVtbl) {
fn GetDesc1(
pDesc: *mut D3D11_BLEND_DESC1,
) -> (),
}}
STRUCT !{struct D3D11_RASTERIZER_DESC1 {
FillMode: D3D11_FILL_MODE,
CullMode: D3D11_CULL_MODE,
FrontCounterClockwise: BOOL,
DepthBias: INT,
DepthBiasClamp: FLOAT,
SlopeScaledDepthBias: FLOAT,
DepthClipEnable: BOOL,
ScissorEnable: BOOL,
MultisampleEnable: BOOL,
AntialiasedLineEnable: BOOL,
ForcedSampleCount: UINT,
}}
RIDL!{#[ uuid(0 x1217d7a6, 0 x5039, 0 x418c, 0 xb0, 0 x42, 0 x9c, 0 xbe, 0 x25, 0 x6a, 0 xfd, 0 x6e)]
interface ID3D11RasterizerState1(ID3D11RasterizerState1Vtbl):
ID3D11RasterizerState(ID3D11RasterizerStateVtbl) {
fn GetDesc1(
pDesc: *mut D3D11_RASTERIZER_DESC1,
) -> (),
}}
ENUM !{enum D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG {
D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED = 0 x1,
}}
RIDL!{#[ uuid(0 x5c1e0d8a, 0 x7c23, 0 x48f9, 0 x8c, 0 x59, 0 xa9, 0 x29, 0 x58, 0 xce, 0 xff, 0 x11)]
interface ID3DDeviceContextState(ID3DDeviceContextStateVtbl):
ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
RIDL!{#[ uuid(0 xbb2c6faa, 0 xb5fb, 0 x4082, 0 x8e, 0 x6b, 0 x38, 0 x8b, 0 x8c, 0 xfa, 0 x90, 0 xe1)]
interface ID3D11DeviceContext1(ID3D11DeviceContext1Vtbl):
ID3D11DeviceContext(ID3D11DeviceContextVtbl) {
fn CopySubresourceRegion1(
pDstResource: *mut ID3D11Resource,
DstSubresource: UINT,
DstX: UINT,
DstY: UINT,
DstZ: UINT,
pSrcResource: *mut ID3D11Resource,
SrcSubresource: UINT,
pSrcBox: *const D3D11_BOX,
CopyFlags: UINT,
) -> (),
fn UpdateSubresource1(
pDstResource: *mut ID3D11Resource,
DstSubresource: UINT,
pDstBox: *const D3D11_BOX,
pSrcData: *mut c_void,
SrcRowPitch: UINT,
SrcDepthPitch: UINT,
CopyFlags: UINT,
) -> (),
fn DiscardResource(
pResource: *mut ID3D11Resource,
) -> (),
fn DiscardView(
pResource: *mut ID3D11Resource,
) -> (),
fn VSSetConstantBuffers1(
StartSlot: UINT,
NumBuffers: UINT,
ppConstantBuffers: *const *mut ID3D11Buffer,
pFirstConstant: *const UINT,
pNumConstants: *const UINT,
) -> (),
fn HSSetConstantBuffers1(
StartSlot: UINT,
NumBuffers: UINT,
ppConstantBuffers: *const *mut ID3D11Buffer,
pFirstConstant: *const UINT,
pNumConstants: *const UINT,
) -> (),
fn DSSetConstantBuffers1(
StartSlot: UINT,
NumBuffers: UINT,
ppConstantBuffers: *const *mut ID3D11Buffer,
pFirstConstant: *const UINT,
pNumConstants: *const UINT,
) -> (),
fn GSSetConstantBuffers1(
StartSlot: UINT,
NumBuffers: UINT,
ppConstantBuffers: *const *mut ID3D11Buffer,
pFirstConstant: *const UINT,
pNumConstants: *const UINT,
) -> (),
fn PSSetConstantBuffers1(
StartSlot: UINT,
NumBuffers: UINT,
ppConstantBuffers: *const *mut ID3D11Buffer,
pFirstConstant: *const UINT,
pNumConstants: *const UINT,
) -> (),
fn CSSetConstantBuffers1(
StartSlot: UINT,
NumBuffers: UINT,
ppConstantBuffers: *const *mut ID3D11Buffer,
pFirstConstant: *const UINT,
pNumConstants: *const UINT,
) -> (),
fn VSGetConstantBuffers1(
StartSlot: UINT,
NumBuffers: UINT,
ppConstantBuffers: *mut *mut ID3D11Buffer,
pFirstConstant: *mut UINT,
pNumConstants: *mut UINT,
) -> (),
fn HSGetConstantBuffers1(
StartSlot: UINT,
NumBuffers: UINT,
ppConstantBuffers: *mut *mut ID3D11Buffer,
pFirstConstant: *mut UINT,
pNumConstants: *mut UINT,
) -> (),
fn DSGetConstantBuffers1(
StartSlot: UINT,
NumBuffers: UINT,
ppConstantBuffers: *mut *mut ID3D11Buffer,
pFirstConstant: *mut UINT,
pNumConstants: *mut UINT,
) -> (),
fn GSGetConstantBuffers1(
StartSlot: UINT,
NumBuffers: UINT,
ppConstantBuffers: *mut *mut ID3D11Buffer,
pFirstConstant: *mut UINT,
pNumConstants: *mut UINT,
) -> (),
fn PSGetConstantBuffers1(
StartSlot: UINT,
NumBuffers: UINT,
ppConstantBuffers: *mut *mut ID3D11Buffer,
pFirstConstant: *mut UINT,
pNumConstants: *mut UINT,
) -> (),
fn CSGetConstantBuffers1(
StartSlot: UINT,
NumBuffers: UINT,
ppConstantBuffers: *mut *mut ID3D11Buffer,
pFirstConstant: *mut UINT,
pNumConstants: *mut UINT,
) -> (),
fn SwapDeviceContextState(
pState: *mut ID3DDeviceContextState,
ppPreviousState: *mut *mut ID3DDeviceContextState,
) -> (),
fn ClearView(
pView: *mut ID3D11View,
Color: [FLOAT; 4 ],
pRect: *const D3D11_RECT,
NumRects: UINT,
) -> (),
fn DiscardView1(
pResourceView: *mut ID3D11View,
pRects: *const D3D11_RECT,
NumRects: UINT,
) -> (),
}}
STRUCT !{struct D3D11_VIDEO_DECODER_SUB_SAMPLE_MAPPING_BLOCK {
ClearSize: UINT,
EncryptedSize: UINT,
}}
STRUCT !{struct D3D11_VIDEO_DECODER_BUFFER_DESC1 {
BufferType: D3D11_VIDEO_DECODER_BUFFER_TYPE,
DataOffset: UINT,
DataSize: UINT,
pIV: *mut c_void,
IVSize: UINT,
pSubSampleMappingBlock: *mut D3D11_VIDEO_DECODER_SUB_SAMPLE_MAPPING_BLOCK,
SubSampleMappingCount: UINT,
}}
STRUCT !{struct D3D11_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION {
pCryptoSession: *mut ID3D11CryptoSession,
BlobSize: UINT,
pBlob: *mut c_void,
pKeyInfoId: *mut GUID,
PrivateDataSize: UINT,
pPrivateData: *mut c_void,
}}
ENUM !{enum D3D11_VIDEO_DECODER_CAPS {
D3D11_VIDEO_DECODER_CAPS_DOWNSAMPLE = 0 x1,
D3D11_VIDEO_DECODER_CAPS_NON_REAL_TIME = 0 x02,
D3D11_VIDEO_DECODER_CAPS_DOWNSAMPLE_DYNAMIC = 0 x04,
D3D11_VIDEO_DECODER_CAPS_DOWNSAMPLE_REQUIRED = 0 x08,
D3D11_VIDEO_DECODER_CAPS_UNSUPPORTED = 0 x10,
}}
ENUM !{enum D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINTS {
D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINT_MULTIPLANE_OVERLAY_ROTATION = 0 x01,
D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINT_MULTIPLANE_OVERLAY_RESIZE = 0 x02,
D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINT_MULTIPLANE_OVERLAY_COLOR_SPACE_CONVERSION = 0 x04,
D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINT_TRIPLE_BUFFER_OUTPUT = 0 x08,
}}
STRUCT !{struct D3D11_VIDEO_PROCESSOR_STREAM_BEHAVIOR_HINT {
Enable: BOOL,
Width: UINT,
Height: UINT,
Format: DXGI_FORMAT,
}}
ENUM !{enum D3D11_CRYPTO_SESSION_STATUS {
D3D11_CRYPTO_SESSION_STATUS_OK = 0 ,
D3D11_CRYPTO_SESSION_STATUS_KEY_LOST = 1 ,
D3D11_CRYPTO_SESSION_STATUS_KEY_AND_CONTENT_LOST = 2 ,
}}
STRUCT !{struct D3D11_KEY_EXCHANGE_HW_PROTECTION_INPUT_DATA {
PrivateDataSize: UINT,
HWProtectionDataSize: UINT,
pbInput: [BYTE; 4 ],
}}
STRUCT !{struct D3D11_KEY_EXCHANGE_HW_PROTECTION_OUTPUT_DATA {
PrivateDataSize: UINT,
MaxHWProtectionDataSize: UINT,
HWProtectionDataSize: UINT,
TransportTime: UINT64,
ExecutionTime: UINT64,
pbOutput: [BYTE; 4 ],
}}
STRUCT !{struct D3D11_KEY_EXCHANGE_HW_PROTECTION_DATA {
HWProtectionFunctionID: UINT,
pInputData: *mut D3D11_KEY_EXCHANGE_HW_PROTECTION_INPUT_DATA,
pOutputData: *mut D3D11_KEY_EXCHANGE_HW_PROTECTION_OUTPUT_DATA,
Status: HRESULT,
}}
STRUCT !{struct D3D11_VIDEO_SAMPLE_DESC {
Width: UINT,
Height: UINT,
Format: DXGI_FORMAT,
ColorSpace: DXGI_COLOR_SPACE_TYPE,
}}
RIDL!{#[ uuid(0 xa7f026da, 0 xa5f8, 0 x4487, 0 xa5, 0 x64, 0 x15, 0 xe3, 0 x43, 0 x57, 0 x65, 0 x1e)]
interface ID3D11VideoContext1(ID3D11VideoContext1Vtbl):
ID3D11VideoContext(ID3D11VideoContextVtbl) {
fn SubmitDecoderBuffers1(
pDecoder: *mut ID3D11VideoDecoder,
NumBuffers: UINT,
pBufferDesc: *const D3D11_VIDEO_DECODER_BUFFER_DESC1,
) -> HRESULT,
fn GetDataForNewHardwareKey(
pCryptoSession: *mut ID3D11CryptoSession,
PrivateInputSize: UINT,
pPrivateInputData: *const c_void,
pPrivateOutputData: *mut UINT64,
) -> HRESULT,
fn CheckCryptoSessionStatus(
pCryptoSession: *mut ID3D11CryptoSession,
pStatus: *mut D3D11_CRYPTO_SESSION_STATUS,
) -> HRESULT,
fn DecoderEnableDownsampling(
pDecoder: *mut ID3D11VideoDecoder,
InputColorSpace: DXGI_COLOR_SPACE_TYPE,
pOutputDesc: *const D3D11_VIDEO_SAMPLE_DESC,
ReferenceFrameCount: UINT,
) -> HRESULT,
fn DecoderUpdateDownsampling(
pDecoder: *mut ID3D11VideoDecoder,
pOutputDesc: *const D3D11_VIDEO_SAMPLE_DESC,
) -> HRESULT,
fn VideoProcessorSetOutputColorSpace1(
pVideoProcessor: *mut ID3D11VideoProcessor,
ColorSpace: DXGI_COLOR_SPACE_TYPE,
) -> (),
fn VideoProcessorSetOutputShaderUsage(
pVideoProcessor: *mut ID3D11VideoProcessor,
ShaderUsage: BOOL,
) -> (),
fn VideoProcessorGetOutputColorSpace1(
pVideoProcessor: *mut ID3D11VideoProcessor,
pColorSpace: *mut DXGI_COLOR_SPACE_TYPE,
) -> (),
fn VideoProcessorGetOutputShaderUsage(
pVideoProcessor: *mut ID3D11VideoProcessor,
pShaderUsage: *mut BOOL,
) -> (),
fn VideoProcessorSetStreamColorSpace1(
pVideoProcessor: *mut ID3D11VideoProcessor,
StreamIndex: UINT,
ColorSpace: DXGI_COLOR_SPACE_TYPE,
) -> (),
fn VideoProcessorSetStreamMirror(
pVideoProcessor: *mut ID3D11VideoProcessor,
StreamIndex: UINT,
Enable: BOOL,
FlipHorizontal: BOOL,
FlipVertical: BOOL,
) -> (),
fn VideoProcessorGetStreamColorSpace1(
pVideoProcessor: *mut ID3D11VideoProcessor,
StreamIndex: UINT,
pColorSpace: *mut DXGI_COLOR_SPACE_TYPE,
) -> (),
fn VideoProcessorGetStreamMirror(
pVideoProcessor: *mut ID3D11VideoProcessor,
StreamIndex: UINT,
pEnable: *mut BOOL,
pFlipHorizontal: *mut BOOL,
pFlipVertical: *mut BOOL,
) -> (),
fn VideoProcessorGetBehaviorHints(
pVideoProcessor: *mut ID3D11VideoProcessor,
OutputWidth: UINT,
OutputHeight: UINT,
OutputFormat: DXGI_FORMAT,
StreamCount: UINT,
pStreams: *const D3D11_VIDEO_PROCESSOR_STREAM_BEHAVIOR_HINT,
pBehaviorHints: *mut UINT,
) -> (),
}}
RIDL!{#[ uuid(0 x29da1d51, 0 x1321, 0 x4454, 0 x80, 0 x4b, 0 xf5, 0 xfc, 0 x9f, 0 x86, 0 x1f, 0 x0f)]
interface ID3D11VideoDevice1(ID3D11VideoDevice1Vtbl): ID3D11VideoDevice(ID3D11VideoDeviceVtbl) {
fn GetCryptoSessionPrivateDataSize(
pCryptoType: *const GUID,
pDecoderProfile: *const GUID,
pKeyExchangeType: *const GUID,
pPrivateInputSize: *mut UINT,
pPrivateOutputSize: *mut UINT,
) -> HRESULT,
fn GetVideoDecoderCaps(
pDecoderProfile: *const GUID,
SampleWidth: UINT,
SampleHeight: UINT,
pFrameRate: *const DXGI_RATIONAL,
BitRate: UINT,
pCryptoType: *const GUID,
pDecoderCaps: *mut UINT,
) -> HRESULT,
fn CheckVideoDecoderDownsampling(
pInputDesc: *const D3D11_VIDEO_DECODER_DESC,
InputColorSpace: DXGI_COLOR_SPACE_TYPE,
pInputConfig: *const D3D11_VIDEO_DECODER_CONFIG,
pFrameRate: *const DXGI_RATIONAL,
pOutputDesc: *const D3D11_VIDEO_SAMPLE_DESC,
pSupported: *mut BOOL,
pRealTimeHint: *mut BOOL,
) -> HRESULT,
fn RecommendVideoDecoderDownsampleParameters(
pInputDesc: *const D3D11_VIDEO_DECODER_DESC,
InputColorSpace: DXGI_COLOR_SPACE_TYPE,
pInputConfig: *const D3D11_VIDEO_DECODER_CONFIG,
pRecommendedOutputDesc: *mut D3D11_VIDEO_SAMPLE_DESC,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x465217f2, 0 x5568, 0 x43cf, 0 xb5, 0 xb9, 0 xf6, 0 x1d, 0 x54, 0 x53, 0 x1c, 0 xa1)]
interface ID3D11VideoProcessorEnumerator1(ID3D11VideoProcessorEnumerator1Vtbl):
ID3D11VideoProcessorEnumerator(ID3D11VideoProcessorEnumeratorVtbl) {
fn CheckVideoProcessorFormatConversion(
InputFormat: DXGI_FORMAT,
InputCOlorSpace: DXGI_COLOR_SPACE_TYPE,
OutputFormat: DXGI_FORMAT,
OutputColorSpace: DXGI_COLOR_SPACE_TYPE,
pSupported: *mut BOOL,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xa04bfb29, 0 x08ef, 0 x43d6, 0 xa4, 0 x9c, 0 xa9, 0 xbd, 0 xbd, 0 xcb, 0 xe6, 0 x86)]
interface ID3D11Device1(ID3D11Device1Vtbl): ID3D11Device(ID3D11DeviceVtbl) {
fn GetImmediateContext1(
ppImmediateContext: *mut *mut ID3D11DeviceContext1,
) -> (),
fn CreateDeferredContext1(
ContextFlags: UINT,
ppDeferredContext: *mut *mut ID3D11DeviceContext1,
) -> HRESULT,
fn CreateBlendState(
pBlendStateDesc: *const D3D11_BLEND_DESC1,
ppBlendState: *mut *mut ID3D11BlendState1,
) -> HRESULT,
fn CreateRasterizerState(
pRasterizerDesc: *const D3D11_RASTERIZER_DESC1,
ppRasterizerState: *mut *mut ID3D11RasterizerState1,
) -> HRESULT,
fn CreateDeviceContextState(
Flags: UINT,
pFeatureLevels: *const D3D_FEATURE_LEVEL,
FeatureLevels: UINT,
SDKVersion: UINT,
EmulatedInterface: REFIID,
pChosenFeatureLevel: *mut D3D_FEATURE_LEVEL,
ppContextState: *mut *mut ID3DDeviceContextState,
) -> HRESULT,
fn OpenSharedResource1(
hResource: HANDLE,
returnedInterface: REFIID,
ppResource: *mut *mut c_void,
) -> HRESULT,
fn OpenSharedResourceByName(
Name: LPCWSTR,
dwDesiredAccess: DWORD,
returnedInterface: REFIID,
ppResource: *mut *mut c_void,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xb2daad8b, 0 x03d4, 0 x4dbf, 0 x95, 0 xeb, 0 x32, 0 xab, 0 x4b, 0 x63, 0 xd0, 0 xab)]
interface ID3DUserDefinedAnnotation(ID3DUserDefinedAnnotationVtbl): IUnknown(IUnknownVtbl) {
fn BeginEvent(
Name: LPCWSTR,
) -> INT,
fn EndEvent() -> INT,
fn SetMarker(
Name: LPCWSTR,
) -> (),
fn GetStatus() -> BOOL,
}}
Messung V0.5 in Prozent C=99 H=100 G=99
¤ Dauer der Verarbeitung: 0.26 Sekunden
(vorverarbeitet am 2026-06-22)
¤
*© Formatika GbR, Deutschland