Programowo rozróżniając napęd dyskietek USB i napęd flash USB w systemie Windows

Czy w systemie Windows (XP-7) istnieje niezawodny sposób programowego rozróżniania stacji dyskietek USB i dysków flash USB w C ++?

W tej chwili używam WMI do pobierania aktualizacji, gdy są noweWin32_LogicalDisk wykrywane są instancje, a następnie za pomocą atrybutu DriveType obiektu LogicalDisk można określić typ podstawowy. Działa to całkiem dobrze, z wyjątkiem tego, że napędy dyskietek i dyski flash USB są typu DriveTypeDRIVE_REMOVABLE, więc aby odróżnić te (dyskietki od pamięci flash), używamIOCTL_STORAGE_GET_HOTPLUG_INFO Interfejs do sprawdzenia, czy urządzenie jest hotpluggable i pracował nad głównym, co oznaczało, że był to dysk flash, a nie dyskietka. Ponownie, myślę, że działa to całkiem dobrze (jeśli jest trochę nieefektywne, używając zarówno WDK API, jak i WMI, aby uzyskać informacje) w przypadku wewnętrznych napędów dyskietek, ale niestety dyskietki USB są także często podłączane do sieci, więc jest nie ma wyraźnego sposobu na odróżnienie napędów dyskietek flash i USB, które widzę. Wiem, że są takie właściwościmoże działa, jak sprawdzanie, czy jest mapowane na zarezerwowane dyski A: lub B (edycja: dotyczy tylko wtedy, gdy komputer zdecydowanie ma napęd dyskietek - patrzMS-KB: Jak zmienić przypisania liter dysku w systemie Windows XP), lub patrząc na opis, ale naprawdę chciałbym coś bardziej niezawodnego.

Przepraszam za długie wyjaśnienie, ale po prostu chciałem być jasne! Dzięki

questionAnswers(4)

yourAnswerToTheQuestion