如何检查USB插槽中是否存在空闪存卡读卡器?

how to check if empty flash card reader is present in usb slot?

本文关键字:存在 是否 闪存卡 读卡器 插槽 何检查 检查 USB      更新时间:2023-10-16

我使用GetLogicalDrives()来获取计算机上的所有驱动器,但该功能不仅显示现成的卷,还显示没有卡的空闪存读卡器。接下来,GetDriveType()显示此类卷的代码 2。无论闪存卡是否存在于插槽中,都无关紧要。一些多读卡器会产生许多这样的不存在的驱动器,问题是我如何确定此类卷的正确状态。

尝试在这种不存在的驱动器上调用FindFirstFile()即使在控制台应用程序中也会产生视觉错误:Exception Processing Message c0000013 Parameters 75b3bf7c 4 75b3bf7c 75b3bf7c出现此类错误后,代码将继续运行,但此烦人的错误会在窗口中向用户显示,因为应用程序将发生重大崩溃。

因此,处理此问题的一种方法是使用FindFirstFile,但我不知道有什么方法可以消除用户的错误。

终于找到了!这里成功的关键是GetVolumeInformation().

当 USB 插槽中有空读卡器时,它返回 0 并将最后一个错误设置为 21。 :)

这里有一些很好的选择:

  • 如何检测硬盘驱动器是否通过 USB 连接?

特别:

if( 2 == ::getDriveType( <driveletter> ))

函数的返回值:

DRIVE_UNKNOWN 0:无法确定驱动器类型。

DRIVE_NO_ROOT_DIR 1:根路径无效;例如,指定路径上没有装入卷。

DRIVE_REMOVABLE 2:驱动器具有可移动介质;例如,软盘驱动器、拇指驱动器或闪存卡读卡器。

DRIVE_FIXED 3:驱动器具有固定介质;例如,硬盘驱动器或闪存驱动器。

DRIVE_REMOTE 4:驱动器是远程(网络)驱动器。

DRIVE_CDROM 5:驱动器是 CD-ROM 驱动器。

DRIVE_RAMDISK 6:驱动器是 RAM 磁盘。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa364939(v=vs.85).aspx