将C / C ++ Struct转换为C#.Net CF WinCE
嗨,我试图将C / C ++ Strcut转换为C#
C / C ++ Struct看起来像:
typedef struct _NDISUIO_QUERY_OID { NDIS_OID Oid; PTCHAR ptcDeviceName; UCHAR Data[sizeof(ULONG)]; } NDISUIO_QUERY_OID, *PNDISUIO_QUERY_OID;
我的C#Struct是:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct _NDISUIO_QUERY_OID { public uint Oid; [MarshalAs(UnmanagedType.LPWStr)] public string ptcDeviceName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8*sizeof(uint))] public string Data; };
我对转换后的结构有点怀疑,有人能澄清这个转换吗?
如果可能,任何人都可以告诉我任何教程或一些有助于将数据类型或结构从c / c ++转换为C#.Net CF的引用。
谢谢 :)
在你之前的一个问题中 ,@ ocacke表示你将无法在紧凑框架中使用MarshalAs(UnmanagedType.LPWStr)
。 他断言你必须将该字段声明为IntPtr
,并手动编组。
但是,此MSDN文档指出MarshalAs(UnmanagedType.LPWStr)
在紧凑框架下工作。 我想我更倾向于相信MSDN文档。
最终成员也被宣布错误。 SizeConst
必须是sizeof(uint)
。