Максимальное количество дисков в окнах?

Я пытаюсь вычислить доступное дисковое пространство программно в окнах. Для этого мне нужно сначала получить список доступных дисков, а затем проверить, какие из них являются локальными дисками, а затем запросить доступные байты на каждом локальном диске.

Я немного застрял в первой части, где API представляет две функции:

Теперь, хотя позже я буду использовать строки, я бы предпочел использовать первый вариант для запросов. Тем не менее, в моей системе DWORD typedef-ed для "unsigned long", который составляет 4 байта, в то время как буквы дисков содержат только A-Z (26 - я думаю - символы). Очевидно, что в их системе можно определить более 26 дисков (хотя вряд ли они это сделают), поэтому мне было интересно, существует ли какое-либо соглашение для этих дисков. Может ли кто-нибудь указать мне на ресурс?

Спасибо.

Ответ 1

  • DWORD всегда 4 байта, независимо от системы (это тип Win32).

  • Максимум для букв диска в Windows - 26. Поскольку английский алфавит имеет только 26 букв:). Однако Windows позволяет два способа установить громкость:

    • на букву диска
    • в каталог (на томе NTFS). Вы можете подключить один том к нескольким местоположениям (но не более одной буквы диска, IIRC). Графический интерфейс для этой задачи представлен панелью управления → "Администрирование" → "Управление компьютером" → "Управление дисками".

Если вы хотите, чтобы более 26 дисков с дополнительными дисками были перенаправлены на уже активные диски и в порядке с их неправильной работой в большинстве программ, вы можете назначить больше с помощью следующего метода (будьте осторожны, они даже не появятся в файловом проводнике):

subst ♪: C:\Temp\
cd /D ♪:\

и удалить их (также они не сохраняются через перезагрузки):

subst /D ♪:

Вы можете перечислять все тома и их точки монтирования, как описано в в этой статье.

Ответ 2

Вы можете использовать WMI. Следующий запрос WMI должен содержать список всех дисков:

SELECT * FROM Win32_DiskDrive

Ответ 3

Не достаточно перечислить диски MS-DOS (кстати, их может быть не более 26 из них, хотя каждый может быть связан дважды, один раз глобально и один раз локально в вашем сеансе), томом может, например, монтируется в каталог. Вероятно, вы хотите перечислить все тома в системе, используя FindFirstVolume и др. Взгляните на связанный MSDN пример.