Цикл хоть все диски? - PullRequest
       0

Цикл хоть все диски?

0 голосов
/ 17 февраля 2011

Ну, я работаю с информацией о жестком диске ( Как определить тип конкретного диска? И все хорошо, все работает. Но я не знаю, как "проверить" или «зациклить» все диски (жесткие диски, USB-диски, CD / DVD / Bluray, карты памяти и т. д.), как зациклить их? Поскольку я не хочу использовать GetDeviceType для каждой буквы.

Ответы [ 3 ]

2 голосов
/ 17 февраля 2011

Взгляните на FindFirstVolume, FindNextVolume и FindVolumeClose.Вот полный пример из MSDN: Отображение путей к томам .

1 голос
/ 17 февраля 2011

Вы также можете использовать GetLogicalDriveStrings.

1 голос
/ 17 февраля 2011

Ну, вы можете позвонить GetLogicalDrives(), что даст вам битовую маску использованных / неиспользованных дисков:

Возвращаемое значение

Если функция завершается успешно, возвращаемое значение представляет собой битовую маску, представляющую доступные на данный момент дисководы. Битовая позиция 0 (младший бит) - это диск A, битовая позиция 1 - это диск B, битовая позиция 2 - это диск C и т. Д.

Итак, если бит 0 имеет значение 0, диск A не используется, если он имеет значение 1, он используется. Аналогично для других букв дисков.

однако, чтобы получить информацию о конкретном диске, GetDeviceType() - это правильный инструмент - существуют ли какие-либо ограничения, препятствующие его использованию?

GetLogicalDrives()
loop through result:
   what is the bit value for the current drive?
    - 0: drive not used, continue
    - 1: drive in use, check what type it is, using GetDeviceType()
...