Вопрос № 83370: Здравствуйте уважаемые эксперты.
У меня следующий вопрос.
1.Как программно определить количество жестких дисков ПК и их емкость.
2. Как программно определить - получен ли заданный логический диск с помощью команды subst (сравнение на сов...
Вопрос № 83.370
Здравствуйте уважаемые эксперты.
У меня следующий вопрос.
1.Как программно определить количество жестких дисков ПК и их емкость.
2. Как программно определить - получен ли заданный логический диск с помощью команды subst (сравнение на совпадение с размером другого логического диска не предлагать)
Буду благодарен открытому коду
Отправлен: 20.04.2007, 05:12
Вопрос задал: Zlm (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: PGM
Здравствуйте, Zlm!
1. Вот так получается список жестких дисков
d := GetLogicalDrives;
for i := 0 to 31 do
if (d and ($01 shl i)) <> 0 then begin
s := Chr(Ord('A')+i)+':'+#0;
if GetDriveType(PChar(s)) = DRIVE_FIXED then "что-то делаем"
end;
Емкость и количество свободного места GetDiskFreeSpace/GetDiskFreeSpaceEx
2. С этим вопросом никогда не сталкивался - могу только общие советы дать. Для приведенной выше процедуры subst будет FIXED драйвом. Предлагаю сравнить метку и серийный номер логического диска, которые легко получить через GetVolumeInformation (там же и тип файловой системы). Правда возникает вопрос, кто из них родитель, а кто получен через subst, посмотрите может какие флаги есть. Еще можно получить PARTITION_INFORMATION для физических дисков (DeviceIOControl), но я не уверен, что там есть информация о логических
буквах - посмотрите на эту тему в MSDN.
Ответ отправил: PGM (статус: 5-ый класс)
Ответ отправлен: 20.04.2007, 12:21 Оценка за ответ: 5 Комментарий оценки: спасибоЮ буду разбираться