Уважаемый bartram! Я не зря написал "Обращаю Ваше внимание, что информация нужна именно о HDD, т.е. о самом железном накопителе, что стоит у Вас в системном блоке, а не о логических дисках, что показывает Вам система, типа "логический диск (D)" и тд.", т.кю в приведенном Вами примере описывается именно о ЛОГИЧЕСКИХ дисках. Список физических дисков я получаю следующим образом:
| Код | function TForm1.FindPhisicalDisk: boolean; // вывод всех физ дисков в ComboBox Var i: integer; hDrive: THandle;
DiskGeometry: TDiskGeometry; junk: DWord; TotalSize, TotalSectors: int64; //Общий размер begin for i := 0 to 255 do begin hDrive := CreateFile(PChar('\\.\PHYSICALDRIVE' + IntToStr(i)), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0) ; if hDrive <> INVALID_HANDLE_VALUE then begin Result := DeviceIoControl(hDrive,IOCTL_DISK_GET_DRIVE_GEOMETRY,nil,0, @DiskGeometry,SizeOf(TDiskGeometry),junk,nil) and (junk = SizeOf(TDiskGeometry)); if Result then begin TotalSize := DiskGeometry.TracksPerCylinder * DiskGeometry.SectorsPerTrack * DiskGeometry.Cylinders * DiskGeometry.BytesPerSector ; DriveComboBox.Items.Add(IntToStr(i)+ ' [' + IntToStr(TotalSize div 1073741824)+',' +IntToStr(TotalSize mod 1073741824) +' Гб]') ; TotalSectors:=DiskGeometry.Cylinders*DiskGeometry.TracksPerCylinder*DiskGeometry.SectorsPerTrack; end; end else break ; CloseHandle(hDrive) ; end ; end;
|
Эта функция выводит как раз все HDD. Но как мне достать информацию о названии диска я так и не разобрался.
З.Ы. Чтоб было понятнее что я хочу : панель управления -> администрирование -> управление компьютером -> запоминающие устройства -> управление дисками. |