En Windows (XP-7), ¿existe una forma confiable de diferenciar programáticamente entre unidades de disquete USB y unidades flash USB en C++?Diferenciación programática entre unidad de disquete USB y unidad flash USB en Windows
Por el momento, estoy usando WMI para obtener actualizaciones cuando se detectan nuevas instancias Win32_LogicalDisk
y luego uso el atributo DriveType del objeto LogicalDisk para descubrir un tipo básico. Esto funciona bastante bien, excepto que las unidades de disquete y unidades flash USB son de DriveType DRIVE_REMOVABLE
, por lo que para diferenciar entre ellas (disquete o flash), estoy usando la interfaz IOCTL_STORAGE_GET_HOTPLUG_INFO
para averiguar si el dispositivo es hotpluggable, y estaba funcionando en el principal, eso significaba que era una unidad flash y no un disquete. De nuevo, creo que esto funciona bastante bien (aunque es un poco ineficiente, usando tanto WDK API como WMI para obtener información) en el caso de unidades de disquete internas, pero desafortunadamente las unidades de disquetes USB también se calientan mucho la mayoría de las veces, por lo que hay no hay una manera clara de diferenciar entre las unidades de disquete flash y USB, que puedo ver. Sé que hay propiedades que pueden funcionar, como verificar si está mapeada a las unidades reservadas A: o B (editar: solo relevante si la máquina definitivamente tiene una disquetera - ver MS-KB: How to change drive letter assignments in Windows XP), o mirar la descripción, pero yo Realmente me gustaría algo un poco más confiable.
Disculpa por la larga explicación, ¡pero solo quería ser claro! Gracias
A: y B: ¿están reservados para disquetes? ¿Fuente? – MSalters
Lo obtuve de [MS-KB: Cómo cambiar las asignaciones de letras de unidad en Windows XP] (http://support.microsoft.com/kb/307844), y es la forma en que lo dicen, pero como también lo señala , si la máquina no tiene una unidad de disquete, entonces pueden usarse para otras unidades, por lo que podría decirse que es un nombre inapropiado, y ciertamente no indica que la unidad sea una unidad de disquete o no. Reescribiré la pregunta para que quede un poco más clara. – user82116
Ah, eso es desde el punto de vista del usuario, cuando está cambiando manualmente las letras de unidad. Tiene sentido entonces, estaba pensando desde un punto de vista del sistema operativo. – MSalters