السلام عليكم
الكود الاتي يقوم بقراءة الــ MBR . الكود تم تجربته على نظام winXP .
فقط باستعمال CreateFile و ReadFile و CloseHandle .
//Add a Button and a Memo to your form
procedure TForm1.Button1Click(Sender: TObject);
var
iHandle: THandle;
blSuccess: boolean;
achBuffer: array [1..512] of char;
crdRead: cardinal;
str:string;
i,j:integer;
begin
Memo1.Clear;
iHandle:=
CreateFile(
PChar('.PHYSICALDRIVE0'), //0 the first harddisk (Primary Master)
GENERIC_READ,
FILE_SHARE_WRITE,
nil,
OPEN_EXISTING,
0,
0);
if iHandle=INVALID_HANDLE_VALUE then
begin
Memo1.lines.add('Failed to create file .');
exit;
end;//if
blSuccess:=ReadFile(iHandle,
achBuffer,
512,
crdRead,
nil
);
if blSuccess then
begin
i:=1;
while i <= 512 do
begin
j:=i;
str:='';
while j begin
str:=str+IntToHex(ord(achBuffer[j]),2)+' ';
inc(j);
end;
Memo1.lines.add(str);
inc(i,15);
end;
end
else
Memo1.lines.add('Failed to read MBR.');//if
CloseHandle(iHandle);
end;للكتابه على MBR فهناك كود في قسم الفيجوال سي يقوم بذلك . يفضل عدم تجربه الكتابه على الـ MBR .
بالنسبه لقراءه وكتابه الـ sectors التابعه للـ harddisk - ان شاء الله - اضع الكود لاحقا .
(f)