Программное различие между USB-дисководом и USB-флешкой в Windows

В Windows (XP-7) существует ли надежный способ программной дифференциации между USB-дисководами гибких дисков и USB-накопителями в C ++?

На данный момент я использую WMI для получения обновлений, когда новыеWin32_LogicalDisk экземпляры обнаруживаются, а затем с помощью атрибута DriveType объекта LogicalDisk выясняют базовый тип. Это работает довольно хорошо, за исключением того, что флоппи-дисководы и USB-флешки имеют DriveTypeDRIVE_REMOVABLEтак что, чтобы различать те (дискеты и флэш-память), я используюIOCTL_STORAGE_GET_HOTPLUG_INFO Интерфейс, чтобы выяснить, является ли устройство горячим подключением, и работало на основном, что означало, что это была флешка, а не дискета. Опять же, я думаю, что это работает довольно хорошо (если немного неэффективно, используя API WDK и WMI для получения информации) в случае внутренних дисководов гибких дисков, но, к сожалению, USB-дисководы гибких дисков также можно подключать в большинстве случаев, поэтому Я не вижу четкого различия между флеш-накопителем и USB-дисководом. Я знаю, что есть свойства, которыемай работать, например, проверять, подключен ли он к зарезервированным дискам A: или B (редактировать: актуально, только если на машине определенно есть дисковод гибких дисков - см.MS-KB: как изменить назначение букв дисков в Windows XP), или, глядя на описание, но мне бы хотелось что-то более надежное.

Извините за длинное объяснение, но просто хотел быть ясным! Спасибо

Ответы на вопрос(4)

Ваш ответ на вопрос