
Сообщение от
Black Cat / Era CG
Алгоритм бы мне... конкретный...
Код:
function DPBcrc(var DPB:TBootDPB):byte;
var ii:integer;
begin
Result:=$66;
for ii:=0 to DPBSize-2 do {31 bytes}
Result:=Result+byte(PChar(@DPB)[ii]);
end;
Ну и проверяется как-то так:
Код:
procedure GetBOOT(FName: string; FS: TFileStream);
var xsum: byte;
i, d, CalculatedSize: integer;
begin
BOOT.Damaged:=False;
FS.Seek(PartitionOffset, soFromBeginning);
FS.Read(BOOT, sizeof(BOOT));
BOOT.BOOTvalid:=DPBcrc(BOOT.DPB)=BOOT.DPB.CRC;
{........}
Отсюда (во вложении):