SetFilePointer(hDevice, (Sector-1) * SectorSize, [color=#ff0000][b]nil[/b][/color], FILE_BEGIN );
also wenn ich das seh, dann kann dieses nur auf die ersten 4 GB der Partition zugreifen.
ich hoffe seine Platte ist nicht größer, denn sonst werden bei Positionen über 4 GB (also ab Sektor 8388608) falsche Sektoren ausgelesen!
das FileSeek ... sei froh, daß es da auch eine 64-Bitvariante von gibt (Delphi hat es da eigentlich nicht so mit solchen Funktionen (es mag immernoch seine 32 Bit zu sehr)
PS: das 64-Bit-FileSeek macht intern das
Delphi-Quellcode:
var i8: Int64;
i8 := Int64(Sector-1) * SectorSize;
SetFilePointer(THandle(
Handle), Int64Rec(i8).Lo, @Int64Rec(i8).Hi, FILE_BEGIN);
PSS: das nächste mal bitte einach im
MSDN/
PSDK nachlesen wie gewüschte Funktionen verwendet werden müssen.
Obwohl man eigentlich allein aus den Parameternamen den Grund hätte schon erkennen können
Code:
SetFilePointer(hFile: THandle; lDistanceToMove: [color=#ff0000]Longint;[/color]
lpDistanceToMoveHigh: [color=#ff0000]Pointer[/color]; dwMoveMethod: DWORD)
Ach und mal eine Frage, warum leßt ihr denn nicht gleich die Platte selber komplett aus?