unidades unidad una son que los logicas letra identifica duros duro disquete discos disco cuál cuales computadora cambiar winapi

winapi - una - unidad d de la computadora



Obtener el tipo de dispositivo específico de una letra de unidad (2)

Esto parece útil: ¿Cómo puedo determinar qué dispositivos USB están conectados a una computadora?

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

Salida de muestra (debe ser un árbol):

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

Espero que no todo el almacenamiento USB se describa como "Dispositivo de almacenamiento masivo USB". Si lo hace, verifique el nombre del volumen o autorun.inf, si corresponde.

Como Microsoft es uno de los inventores de USB, es poco probable que necesite esta información de Linux , pero podría recopilarse para términos de búsqueda como "Pendrive" y "Flash Drive".

Quiero detectar cuándo se inserta una tarjeta SD (u otra tarjeta) en el lector de tarjetas. Sé sobre WM_DEVICECHANGE pero necesito obtener información específica del tipo de dispositivo dada la letra de la unidad. Por ejemplo, quiero distinguir entre cualquier tarjeta en el lector de tarjetas de una unidad flash "normal". GetDriveType() no parece ser lo suficientemente refinado. ¿Cuáles son mis otras opciones?

Estoy contento con una solución de Windows 7. No necesito compatibilidad con versiones anteriores.

¿Es este tipo de refinamiento posible todo?

He encontrado este tema que no proporciona una respuesta satisfactoria. Este se siente como el camino a seguir, pero no hay código de muestra o punteros a código de muestra. Es increíble que nadie haya juntado una muestra de trabajo para una solicitud tan común.

[EDITAR]

También he encontrado esto . La muestra proporcionada tiene algunos errores, pero después de corregirla todavía no obtengo ningún resultado. Para un dispositivo que tiene una tarjeta SD insertada, obtengo un BusTypeUnknown lugar de BusTypeSd en pDeviceDesc.BusType . Esto parecía sencillo y aún fallado.


No creo que sea posible, ya que los lectores de tarjetas presentan su almacenamiento de la misma manera que una unidad flash normal para el sistema operativo. Ambos son dispositivos de clase de almacenamiento masivo USB. Aquí está el artículo de Wikipedia en esta clase de dispositivo. El sistema operativo no tiene forma de distinguir entre esos dos tipos de dispositivos.