-
GetLogicalDrives GetDriveType спасибо спасибо. Ну и еще вопрос. Как получить информацию такого рода.
контроллер IDE/ATAPI PCMCIA диск (H) или Запоминающее устроиство для USB диск (I)
-
через WMI, наверно класс Win32_DiskDrive
-
> через WMI, наверно > класс Win32_DiskDrive
А подробние можно.
-
> А подробние можно.
можно - msdn.com
-
-
раскрою тему: мне необходимо работать с ВЗУ тип PCMCIA. При этом программа в автоматически должна определять есть ли такое или его нет на компе (я не имею слот а саму флеш). Изыскания решения ввели меня в уныние и вот почему. Используя функции I := GetLogicalDriveStrings() и далее по I GetDriveType(); вроде и однозначно отвечала мне кто есть кто. До определенного момента. вставил флеш размером 512м, а она возьми да и определись как основной диск (DRIVE_FIXED). Ну и попутно мелькнула мысль что USB флеш будет DRIVE_REMOVABLE, а это уже не моя задача. Понятно что винда это отслеживает. Но вот как? Может кто ответит. а?
-
> винда это отслеживает. Но вот как?
plug-and-play контроллер устройства оповещает систему, что в него что-то воткнули. Винда в свою очередь рассылает сообщение WM_DEVICECHANGE
вообще, много чего можно узнать из реестра отсюда, например HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
-
Свершилось делюсь и жду критиков. Подход следующий.
Получаю список всех дисков: GetLogicalDriveStrings();
Лезу в реестр HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCMCIA за что спасибо clickmaker © (да открываю ключи только на чтение) PCMCIA али USB здесь не суть. Собираю имена всех подкаталогов. Далее по списку дисков через DeviceIoControl получаю паспорт диска (производитель и т.д.) Далее сравнеие паспортов диска с списком из реестра. Совпало хорошо PCMCIA(USB) есть нет плохо. проверял на NT,XP (PCMCIA шт. 10 от разных производителей ну личную USB проверил проверку вынесла и PCMCIA тоже)
|