29. marts 2001 - 10:18Der er
8 kommentarer og 1 løsning
Harddisk info.
Jeg skal bruge informationer om Harddisk på det fysiske niveau. specielt skal jeg bruge en viden om hvormange harddiske der sidder i maskiner og hvilke partioner den er indelt i ...
PS. Jeg kender selv funktionen API GetVolumeInformation()
Det står også i MSDOS techRef. Det er BIOS Kald de virker, det er muligt du kan slippe afsted med noget Win. men jeg tror det ikke hvis Partion Magic og den slags boot\'er jo alle i dos hvis de skal pille for alvor.
Man skal brugen en funktion her hedder DeviceIoControl(). Før du kan bruge den skal man først prote Winioctl.h til Delphi. (godt jeg havde gjort det for længe siden)
Hvis du så vil vide hvormange cylindere din HD har så skriver du:
procedure ReadBoot(Drive: Char); var BytesRead: Cardinal; H: THandle; _DISK_GEOMETRY : DISK_GEOMETRY; begin H := CreateFile(PChar(Format(\'\\\\.\\%s:\', [UpCase(Drive)])), GENERIC_READ, FILE_SHARE_WRITE or FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if H = INVALID_HANDLE_VALUE then raise Exception.Create(SysErrorMessage(GetLastError)); try (* BOOL DeviceIoControl(
HANDLE hDevice, // handle to device of interest DWORD dwIoControlCode, // control code of operation to perform LPVOID lpInBuffer, // pointer to buffer to supply input data DWORD nInBufferSize, // size of input buffer LPVOID lpOutBuffer, // pointer to buffer to receive output data DWORD nOutBufferSize, // size of output buffer LPDWORD lpBytesReturned, // pointer to variable to receive output byte count LPOVERLAPPED lpOverlapped // pointer to overlapped structure for asynchronous operation ); *) DeviceIoControl( h, IOCTL_DISK_GET_DRIVE_GEOMETRY, nil, 0, @_DISK_GEOMETRY, sizeof(_DISK_GEOMETRY), BytesRead, nil ); form1.Caption := IntToStr(_DISK_GEOMETRY.Cylinders); finally CloseHandle(H) end; end;
Til at starte med bruger jeg den her : IOCTL_DISK_GET_DRIVE_GEOMETRY
Så kan jeg tage hul på resten bagefter ....
Vent lige 10 min så får du et eksempel. Jens B
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.