Как определить тип привода? - PullRequest
4 голосов
/ 07 ноября 2010

Я пытаюсь выяснить тип устройства для конкретного диска.Я хотел бы знать, как это сделать на Mac OS X и Linux, но сейчас, если этого будет достаточно, достаточно Windows-решения.

так что, скажем, у меня есть диск H. Я могуопределить, является ли устройство съемным диском, с помощью функции Win32 API GetDriveType ().Я могу это выяснить и в Mac OS X.

Но то, что я не могу найти надежным способом, это тип устройства.Например, это флэш-накопитель USB, переносной жесткий диск (PHD) и т. Д.

Копаясь в реестрах в Windows, я не могу найти много информации.Хотя я бы предпочел использовать какой-нибудь API для этого, если это возможно, я буду использовать реестр, если потребуется.

На данный момент, что меня интересует, это ... это флешка (такможет отображать значок USB-накопителя в моей программе) или переносной жесткий диск (поэтому будет отображаться значок PHD).

Ответы [ 4 ]

3 голосов
/ 07 ноября 2010

Для Windows похоже, что SHGetFileInfo может помочь.Возможно, вы можете назвать это в корневой папке диска?См. http://msdn.microsoft.com/en-us/library/bb762179(VS.85).aspx.

Функции SH ... обычно те, которые использует Проводник, поэтому (при условии, что это работает) это должно дать вам точный значок, который вы видите в проводнике Windows ...

1 голос
/ 18 марта 2011

Используйте ранее упомянутый управляющий код IOCTL_STORAGE_QUERY_PROPERTY для извлечения структуры STORAGE_DEVICE_DESCRIPTOR .Часть структуры - перечисление STORAGE_BUS_TYPE , которое сообщит вам шину, на которой находится накопитель (USB, 1394, RAID, ATAPI, SCSI и т. Д.)

1 голос
/ 07 ноября 2010

Является ли класс устройства тем, что вы хотите?Если это так, вы можете попробовать libusb ( доступно для win32).Используйте функцию libusb_get_device_descriptor.

1 голос
/ 07 ноября 2010

Возможно, вы захотите взглянуть на DeviceIoControl и IOCTL_STORAGE_QUERY_PROPERTY. Например, вы можете определить, является ли устройство USB, указав StorageDeviceProperty и просмотрев элемент BusType. Член типа устройства также интересен.

Если вы не возражаете против отказа от поддержки XP, есть Служба виртуальных дисков , которая, как мне кажется, предоставляет такую ​​информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...