C# C到C的编组结构与并集#

C# C到C的编组结构与并集#,c#,pointers,union,marshalling,unmarshalling,C#,Pointers,Union,Marshalling,Unmarshalling,C代码: struct WbemQualifier{ CIMSTRING名称;/*[相对,字符集(UTF16),字符串]*/ 8种口味; 枚举CIMTYPE_枚举CIMTYPE; union CIMVAR值;/*[开关_为(cimtype)]*/ }/*[public,nopull,nopush]*/; 结构WbemQualifiers{ uint32_t计数; 结构WbemQualifier**item;/*[ref]*/ }/*[public,nopull,nopush]*/; 结构Wbem

C代码:

struct WbemQualifier{
CIMSTRING名称;/*[相对,字符集(UTF16),字符串]*/
8种口味;
枚举CIMTYPE_枚举CIMTYPE;
union CIMVAR值;/*[开关_为(cimtype)]*/
}/*[public,nopull,nopush]*/;
结构WbemQualifiers{
uint32_t计数;
结构WbemQualifier**item;/*[ref]*/
}/*[public,nopull,nopush]*/;
结构WbemPropertyDesc{
uint32_t cimtype;
uint16号;
uint32_t偏移量;
uint32_t深度;
结构WbemQualifiers限定符;
}/*[公众]*/;
结构WbemProperty{
CIMSTRING名称;/*[相对,字符集(UTF16),字符串]*/
结构WbemPropertyDesc*desc;/*[相对]*/
}/*[公众]*/;
结构CIMSTRINGS{
uint32_t计数;
CIMSTRING*项;/*[字符串,字符集(UTF16),参考]*/
}/*[nopush,nopull,public]*/;
/*位图默认\u标志*/
#定义默认\u标志\u为空(1)
#定义默认\u标志\u继承(2)
结构WbemClass{
uint8___0;
CIMSTRING _CLASS;/*[相对的,空的u是ffffffff,字符串,字符集(UTF16)]*/
uint32数据大小;
结构CIMSTRINGS uu派生;
结构WbemQualifiers限定符;
uint32不动产计数;
结构WbemProperty*属性;
uint8_t*默认_标志;
union CIMVAR*默认值;
}/*[public,flag(LIBNDR_flag_NOALIGN),noprint,nopull,nopush]*/;
结构WbemMethod{
CIMSTRING name;/*[null_是_ffffffff,字符串,字符集(UTF16),相对]*/
uint32_t u0;
uint32_t u1;
结构WbemQualifiers*限定符;/*[相对]*/
结构WbemClassObject*in;/*[相对,子上下文(4)]*/
结构WbemClassObject*out;/*[相对,子上下文(4)]*/
}/*[公众]*/;
结构WbemMethods{
uint16_t计数;
uint16_t u0;
结构WbemMethod*方法;
}/*[公众,旗帜(自由旗帜)]*/;
结构识别{
uint8_t u1_0;
CIMSTRING uu CLASS;/*[字符集(UTF16),字符串,相对]*/
uint8_t*默认_标志;/*[唯一]*/
union CIMVAR*数据;/*[唯一]*/
uint32_t u2_4;
uint8_t u3_1;
}/*[flag(LIBNDR_flag_NOALIGN)、public、nopull、noprint、nopush]*/;
结构WbemClassObject{
uint8_t旗;
CIMSTRING\uuu SERVER;/*[字符集(UTF16),字符串,参考]*/
CIMSTRING _NAMESPACE;/*[ref,string,charset(UTF16)]*/
结构WbemClass*sup_class;/*[唯一]*/
结构WbemMethods*辅助方法;/*[唯一]*/
结构WbemClass*对象类;/*[唯一]*/
结构WbemMethods*对象方法;/*[唯一]*/
结构WbemInstance*实例;/*[唯一]*/
}
C#代码:

