Freigeben über


Verwenden der aktuellen Dateiposition

Wenn Sie eine Datei erstellen oder öffnen, können Sie veranlassen, dass der E/A-Manager einen aktuellen Dateipositionszeiger erstellt, der dem Dateihandle zugeordnet ist. Sobald Sie dies getan haben, können Sie Daten lesen und in die aktuelle Dateiposition schreiben, und der E/A-Manager aktualisiert die Position automatisch um die Anzahl der gelesenen oder geschriebenen Bytes.

Standardmäßig verwaltet der E/A-Manager keinen aktuellen Dateipositionszeiger. Diese Standardeinstellung bietet Effizienz, da die korrekte Aufrechterhaltung der aktuellen Dateiposition erfordert, dass der E/A-Manager jeden Lese- und Schreibvorgang für das Dateiobjekt synchronisiert.

Um ein Handle zu erstellen, das über einen zugeordneten Zeiger für die aktuelle Dateiposition verfügt, geben Sie das SYNCHRONIZE-Zugriffsrecht im DesiredAccess-Parameter auf ZwCreateFile, IoCreateFile oder ZwOpenFile an, und geben Sie entweder FILE_SYNCHRONOUS_IO_ALERT oder FILE_SYNCHRONOUS_IO_NONALERT im Parameter CreateOptions oder OpenOptions an . Stellen Sie sicher, dass Sie nicht auch das zugriffsrecht FILE_APPEND_DATA angeben.

ZwReadFile und ZwWriteFile aktualisieren den aktuellen Dateipositionszeiger automatisch, sodass er direkt über die vom Vorgang betroffenen Daten verweist. Wenn Sie beispielsweise 20 Bytes ab Byteoffset 101 lesen, aktualisiert ZwReadFile die aktuelle Dateiposition auf 121.

Sie können die aktuelle Dateiposition untersuchen oder ändern, indem Sie ZwQueryInformationFile bzw. ZwSetInformationFile aufrufen. Legen Sie in beiden Fällen den FileInformationClass-Parameter auf FilePositionInformation fest.