Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

Размер физического диска   Найти похожие ветки 

 
d_oleg   (2004-08-16 17:48) [0]

Подскажите пожалуйста, как можно определить размер _физического_ (не логического) диска? Поясню на примере: есть 80Гб диск, на нём создан раздел на 40Гб. Мне нужно узнать, что диск 80Гб, независимо от размера раздела.


 
Fay ©   (2004-08-16 17:56) [1]

DeviceIoControl


 
Dimaxx   (2004-08-16 22:23) [2]

type
 MEDIA_TYPE = (Unknown, F5_1Pt2_512, F3_1Pt44_512, F3_2Pt88_512, F3_20Pt8_512, F3_720_512, F5_360_512, F5_320_512, F5_320_1024, F5_180_512, F5_160_512, RemovableMedia, FixedMedia);

...

var
 H: THandle;
 R: cardinal;
 DG: packed record
   Cylinders: int64;
   MediaType: MEDIA_TYPE;
   TracksPerCylinder: cardinal;
   SectorsPerTrack: cardinal;
   BytesPerSector: cardinal;
 end;

...

H:=CreateFile("\\.\PHYSICALDRIVE0",GENERIC_READ,0,nil,OPEN_EXISTING,FILE_FLAG_RANDOM_ACCESS,0);
if H<>INVALID_HANDLE_VALUE then DeviceIOControl(H,458752,nil,0,@DG,sizeof(DG),R,nil);
CloseHandle(H);


Код для NT. Для неNT пока кода нет.

Перемножаем Cylinders*TracksPerCylinder*SectorsPerTrack*BytesPerSector и получаем емкость накопителя в байтах. Потом делим на 1073741824 - получаем в Гбайтах.

PHYSICALDRIVE0 - для Primary Master
PHYSICALDRIVE1 - для Primary Slave
PHYSICALDRIVE2 - для Secondary Master
PHYSICALDRIVE3 - для Secondary Slave


 
Dimaxx   (2004-08-17 22:05) [3]

Забыл написать, что 458752 это команда IOCTL_DISK_GET_DRIVE_GEOMETRY.


 
Игорь Шевченко ©   (2004-08-18 10:31) [4]

http://www.schevchenko.net.ru/SRC/DeviceIoControl_60.zip +
http://www.schevchenko.net.ru/SRC/Common_60.zip



Страницы: 1 вся ветка

Текущий архив: 2004.09.26;
Скачать: CL | DM;

Наверх




Память: 0.44 MB
Время: 0.033 c
14-1094308321
gn
2004-09-04 18:32
2004.09.26
Обзор вирусной активности (август 2004)


1-1094633983
Koala
2004-09-08 12:59
2004.09.26
Удаление файла


1-1094614063
nimble
2004-09-08 07:27
2004.09.26
Run Time, StringGrid &amp; PageControl


14-1094645941
Aspart
2004-09-08 16:19
2004.09.26
Для чего нужна оперативная память принтеру?


14-1094237837
Soft
2004-09-03 22:57
2004.09.26
Microsoft запантетовала человеческое тело.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский