gpt4 book ai didi

winapi - 从驱动器号获取特定的设备类型

转载 作者:行者123 更新时间:2023-12-03 14:25:14 25 4
gpt4 key购买 nike

我想检测何时将SD(或其他卡)插入读卡器。我知道WM_DEVICECHANGE,但是我需要获得给定驱动器号的特定设备类型信息。例如,我想区分读卡器和“普通”闪存驱动器中的任何卡。 GetDriveType()似乎不够完善。我还有其他选择吗?

我对Windows 7解决方案感到满意。我不需要向后兼容。

这种改进是否可行?

我发现this topic不能提供令人满意的答案。 This one感觉很可行,但没有示例代码或指向示例代码的指针。令人难以置信的是,没有人为如此普通的要求拼凑出一个工作样本。

[编辑]

我也有found this。提供的示例有一些错误,但修复后仍然没有结果。对于插入了SD卡的设备,我得到的是BusTypeUnknown而不是BusTypeSd中的pDeviceDesc.BusType。这似乎很简单,但仍然失败。

最佳答案

这看起来很有用:How Can I Determine Which USB Devices are Connected to a Computer?

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colDevices = objWMIService.ExecQuery _
("Select * From Win32_USBControllerDevice")

For Each objDevice in colDevices
strDeviceName = objDevice.Dependent
strQuotes = Chr(34)
strDeviceName = Replace(strDeviceName, strQuotes, "")
arrDeviceNames = Split(strDeviceName, "=")
strDeviceName = arrDeviceNames(1)
Set colUSBDevices = objWMIService.ExecQuery _
("Select * From Win32_PnPEntity Where DeviceID = '" & strDeviceName & "'")
For Each objUSBDevice in colUSBDevices
Wscript.Echo objUSBDevice.Description
Next
Next


样本输出(应该是一棵树):

USB Root Hub
Microsoft USB IntelliMouse Web
Microsoft USB IntelliMouse Web
USB Mass Storage Device
Disk drive
Generic volume
USB Root Hub
USB Root Hub


我希望不是所有的USB存储设备都将自己描述为“ USB大容量存储设备”。如果是这样,请检查卷名称或autorun.inf(如果有)。

微软是USB的发明者之一,您不太可能需要 this Linux info,但可以将其收获为“ Pendrive”和“ Flash Drive”之类的搜索词。

关于winapi - 从驱动器号获取特定的设备类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9248876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com