最近在调试一个PC操作USB Massstorage设备的工具,通过DeviceIoControl()函数读取约1-2M的数据,但是传入数据长度以后函数返回错误,原因是长度超过了规定的transfer len。从网上找了半天,在国外论坛发现一个类似的问题解决,即:用IOCTL_STORAGE_QUERY_PROPERTY 命令得到一个Max transfer length,然后根据实际情况解决,没有具体说明。我自己定的方向是,将数据分段连续接收,所以需要动态地知道Max transfer length,话不多说,直接上方法:
通过IOCTL_STORAGE_QUERY_PROPERTY 读取一个STORAGE_ADAPTER_DESCRIPTOR的结构,这个结构中的MaximumTransferLength就是要Transfer length的限值。
<p>
</p><p> int MaxTransferLen = 0;<