|
3#
楼主 |
发表于 2019-11-27 18:31:09
|
只看该作者
本帖最后由 baikunlun 于 2019-12-1 21:12 编辑
主要BUG记录:
在有些电脑上,或者某些U盘,USB的探测结果并不准确,导致找不到U盘。
可能是因为探测USB的方式过于简单,如下:
- BOOL DeviceIoControl(
- (HANDLE) hDevice, // handle to device
- IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER, // dwIoControlCode
- NULL, // lpInBuffer
- 0, // nInBufferSize
- (LPVOID) lpOutBuffer, // output buffer
- (DWORD) nOutBufferSize, // size of output buffer
- (LPDWORD) lpBytesReturned, // number of bytes returned
- (LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
- );
- //调用后,使用 GetLastError() 来获得错误码
复制代码 使用以上API来判断是否USB,在我的win10和winxp上可以得到正确的返回码,在某些电脑上硬盘和U盘得到的相同的结果。
随后改用了IOCTL_STORAGE_QUERY_PROPERTY消息来获得磁盘的BusType
|
|