// 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_int;
use shared::basetsd::UINT64;
use shared::minwindef::{BOOL, BYTE, INT, LPVOID, UINT};
use um::d3dcommon::{
D3D_CBUFFER_TYPE, D3D_FEATURE_LEVEL, D3D_INTERPOLATION_MODE, D3D_MIN_PRECISION, D3D_
NAME,
D3D_PARAMETER_FLAGS, D3D_PRIMITIVE, D3D_PRIMITIVE_TOPOLOGY, D3D_REGISTER_COMPONENT_TYPE,
D3D_RESOURCE_RETURN_TYPE, D3D_SHADER_INPUT_TYPE, D3D_SHADER_VARIABLE_CLASS,
D3D_SHADER_VARIABLE_TYPE, D3D_SRV_DIMENSION, D3D_TESSELLATOR_DOMAIN,
D3D_TESSELLATOR_OUTPUT_PRIMITIVE, D3D_TESSELLATOR_PARTITIONING, ID3DBlob,
};
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::winnt::{HRESULT, LPCSTR};
ENUM !{enum D3D11_SHADER_VERSION_TYPE {
D3D11_SHVER_PIXEL_SHADER = 0 ,
D3D11_SHVER_VERTEX_SHADER = 1 ,
D3D11_SHVER_GEOMETRY_SHADER = 2 ,
D3D11_SHVER_HULL_SHADER = 3 ,
D3D11_SHVER_DOMAIN_SHADER = 4 ,
D3D11_SHVER_COMPUTE_SHADER = 5 ,
D3D11_SHVER_RESERVED0 = 0 xFFF0,
}}
pub const D3D_RETURN_PARAMETER_INDEX: c_int = -1 ;
pub type D3D11_RESOURCE_RETURN_TYPE = D3D_RESOURCE_RETURN_TYPE;
pub type D3D11_CBUFFER_TYPE = D3D_CBUFFER_TYPE;
STRUCT !{struct D3D11_SIGNATURE_PARAMETER_DESC {
SemanticName: LPCSTR,
SemanticIndex: UINT,
Register: UINT,
SystemValueType: D3D_NAME,
ComponentType: D3D_REGISTER_COMPONENT_TYPE,
Mask: BYTE,
ReadWriteMask: BYTE,
Stream: UINT,
MinPrecision: D3D_MIN_PRECISION,
}}
STRUCT !{struct D3D11_SHADER_BUFFER_DESC {
Name: LPCSTR,
Type : D3D_CBUFFER_TYPE,
Variables: UINT,
Size: UINT,
uFlags: UINT,
}}
STRUCT !{struct D3D11_SHADER_VARIABLE_DESC {
Name: LPCSTR,
StartOffset: UINT,
Size: UINT,
uFlags: UINT,
DefaultValue: LPVOID,
StartTexture: UINT,
TextureSize: UINT,
StartSampler: UINT,
SamplerSize: UINT,
}}
STRUCT !{struct D3D11_SHADER_TYPE_DESC {
Class: D3D_SHADER_VARIABLE_CLASS,
Type : D3D_SHADER_VARIABLE_TYPE,
Rows: UINT,
Columns: UINT,
Elements: UINT,
Members: UINT,
Offset: UINT,
Name: LPCSTR,
}}
pub type D3D11_TESSELLATOR_DOMAIN = D3D_TESSELLATOR_DOMAIN;
pub type D3D11_TESSELLATOR_PARTITIONING = D3D_TESSELLATOR_PARTITIONING;
pub type D3D11_TESSELLATOR_OUTPUT_PRIMITIVE = D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
STRUCT !{struct D3D11_SHADER_DESC {
Version: UINT,
Creator: LPCSTR,
Flags: UINT,
ConstantBuffers: UINT,
BoundResources: UINT,
InputParameters: UINT,
OutputParameters: UINT,
InstructionCount: UINT,
TempRegisterCount: UINT,
TempArrayCount: UINT,
DefCount: UINT,
DclCount: UINT,
TextureNormalInstructions: UINT,
TextureLoadInstructions: UINT,
TextureCompInstructions: UINT,
TextureBiasInstructions: UINT,
TextureGradientInstructions: UINT,
FloatInstructionCount: UINT,
IntInstructionCount: UINT,
UintInstructionCount: UINT,
StaticFlowControlCount: UINT,
DynamicFlowControlCount: UINT,
MacroInstructionCount: UINT,
ArrayInstructionCount: UINT,
CutInstructionCount: UINT,
EmitInstructionCount: UINT,
GSOutputTopology: D3D_PRIMITIVE_TOPOLOGY,
GSMaxOutputVertexCount: UINT,
InputPrimitive: D3D_PRIMITIVE,
PatchConstantParameters: UINT,
cGSInstanceCount: UINT,
cControlPoints: UINT,
HSOutputPrimitive: D3D_TESSELLATOR_OUTPUT_PRIMITIVE,
HSPartitioning: D3D_TESSELLATOR_PARTITIONING,
TessellatorDomain: D3D_TESSELLATOR_DOMAIN,
cBarrierInstructions: UINT,
cInterlockedInstructions: UINT,
cTextureStoreInstructions: UINT,
}}
STRUCT !{struct D3D11_SHADER_INPUT_BIND_DESC {
Name: LPCSTR,
Type : D3D_SHADER_INPUT_TYPE,
BindPoint: UINT,
BindCount: UINT,
uFlags: UINT,
ReturnType: D3D_RESOURCE_RETURN_TYPE,
Dimension: D3D_SRV_DIMENSION,
NumSamples: UINT,
}}
pub const D3D_SHADER_REQUIRES_DOUBLES: UINT64 = 0 x00000001;
pub const D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL: UINT64 = 0 x00000002;
pub const D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE: UINT64 = 0 x00000004;
pub const D3D_SHADER_REQUIRES_64_UAVS: UINT64 = 0 x00000008;
pub const D3D_SHADER_REQUIRES_MINIMUM_PRECISION: UINT64 = 0 x00000010;
pub const D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS: UINT64 = 0 x00000020;
pub const D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS: UINT64 = 0 x00000040;
pub const D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING: UINT64 = 0 x00000080;
pub const D3D_SHADER_REQUIRES_TILED_RESOURCES: UINT64 = 0 x00000100;
STRUCT !{struct D3D11_LIBRARY_DESC {
Creator: LPCSTR,
Flags: UINT,
FunctionCount: UINT,
}}
STRUCT !{struct D3D11_FUNCTION_DESC {
Version: UINT,
Creator: LPCSTR,
Flags: UINT,
ConstantBuffers: UINT,
BoundResources: UINT,
InstructionCount: UINT,
TempRegisterCount: UINT,
TempArrayCount: UINT,
DefCount: UINT,
DclCount: UINT,
TextureNormalInstructions: UINT,
TextureLoadInstructions: UINT,
TextureCompInstructions: UINT,
TextureBiasInstructions: UINT,
TextureGradientInstructions: UINT,
FloatInstructionCount: UINT,
IntInstructionCount: UINT,
UintInstructionCount: UINT,
StaticFlowControlCount: UINT,
DynamicFlowControlCount: UINT,
MacroInstructionCount: UINT,
ArrayInstructionCount: UINT,
MovInstructionCount: UINT,
MovcInstructionCount: UINT,
ConversionInstructionCount: UINT,
BitwiseInstructionCount: UINT,
MinFeatureLevel: D3D_FEATURE_LEVEL,
RequiredFeatureFlags: UINT64,
Name: LPCSTR,
FunctionParameterCount: INT,
HasReturn: BOOL,
Has10Level9VertexShader: BOOL,
Has10Level9PixelShader: BOOL,
}}
STRUCT !{struct D3D11_PARAMETER_DESC {
Name: LPCSTR,
SemanticName: LPCSTR,
Type : D3D_SHADER_VARIABLE_TYPE,
Class: D3D_SHADER_VARIABLE_CLASS,
Rows: UINT,
Columns: UINT,
InterpolationMode: D3D_INTERPOLATION_MODE,
Flags: D3D_PARAMETER_FLAGS,
FirstInRegister: UINT,
FirstInComponent: UINT,
FirstOutRegister: UINT,
FirstOutComponent: UINT,
}}
DEFINE_GUID!{IID_ID3D11ShaderReflectionType,
0 x6e6ffa6a, 0 x9bae, 0 x4613, 0 xa5, 0 x1e, 0 x91, 0 x65, 0 x2d, 0 x50, 0 x8c, 0 x21}
RIDL!{#[ uuid(0 x6e6ffa6a, 0 x9bae, 0 x4613, 0 xa5, 0 x1e, 0 x91, 0 x65, 0 x2d, 0 x50, 0 x8c, 0 x21)]
interface ID3D11ShaderReflectionType(ID3D11ShaderReflectionTypeVtbl) {
fn GetDesc(
pDesc: *mut D3D11_SHADER_TYPE_DESC,
) -> HRESULT,
fn GetMemberTypeByIndex(
Index: UINT,
) -> *mut ID3D11ShaderReflectionType,
fn GetMemberTypeByName(
Name: LPCSTR,
) -> *mut ID3D11ShaderReflectionType,
fn GetMemberTypeName(
Index: UINT,
) -> LPCSTR,
fn IsEqual(
pType: *mut ID3D11ShaderReflectionType,
) -> HRESULT,
fn GetSubType() -> *mut ID3D11ShaderReflectionType,
fn GetBaseClass() -> *mut ID3D11ShaderReflectionType,
fn GetNumInterfaces() -> UINT,
fn GetInterfaceByIndex(
uIndex: UINT,
) -> *mut ID3D11ShaderReflectionType,
fn IsOfType(
pType: *mut ID3D11ShaderReflectionType,
) -> HRESULT,
fn ImplementsInterface(
pBase: *mut ID3D11ShaderReflectionType,
) -> HRESULT,
}}
DEFINE_GUID!{IID_ID3D11ShaderReflectionVariable,
0 x51f23923, 0 xf3e5, 0 x4bd1, 0 x91, 0 xcb, 0 x60, 0 x61, 0 x77, 0 xd8, 0 xdb, 0 x4c}
RIDL!{#[ uuid(0 x51f23923, 0 xf3e5, 0 x4bd1, 0 x91, 0 xcb, 0 x60, 0 x61, 0 x77, 0 xd8, 0 xdb, 0 x4c)]
interface ID3D11ShaderReflectionVariable(ID3D11ShaderReflectionVariableVtbl) {
fn GetDesc(
pDesc: *mut D3D11_SHADER_VARIABLE_DESC,
) -> HRESULT,
fn GetType() -> *mut ID3D11ShaderReflectionType,
fn GetBuffer() -> *mut ID3D11ShaderReflectionConstantBuffer,
fn GetInterfaceSlot(
uArrayIndex: UINT,
) -> UINT,
}}
DEFINE_GUID!{IID_ID3D11ShaderReflectionConstantBuffer,
0 xeb62d63d, 0 x93dd, 0 x4318, 0 x8a, 0 xe8, 0 xc6, 0 xf8, 0 x3a, 0 xd3, 0 x71, 0 xb8}
RIDL!{#[ uuid(0 xeb62d63d, 0 x93dd, 0 x4318, 0 x8a, 0 xe8, 0 xc6, 0 xf8, 0 x3a, 0 xd3, 0 x71, 0 xb8)]
interface ID3D11ShaderReflectionConstantBuffer(ID3D11ShaderReflectionConstantBufferVtbl) {
fn GetDesc(
pDesc: *mut D3D11_SHADER_BUFFER_DESC,
) -> HRESULT,
fn GetVariableByIndex(
Index: UINT,
) -> *mut ID3D11ShaderReflectionVariable,
fn GetVariableByName(
Name: LPCSTR,
) -> *mut ID3D11ShaderReflectionVariable,
}}
DEFINE_GUID!{IID_ID3D11ShaderReflection,
0 x8d536ca1, 0 x0cca, 0 x4956, 0 xa8, 0 x37, 0 x78, 0 x69, 0 x63, 0 x75, 0 x55, 0 x84}
RIDL!{#[ uuid(0 x8d536ca1, 0 x0cca, 0 x4956, 0 xa8, 0 x37, 0 x78, 0 x69, 0 x63, 0 x75, 0 x55, 0 x84)]
interface ID3D11ShaderReflection(ID3D11ShaderReflectionVtbl): IUnknown(IUnknownVtbl) {
fn GetDesc(
pDesc: *mut D3D11_SHADER_DESC,
) -> HRESULT,
fn GetConstantBufferByIndex(
Index: UINT,
) -> *mut ID3D11ShaderReflectionConstantBuffer,
fn GetConstantBufferByName(
Name: LPCSTR,
) -> *mut ID3D11ShaderReflectionConstantBuffer,
fn GetResourceBindingDesc(
ResourceIndex: UINT,
pDesc: *mut D3D11_SHADER_INPUT_BIND_DESC,
) -> HRESULT,
fn GetInputParameterDesc(
ParameterIndex: UINT,
pDesc: *mut D3D11_SIGNATURE_PARAMETER_DESC,
) -> HRESULT,
fn GetOutputParameterDesc(
ParameterIndex: UINT,
pDesc: *mut D3D11_SIGNATURE_PARAMETER_DESC,
) -> HRESULT,
fn GetPatchConstantParameterDesc(
ParameterIndex: UINT,
pDesc: *mut D3D11_SIGNATURE_PARAMETER_DESC,
) -> HRESULT,
fn GetVariableByName(
Name: LPCSTR,
) -> *mut ID3D11ShaderReflectionVariable,
fn GetResourceBindingDescByName(
Name: LPCSTR,
pDesc: *mut D3D11_SHADER_INPUT_BIND_DESC,
) -> HRESULT,
fn GetMovInstructionCount() -> UINT,
fn GetMovcInstructionCount() -> UINT,
fn GetConversionInstructionCount() -> UINT,
fn GetBitwiseInstructionCount() -> UINT,
fn GetGSInputPrimitive() -> D3D_PRIMITIVE,
fn IsSampleFrequencyShader() -> BOOL,
fn GetNumInterfaceSlots() -> UINT,
fn GetMinFeatureLevel(
pLevel: *mut D3D_FEATURE_LEVEL,
) -> HRESULT,
fn GetThreadGroupSize(
pSizeX: *mut UINT,
pSizeY: *mut UINT,
pSizeZ: *mut UINT,
) -> UINT,
fn GetRequiresFlags() -> UINT64,
}}
DEFINE_GUID!{IID_ID3D11LibraryReflection,
0 x54384f1b, 0 x5b3e, 0 x4bb7, 0 xae, 0 x01, 0 x60, 0 xba, 0 x30, 0 x97, 0 xcb, 0 xb6}
RIDL!{#[ uuid(0 x54384f1b, 0 x5b3e, 0 x4bb7, 0 xae, 0 x01, 0 x60, 0 xba, 0 x30, 0 x97, 0 xcb, 0 xb6)]
interface ID3D11LibraryReflection(ID3D11LibraryReflectionVtbl): IUnknown(IUnknownVtbl) {
fn GetDesc(
pDesc: *mut D3D11_LIBRARY_DESC,
) -> HRESULT,
fn GetFunctionByIndex(
FunctionIndex: INT,
) -> *mut ID3D11FunctionReflection,
}}
DEFINE_GUID!{IID_ID3D11FunctionReflection,
0 x207bcecb, 0 xd683, 0 x4a06, 0 xa8, 0 xa3, 0 x9b, 0 x14, 0 x9b, 0 x9f, 0 x73, 0 xa4}
RIDL!{#[ uuid(0 x207bcecb, 0 xd683, 0 x4a06, 0 xa8, 0 xa3, 0 x9b, 0 x14, 0 x9b, 0 x9f, 0 x73, 0 xa4)]
interface ID3D11FunctionReflection(ID3D11FunctionReflectionVtbl) {
fn GetDesc(
pDesc: *mut D3D11_FUNCTION_DESC,
) -> HRESULT,
fn GetConstantBufferByIndex(
BufferIndex: UINT,
) -> *mut ID3D11ShaderReflectionConstantBuffer,
fn GetConstantBufferByName(
Name: LPCSTR,
) -> *mut ID3D11ShaderReflectionConstantBuffer,
fn GetResourceBindingDesc(
ResourceIndex: UINT,
pDesc: *mut D3D11_SHADER_INPUT_BIND_DESC,
) -> HRESULT,
fn GetVariableByName(
Name: LPCSTR,
) -> *mut ID3D11ShaderReflectionVariable,
fn GetResourceBindingDescByName(
Name: LPCSTR,
pDesc: *mut D3D11_SHADER_INPUT_BIND_DESC,
) -> HRESULT,
fn GetFunctionParameter(
ParameterIndex: INT,
) -> *mut ID3D11FunctionParameterReflection,
}}
DEFINE_GUID!{IID_ID3D11FunctionParameterReflection,
0 x42757488, 0 x334f, 0 x47fe, 0 x98, 0 x2e, 0 x1a, 0 x65, 0 xd0, 0 x8c, 0 xc4, 0 x62}
RIDL!{#[ uuid(0 x42757488, 0 x334f, 0 x47fe, 0 x98, 0 x2e, 0 x1a, 0 x65, 0 xd0, 0 x8c, 0 xc4, 0 x62)]
interface ID3D11FunctionParameterReflection(ID3D11FunctionParameterReflectionVtbl) {
fn GetDesc(
pDesc: *mut D3D11_PARAMETER_DESC,
) -> HRESULT,
}}
DEFINE_GUID!{IID_ID3D11Module,
0 xcac701ee, 0 x80fc, 0 x4122, 0 x82, 0 x42, 0 x10, 0 xb3, 0 x9c, 0 x8c, 0 xec, 0 x34}
RIDL!{#[ uuid(0 xcac701ee, 0 x80fc, 0 x4122, 0 x82, 0 x42, 0 x10, 0 xb3, 0 x9c, 0 x8c, 0 xec, 0 x34)]
interface ID3D11Module(ID3D11ModuleVtbl): IUnknown(IUnknownVtbl) {
fn CreateInstance(
pNamespace: LPCSTR,
ppModuleInstance: *mut *mut ID3D11ModuleInstance,
) -> HRESULT,
}}
DEFINE_GUID!{IID_ID3D11ModuleInstance,
0 x469e07f7, 0 x045a, 0 x48d5, 0 xaa, 0 x12, 0 x68, 0 xa4, 0 x78, 0 xcd, 0 xf7, 0 x5d}
RIDL!{#[ uuid(0 x469e07f7, 0 x045a, 0 x48d5, 0 xaa, 0 x12, 0 x68, 0 xa4, 0 x78, 0 xcd, 0 xf7, 0 x5d)]
interface ID3D11ModuleInstance(ID3D11ModuleInstanceVtbl): IUnknown(IUnknownVtbl) {
fn BindConstantBuffer(
uSrcSlot: UINT,
uDstSlot: UINT,
cbDstOffset: UINT,
) -> HRESULT,
fn BindConstantBufferByName(
pName: LPCSTR,
uDstSlot: UINT,
cbDstOffset: UINT,
) -> HRESULT,
fn BindResource(
uSrcSlot: UINT,
uDstSlot: UINT,
uCount: UINT,
) -> HRESULT,
fn BindResourceByName(
pName: LPCSTR,
uDstSlot: UINT,
uCount: UINT,
) -> HRESULT,
fn BindSampler(
uSrcSlot: UINT,
uDstSlot: UINT,
uCount: UINT,
) -> HRESULT,
fn BindSamplerByName(
pName: LPCSTR,
uDstSlot: UINT,
uCount: UINT,
) -> HRESULT,
fn BindUnorderedAccessView(
uSrcSlot: UINT,
uDstSlot: UINT,
uCount: UINT,
) -> HRESULT,
fn BindUnorderedAccessViewByName(
pName: LPCSTR,
uDstSlot: UINT,
uCount: UINT,
) -> HRESULT,
fn BindResourceAsUnorderedAccessView(
uSrcSrvSlot: UINT,
uDstUavSlot: UINT,
uCount: UINT,
) -> HRESULT,
fn BindResourceAsUnorderedAccessViewByName(
pSrvName: LPCSTR,
uDstUavSlot: UINT,
uCount: UINT,
) -> HRESULT,
}}
DEFINE_GUID!{IID_ID3D11Linker,
0 x59a6cd0e, 0 xe10d, 0 x4c1f, 0 x88, 0 xc0, 0 x63, 0 xab, 0 xa1, 0 xda, 0 xf3, 0 x0e}
RIDL!{#[ uuid(0 x59a6cd0e, 0 xe10d, 0 x4c1f, 0 x88, 0 xc0, 0 x63, 0 xab, 0 xa1, 0 xda, 0 xf3, 0 x0e)]
interface ID3D11Linker(ID3D11LinkerVtbl): IUnknown(IUnknownVtbl) {
fn Link(
pEntry: *mut ID3D11ModuleInstance,
pEntryName: LPCSTR,
pTargetName: LPCSTR,
uFlags: UINT,
ppShaderBlob: *mut *mut ID3DBlob,
ppErrorBuffer: *mut *mut ID3DBlob,
) -> HRESULT,
fn UseLibrary(
pLibraryMI: *mut ID3D11ModuleInstance,
) -> HRESULT,
fn AddClipPlaneFromCBuffer(
uCBufferSlot: UINT,
uCBufferEntry: UINT,
) -> HRESULT,
}}
DEFINE_GUID!{IID_ID3D11LinkingNode,
0 xd80dd70c, 0 x8d2f, 0 x4751, 0 x94, 0 xa1, 0 x03, 0 xc7, 0 x9b, 0 x35, 0 x56, 0 xdb}
RIDL!{#[ uuid(0 xd80dd70c, 0 x8d2f, 0 x4751, 0 x94, 0 xa1, 0 x03, 0 xc7, 0 x9b, 0 x35, 0 x56, 0 xdb)]
interface ID3D11LinkingNode(ID3D11LinkingNodeVtbl): IUnknown(IUnknownVtbl) {}}
DEFINE_GUID!{IID_ID3D11FunctionLinkingGraph,
0 x54133220, 0 x1ce8, 0 x43d3, 0 x82, 0 x36, 0 x98, 0 x55, 0 xc5, 0 xce, 0 xec, 0 xff}
RIDL!{#[ uuid(0 x54133220, 0 x1ce8, 0 x43d3, 0 x82, 0 x36, 0 x98, 0 x55, 0 xc5, 0 xce, 0 xec, 0 xff)]
interface ID3D11FunctionLinkingGraph(ID3D11FunctionLinkingGraphVtbl): IUnknown(IUnknownVtbl) {
fn CreateModuleInstance(
ppModuleInstance: *mut *mut ID3D11ModuleInstance,
ppErrorBuffer: *mut *mut ID3DBlob,
) -> HRESULT,
fn SetInputSignature(
pInputParameters: *const D3D11_PARAMETER_DESC,
cInputParameters: UINT,
ppInputNode: *mut *mut ID3D11LinkingNode,
) -> HRESULT,
fn SetOutputSignature(
pOutputParameters: *const D3D11_PARAMETER_DESC,
cOutputParameters: UINT,
ppOutputNode: *mut *mut ID3D11LinkingNode,
) -> HRESULT,
fn CallFunction(
pModuleInstanceNamespace: LPCSTR,
pModuleWithFunctionPrototype: *mut ID3D11Module,
pFunctionName: LPCSTR,
ppCallNode: *mut *mut ID3D11LinkingNode,
) -> HRESULT,
fn PassValue(
pSrcNode: *mut ID3D11LinkingNode,
SrcParameterIndex: INT,
pDstNode: *mut ID3D11LinkingNode,
DstParameterIndex: INT,
) -> HRESULT,
fn PassValueWithSwizzle(
pSrcNode: *mut ID3D11LinkingNode,
SrcParameterIndex: INT,
pSrcSwizzle: LPCSTR,
pDstNode: *mut ID3D11LinkingNode,
DstParameterIndex: INT,
pDstSwizzle: LPCSTR,
) -> HRESULT,
fn GetLastError(
ppErrorBuffer: *mut *mut ID3DBlob,
) -> HRESULT,
fn GenerateHlsl(
uFlags: UINT,
ppBuffer: *mut *mut ID3DBlob,
) -> HRESULT,
}}
Messung V0.5 in Prozent C=99 H=100 G=99
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-07-03)
¤
*© Formatika GbR, Deutschland