Hallo,
ich versuche mich ja nun schon eine Weile an deviceIOcontrol.
Nch viel hin und her funktioniert nun auch neiniges.
Aber IOCTL_DISK_GET_DRIVE_LAYOUT will nicht.
Kann mir jemand helfen:
Delphi-Quellcode:
var
i : Integer;
Device : string;
hDevice : Cardinal;
dummy : DWORD;
bigBuf : DWord;
r : DRIVE_LAYOUT_INFORMATION;
begin
hDevice := CreateFile(PChar('\\.\PHYSICALDRIVE0'), GENERIC_WRITE or GENERIC_READ,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, OPEN_EXISTING, 0, 0);
if hDevice <> INVALID_HANDLE_VALUE then begin
bigbuf:=sizeof(DRIVE_LAYOUT_INFORMATION) + 15 * sizeof(PARTITION_INFORMATION);
if not DeviceIOControl(hDevice, IOCTL_DISK_GET_DRIVE_LAYOUT, nil, 0, @r,
bigbuf, dummy, nil) then begin
showmessage(SysErrorMessage( GetLastError )+' '+inttostr(getlasterror));
end
end;
CloseHandle(hDevice);
end;
Ohne "GENERIC_WRITE or GENERIC_READ" in CreateFile kommt
Nr. 5: Zugriff verweigert.
Mit kommt:
Nr. 122: Der an einen Systemaufruf übergebene Bereich ist zu klein.
Ich habe bigbuf natürlich vergrößert. Ab einer gewissen Größe kommt das CPU-Fenster, davor der gleiche Fehler.
Was mache ich falsch?
Gruß
Mattze