Tengo varias unidades USB conectadas a una computadora WinXP SP3, y tengo que distinguirlas programáticamente - Necesito encontrar qué letra de unidad corresponde a qué dispositivo (en este caso, un dispositivo ~ un volumen). Puedo conseguir sus identificadores de volumen y letras de unidad mediante mountvol
, buscando algo como esto:Buscar qué unidad corresponde a qué dispositivo de almacenamiento masivo USB en WinXP
C:\WINDOWS\> mountvol
\\?\Volume{bdb681b2-1ddf-11dd-bf71-806d6172696f}\
C:\
\\?\Volume{6a8784f8-7406-11dd-a8c3-001e8c829b67}\
A:\
Además, el uso devcon o el Administrador de dispositivos, puedo ver los ID de dispositivo:
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
Sin embargo, no han encontrado una forma de vincular el ID de dispositivo y el ID de volumen/carta, al igual que el cuadro de diálogo "quitar hardware con seguridad" hace (por lo tanto, supongo que es posible):
Generic volume - A: http://stuff.piskvor.org/safely_remove.png
Como puede ver, estos son los mismos dispositivos que veo en devcon y el mismo volumen que mountvol ve; pero hasta ahora no he encontrado el vínculo entre ellos.
He encontrado algunos relatedquestions, pero esos parecen utilizar el enfoque "lo que encuentres primero es tu dispositivo USB", que no es muy útil en mi caso, ya que habrá varios dispositivos similares (el mismo proveedor, a menudo el mismo tipo de producto) conectado.
Editar:
@MSalters 'respuesta parece prometedor: En XP, HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
tiene REG_BINARY
valores \DosDevices\x:
(donde es x
[A-Z]); el comentario es (UTF-16) nombre del dispositivo correcto (por ejemplo
\DosDevices\A:
= "\??\STORAGE#RemovableMedia#7&190c24e5&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\"
, que corresponde a
STORAGE\REMOVABLEMEDIA\7&190C24E5&0&RM
visto más arriba en la lista de dispositivos).
a ver si ese es el camino a seguir.
¿Alguna vez encontró la manera de hacer esto? También estoy tratando de determinar el volumen montado para un dispositivo de almacenamiento masivo USB. Gracias. –
@Stephen Nutt: No, en realidad no; era demasiado complicado, había pasado demasiado tiempo cavando en él, en comparación con la tarea general; el uso de API no documentadas puede ser demasiado complicado. (Además, los cambios en la tarea general han planteado la necesidad de esto para mí) – Piskvor
@Stephen Nutt: Aunque he abandonado este esfuerzo en Windows, ahora he encontrado una forma de hacerlo en Linux, si estás interesado: http://stackoverflow.com/questions/3881449/find-which-drive-corresponds-to-which-usb-mass-storage-device-in-linux – Piskvor