在c#中读取PVOID,我应该读多少位?

时间:2011-10-06 13:29:18

标签: c# usb

我正在读取具有URB类型的USB数据包。 URB标题在http://msdn.microsoft.com/en-us/library/windows/hardware/ff540409(v=vs.85).aspx定义为

 struct _URB_HEADER {
    USHORT      Length;
    USHORT      Function;
    USBD_STATUS Status;
    PVOID       UsbdDeviceHandle;
    ULONG       UsbdFlags;
 };

我应该为PVOID读取多少位?

由于

2 个答案:

答案 0 :(得分:2)

由于这是指针类型,因此它取决于您的平台。 x86为32位; x64为64位。

我对这些库并不熟悉,但你应该使用这些字段吗?您分享的链接显示“保留。请勿使用”。

修改: 无视最后的陈述。我刚刚意识到结构只是标题。当然,你需要知道该字段的大小才能到达身体。 :)

答案 1 :(得分:2)

感谢您的评论 - 阅读它们,看起来像是使用

 byte [] ptr_bytes = rdr.ReadBytes(System.IntPtr.Size);

将根据操作系统正确提供指针的大小。