Su Windows (XP-7), esiste un modo affidabile di differenziare in modo programmatico tra unità floppy USB e unità flash USB in C++?Differenziazione programmatica tra USB Floppy Drive e USB Flash Drive in Windows
Al momento, sto utilizzando WMI per ottenere gli aggiornamenti quando vengono rilevate nuove istanze Win32_LogicalDisk
e quindi utilizzando l'attributo DriveType dell'oggetto LogicalDisk per calcolare un tipo di base. Funziona abbastanza bene, tranne che le unità floppy e le unità flash USB sono entrambi DriveType DRIVE_REMOVABLE
, quindi per distinguere tra quelli (floppy e flash), sto usando l'interfaccia IOCTL_STORAGE_GET_HOTPLUG_INFO
per capire se il dispositivo è hot-plug e funzionava sul preside ciò significava che era un flash drive e non un dischetto. Ancora una volta, penso che funzioni abbastanza bene (anche se un po 'inefficiente, usando sia l'API WDK che WMI per ottenere informazioni) nel caso delle unità floppy interne, ma sfortunatamente le unità floppy USB sono anche hotplugable per un sacco di volte, quindi c'è nessun modo chiaro per distinguere tra flash e unità floppy USB, che posso vedere. So che ci sono proprietà che possono funzionare, come controllare se è mappato alle unità riservate A: o B (modifica: rilevante solo se la macchina ha sicuramente un lettore floppy - vedi MS-KB: How to change drive letter assignments in Windows XP), o guardando la descrizione, ma io Mi piace davvero qualcosa di un po 'più affidabile.
Ci scusiamo per la lunga spiegazione, ma volevo solo essere chiari! Grazie
A: e B: sono _ervitati per i floppy_? Fonte? – MSalters
L'ho ottenuto da [MS-KB: come cambiare l'assegnazione delle lettere di unità in Windows XP] (http://support.microsoft.com/kb/307844), e il modo in cui lo esprimono, ma come indica anche , se la macchina non dispone di un'unità floppy, possono essere utilizzate per altre unità, quindi è probabilmente un termine improprio e certamente non indicativo del fatto che l'unità sia un'unità floppy o meno. Riformulerò la domanda per renderla un po 'più chiara. – user82116
Ah, questo è da un punto di vista dell'utente, quando stai cambiando manualmente i driveletters. Ha senso quindi, stavo pensando da un punto di vista del sistema operativo. – MSalters