Utilizzo della posizione del file corrente
Quando si crea o si apre un file, è possibile che il gestore di I/O crei un puntatore di posizione file corrente associato all'handle di file. Al termine, è possibile leggere e scrivere dati nella posizione del file corrente e il gestore di I/O aggiornerà automaticamente la posizione in base al numero di byte letti o scritti.
Per impostazione predefinita, il gestore di I/O non mantiene un puntatore alla posizione del file corrente. Questa impostazione predefinita garantisce efficienza, perché per mantenere correttamente la posizione del file corrente è necessario che il gestore di I/O sincronizzi ogni operazione di lettura e scrittura sull'oggetto file.
Per creare un handle con un puntatore alla posizione del file corrente associato, specificare il diritto di accesso SYNCHRONIZE nel parametro DesiredAccess per ZwCreateFile, IoCreateFile o ZwOpenFile e FILE_SYNCHRONOUS_IO_ALERT o FILE_SYNCHRONOUS_IO_NONALERT nel parametro CreateOptions o OpenOptions . Assicurarsi di non specificare anche il diritto di accesso FILE_APPEND_DATA.
ZwReadFile e ZwWriteFile aggiornano automaticamente il puntatore alla posizione del file corrente in modo che punti appena oltre i dati interessati dall'operazione. Ad esempio, se si leggono 20 byte a partire dall'offset di byte 101, ZwReadFile aggiornerà la posizione del file corrente a 121.
Puoi esaminare o modificare la posizione corrente del file chiamando rispettivamente ZwQueryInformationFile o ZwSetInformationFile. In entrambi i casi, impostare il parametro FileInformationClass su FilePositionInformation.