Есть ли в Windows (XP-7) надежный способ программного различения USB-флоппи-дисководов и USB-флеш-накопителей на C ++?
В настоящий момент я использую WMI для получения обновлений при появлении нового Win32_LogicalDisk экземпляров обнаруживаются, а затем используются атрибут DriveType объекта LogicalDisk для определения базового типа. Это работает довольно хорошо, за исключением того, что и гибкие диски, и USB-устройства флэш-памяти имеют тип DriveType DRIVE_REMOVABLE, поэтому, чтобы отличить их (дискета от флэш-памяти), я использую _ 3_, чтобы выяснить, поддерживает ли устройство горячее подключение, и работал над принципом, который означал, что это был флэш-накопитель, а не дискета. Опять же, я думаю, что это работает довольно хорошо (хотя и немного неэффективно, используя как WDK API, так и WMI для получения информации) в случае внутренних дисководов гибких дисков, но, к сожалению, USB-дисководы гибких дисков также часто подключаются в горячем режиме, поэтому есть Я не вижу четкого способа отличить флеш-накопители от USB-флоппи-дисководов. Я знаю, что есть свойства, которые могут работать, например, проверка того, сопоставлен ли он с зарезервированными дисками A: или B (редактирование: актуально только в том случае, если на машине определенно есть дисковод гибких дисков - см. MS-KB: Как изменить присвоение букв дисков в Windows XP), или глядя на описание, но я бы действительно хотелось что то более надежное.
Извините за долгое объяснение, но просто хочу внести ясность! Спасибо