我有几个USB驱动器连接到WinXP SP3计算机,我需要在程序中区分它们 - 我需要找出哪个驱动器盘符对应哪个设备(在这种情况下,一个设备对应一个卷)。我可以使用
此外,使用devcon或设备管理器,我可以看到设备ID:
然而,我还没有找到链接设备ID和卷ID/字母的方法,就像“安全地移除硬件”对话框所做的那样(因此我认为这是可能的):
![Generic volume - A:](https://istack.dev59.com/6h4sd.webp)
(来源:piskvor.org)
正如您所看到的,这些是我在devcon中看到的相同设备以及mountvol所看到的相同卷;但到目前为止,我还没有发现它们之间的联系。
我找到了一些相关的问题,但这些问题似乎使用“无论您首先找到的是您的USB设备”的方法,这在我的情况下不是非常有用,因为将连接几个类似的设备(同一供应商,通常具有相同的产品类型)。
mountvol
获取它们的卷ID和驱动器盘符,看起来像这样:C:\WINDOWS\> mountvol
\\?\Volume{bdb681b2-1ddf-11dd-bf71-806d6172696f}\
C:\
\\?\Volume{6a8784f8-7406-11dd-a8c3-001e8c829b67}\
A:\
此外,使用devcon或设备管理器,我可以看到设备ID:
C:\WINDOWS\> devcon resources *STOR*
STORAGE\REMOVABLEMEDIA\7&190C24E5&0&RM
Name: Generic volume
STORAGE\VOLUME\1&30A96598&0&SIGNATURED84ED84EOFFSET7E00LENGTH2543150400
Name: Generic volume
USBSTOR\DISK&VEN_KINGSTON&PROD_DATATRAVELER2.0&REV_1.00\0803240752536&0
Name: Kingston DataTraveler2.0 USB Device
然而,我还没有找到链接设备ID和卷ID/字母的方法,就像“安全地移除硬件”对话框所做的那样(因此我认为这是可能的):
![Generic volume - A:](https://istack.dev59.com/6h4sd.webp)
(来源:piskvor.org)
正如您所看到的,这些是我在devcon中看到的相同设备以及mountvol所看到的相同卷;但到目前为止,我还没有发现它们之间的联系。
我找到了一些相关的问题,但这些问题似乎使用“无论您首先找到的是您的USB设备”的方法,这在我的情况下不是非常有用,因为将连接几个类似的设备(同一供应商,通常具有相同的产品类型)。
编辑:
@MSalters 的回答看起来很有前途:在XP上,HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
有 REG_BINARY
值 \DosDevices\x:
(其中 x
是 [A-Z]);注释是正确设备的名称(例如
\DosDevices\A:
= "\??\STORAGE#RemovableMedia#7&190c24e5&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\"
,对应于设备列表中上面看到的
STORAGE\REMOVABLEMEDIA\7&190C24E5&0&RM
)。
将看看这是否是正确的方法。