私有枚举CIMTYPE\u枚举
{
CIM_EMPTY=0,
CIM_SINT8=16,
CIM_UINT8=17,
CIM_SINT16=2,
CIM_UINT16=18,
CIM_SINT32=3,
CIM_UINT32=19,
CIM_SINT64=20,
CIM_UINT64=21,
CIM_REAL32=4,
CIM_REAL64=5,
CIM_布尔值=11,
CIM_字符串=8,
CIM_DATETIME=101,
CIM_REFERENCE=102,
CIM_CHAR16=103,
CIM_对象=13,
CIM_标志_数组=0x2000,
CIM_ARR_SINT8=CIM_FLAG_ARRAY | CIM_SINT8,
CIM_ARR_UINT8=CIM_FLAG_ARRAY | CIM_UINT8,
CIM_ARR_SINT16=CIM_FLAG_ARRAY | CIM_SINT16,
CIM_ARR_UINT16=CIM_FLAG_ARRAY | CIM_UINT16,
CIM_ARR_SINT32=CIM_FLAG_ARRAY | CIM_SINT32,
CIM_ARR_UINT32=CIM_FLAG_ARRAY | CIM_UINT32,
CIM_ARR_SINT64=CIM_FLAG_ARRAY | CIM_SINT64,
CIM_ARR_UINT64=CIM_FLAG_ARRAY | CIM_UINT64,
CIM_ARR_REAL32=CIM_FLAG_ARRAY | CIM_REAL32,
CIM_ARR_REAL64=CIM_FLAG_ARRAY | CIM_REAL64,
CIM_ARR_BOOLEAN=CIM_FLAG_ARRAY | CIM_BOOLEAN,
CIM_ARR_STRING=CIM_FLAG_ARRAY | CIM_STRING,
CIM_ARR_DATETIME=CIM_FLAG_ARRAY | CIM_DATETIME,
CIM_ARR_REFERENCE=CIM_FLAG_ARRAY | CIM_REFERENCE,
CIM_ARR_CHAR16=CIM_FLAG_ARRAY | CIM_CHAR16,
CIM_ARR_OBJECT=CIM_FLAG_ARRAY | CIM_OBJECT,
CIM_非法=0xfff,
CIM_类型掩码=0x2FFF
};
[StructLayout(LayoutKind.Sequential)]
公共结构WbemQualifier
{
public IntPtr name;/*[相对,字符串,字符集(UTF16)]*/
[Marshallas(UnmanagedType.U1)]公共字节;
公共IntPtr cimType;
公共IntPtr值;/*[开关_为(cimtype)]*/
}
[StructLayout(LayoutKind.Sequential)]
公共结构WbemQualifiers
{
[Marshallas(UnmanagedType.U4)]公共单元计数;
公共IntPtr项;//WbemQualifier
}
[StructLayout(LayoutKind.Sequential)]
公共结构WbemPropertyDesc
{
[Marshallas(UnmanagedType.U4)]uint cimtype;
ushort nr;
[Marshallas(UnmanagedType.U4)]单位偏移量;
[Marshallas(UnmanagedType.U4)]单元深度;
IntPtr限定符;//WbemQualifiers
}
[StructLayout(LayoutKind.Sequential)]
结构WbemProperty
{
public IntPtr name;/*[相对,字符串,字符集(UTF16)]*/
public IntPtr desc;//WbemPropertyDesc
}
[StructLayout(LayoutKind.Auto)]
公共结构字符串
{
[Marshallas(UnmanagedType.U4)]
公共单位计数;
[Marshallas(UnmanagedType.ByValArray)]
公共字节[]项;//字符串
}
[StructLayout(LayoutKind.Sequential)]
公共结构WbemMethods
{
公共卫生统计;
公众健康指数u0;
公共IntPtr方法;
}
[StructLayout(LayoutKind.Sequential)]
公共结构
{
公共字节u1_0;
public IntPtr\uu CLASS;/*[字符集(UTF16),字符串,相对]*/
公共IntPtr默认_标志;/*[唯一]*/
公共IntPtr数据;/*[唯一]*/
公共uint u2_4;
公共字节u3_1;
}
[StructLayout(LayoutKind.Sequential)]
公共结构WbemClass
{
[Marshallas(UnmanagedType.U1)]
公共字节u_0;
public IntPtr\uuuu CLASS;/*[字符集(UTF16),相对,字符串,null\u是\uFFFFFFFF]*/
[Marshallas(UnmanagedType.U4)]
公共单元数据大小;
公共IntPtr\uuu派生;//CIMSTRINGS
公共IntPtr限定符;//WbemQualifiers
[Marshallas(UnmanagedType.U4)]
公共单位财产计数;
公共IntPtr属性;//WbemProperty
公共IntPtr默认_标志;
公共IntPtr默认值;
}
[StructLayout(LayoutKind.Sequential)]
公共结构WbemClassObject
{
[Marshallas(UnmanagedType.U1)]
公共字节标志;
公共IntPtr服务器;
公共IntPtr Na