正确的结构编组

时间:2019-07-26 08:17:49

标签: c# structure marshalling

我有一个结构:

typedef struct _wfs_bcr_caps
{
WORD             wClass;
BOOL             bCompound;
BOOL             bCanFilterSymbologies;
LPUSHORT         lpwSymbologies;
DWORD            dwGuidLights[32];
LPSTR            lpszExtra;
BOOL             bPowerSaveControl;
BOOL             bAntiFraudModule;
}

我需要在C#中正确复制此结构。

但是我对LPUSHORT类型有疑问。有人可以帮我为lpwSymbologies属性设置正确的元帅属性吗?

1 个答案:

答案 0 :(得分:0)

LPUSHORT只是指向ushort值的长指针。您可以将其作为IntPtr封送,然后使用Marshal.ReadInt16Marshal.ReadInt32读取一个值(因为您使用的是无符号short)。非托管到托管类型转换表中的here描述了另一个选项,例如将LP<struct>转换为[In] ref <struct>