Ich konnte SetFilePointerEx
ganz gut verwenden, wenn nur die Position eingestellt wird.Wie verwende ich SetFilePointerEx, um zum Ende einer physischen Festplatte zu gehen?
SetFilePointerEx(PD, 512, @PositionVar, FILE_BEGIN);
SetFilePointerEx(PD, 0, @PositionVar, FILE_CURRENT);
Beide arbeiten; Ich kann Positionen festlegen und sogar meine aktuelle überprüfen. Aber wenn ich FILE_END
gemäß der Dokumentation einstellen, egal was der zweite Parameter ist und ob ich einen Zeiger für den dritten Parameter zur Verfügung stelle oder nicht, scheitert es sogar an einem gültigen Handle, das viele andere Operationen ohne Fehler verwenden können.
Zum Beispiel:
SetFailed := SetFilePointerEx(PD, 0, @PositionVar, FILE_END);
SetFailed := SetFilePointerEx(PD, 0, nil, FILE_END);
Was ich gesagt, es funktioniert nicht. Ich arbeite mit einem Griff zu einer physischen Festplatte und es hat definitiv ein Ende. SetFilePointer
funktioniert gut, aber es ist nur ein bisschen mehr Ärger als ich es möchte.
Es ist nicht das Ende der Welt, sondern was passiert.
Schöne bearbeiten Rob, Titel ist jedoch nicht unbedingt korrekt. Ich habe nur versucht, den Platz von den physischen Medien zu bekommen. Was theoretisch mit der Methode gemacht werden könnte, scheint jedoch kein gültiger Weg mehr zu sein. Suchbegriffe für jemanden mit dem Problem, wo in dem alten Titel, aber ich schätze die Post aufräumen, obwohl ich bezweifle, dass jemand Hilfe aus dieser bestimmten Q & A-Sitzung finden wird. Danke, wer es gewählt hat, ich kann endlich abstimmen :) – SuicideClutchX2
@Suicide, lies die Antworten, die du zu dieser Frage hast: http://StackOverflow.com/Questions/4567422/ Ich habe dir bereits gesagt, dass SetFilePointer nicht funktioniert Mit FILE_END und Disk-Geräten habe ich Ihnen eine Routine gegeben, die Ihnen hilft, den Dateizeiger überall hin mit einem int64 zu bewegen. David zeigte Ihnen eine schöne Möglichkeit, die Gerätegröße ohne Verwendung von Hacky-Code zu erhalten. Warum musst du die gleiche Frage noch einmal stellen? –
war besser vor Änderung –