dass er auf den MBR zugreifen möchte
Delphi-Quellcode:
type
TMBR =
Array of Byte;
Function GetMBR (
const DiskNumber: Byte;
const MBRSize: Cardinal;
out MBR: TMBR): Boolean;
var
nBytesRead ,
fHandle : Cardinal;
begin
fHandle := CreateFile(
PChar('
\\.\PHYSICALDRIVE'+IntToStr(DiskNumber)),
GENERIC_READ, FILE_SHARE_WRITE,
nil,
OPEN_EXISTING,
0, 0);
if fHandle = INVALID_HANDLE_VALUE
then
begin
Result := False;
ShowMessage('
CreateFile - Fehler: Invalid Handle' +#13#10#13#10+
'
Hinweis: liegen Admin-Rechte vor?');
exit;
end;
SetLength(MBR, MBRSize);
Result := ReadFile(fHandle, MBR[0], MBRSize, nBytesRead,
nil);
if nBytesRead-1 <> High(MBR)
then Result := False;
if not Result
then
begin
ShowMessage('
ReadFile - Fehler' +#13#10#13#10+
'
Es sollten '+IntToStr(High(MBR))+ '
bytes gelesen werden' +#13#10+
'
aber nur '+ IntToStr(nBytesRead-1) +'
bytes waren lesbar!');
end;
CloseHandle(fHandle);
end;
So könnte ein möglicher Aufruf aussehen:
Delphi-Quellcode:
procedure x;
var
MyMBR: TMBR;
begin
if GetMBR(0, 512, MyMBR) then // <<-- 512 als MBR Größe ist nicht immer korrekt, also vorher diesen Wert ermitteln, das dient nur als Beispiel
begin
// mach was mit MyMBR
end;
end;
So könnte ein möglicher Ansatz für MBR sein.