|  | 
3#
 
 
 楼主|
发表于 2019-11-27 18:31:09
|
只看该作者 
| 本帖最后由 baikunlun 于 2019-12-1 21:12 编辑 
 主要BUG记录:
 在有些电脑上,或者某些U盘,USB的探测结果并不准确,导致找不到U盘。
 可能是因为探测USB的方式过于简单,如下:
 
 使用以上API来判断是否USB,在我的win10和winxp上可以得到正确的返回码,在某些电脑上硬盘和U盘得到的相同的结果。复制代码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() 来获得错误码
 
   
 随后改用了IOCTL_STORAGE_QUERY_PROPERTY消息来获得磁盘的BusType
 
 
 
 
 | 
 |