正确引用在C#中的结构我有一个结构字符串不与布局
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct SERVER_USB_DEVICE
{
USB_HWID usbHWID;
byte status;
bool bExcludeDevice;
bool bSharedManually;
ulong ulDeviceId;
ulong ulClientAddr;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
string usbDeviceDescr;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
string locationInfo;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
string nickName;
}
当我通过它下面一个Win32 DLL函数:
[DllImport ("abc.dll", EntryPoint="EnumDevices", CharSet=CharSet.Ansi)]
public static extern bool EnumDevices(IntPtr lpUsbDevices,
ref ulong pulBufferSize,
IntPtr lpES);
我得到一些缺少文本字符串中结构的成员。
假设SERVER_USB_DEVICE.usbDeviceDescr包含值“海量存储设备”,这是不对的,应该包含值“USB大容量存储设备”
什么是错误的代码?
USB_HWID是什么样的? – 2009-08-28 08:04:00
我不认为这里有什么错,字符串不能从头开始被截断,如果你认为你错过了一些文本,它必须从最后,请检查设备/帮助正确。 – 2009-08-28 08:06:46
我检查了文档通过实际上是坦率地说,我在vC++中编码相同的东西,它工作正常,但不是在c#中。 – 2009-08-28 09:18:50