Максимальное количество дисков в окнах?
Я пытаюсь вычислить доступное дисковое пространство программно в окнах. Для этого мне нужно сначала получить список доступных дисков, а затем проверить, какие из них являются локальными дисками, а затем запросить доступные байты на каждом локальном диске.
Я немного застрял в первой части, где 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 пример.