Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как в делфи узнать сколько на диске секторов?

Георгий Профи (793), на голосовании 6 лет назад
Как в делфи узнать сколько на диске секторов? Типо вот так: ShowMessage(IntToStr(DiskSectors();));
Дополнен 6 лет назад
Причем не свободного пространства а всего
Голосование за лучший ответ
East RX Просветленный (24495) 6 лет назад
type TDiskGeometry = packed record
Cylinders: Int64;
MediaType: DWORD;
TracksPerCylinder: DWORD;
SectorsPerTrack: DWORD;
BytesPerSector: DWORD;
end;

var
h: THandle; b: DWORD;
dg: TDiskGeometry;

h := CreateFile('\\.\PhysicalDrive0', GENERIC_READ,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
DeviceIoControl(h, IOCTL_DISK_GET_DRIVE_GEOMETRY,
nil, 0, @dg, SizeOf(TDiskGeometry), b, nil);
ShowMessage(IntToStr(dg.Cylinders * dg.TracksPerCylinder * dg.SectorsPerTrack));

https://docs.microsoft.com/en-us/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol
Похожие вопросы