Share via


Uso de la posición del archivo actual

Al crear o abrir un archivo, puede hacer que el administrador de E/S cree un puntero de posición de archivo actual asociado al identificador de archivo. Una vez hecho esto, puede leer y escribir datos en la posición de archivo actual y el administrador de E/S actualizará automáticamente la posición por el número de bytes leídos o escritos.

De forma predeterminada, el administrador de E/S no mantiene un puntero de posición de archivo actual. Este valor predeterminado proporciona eficacia, ya que mantener correctamente la posición del archivo actual requiere que el administrador de E/S sincronice cada operación de lectura y escritura en el objeto de archivo.

Para crear un identificador que tenga un puntero de posición de archivo actual asociado, especifique el derecho de acceso SYNCHRONIZE en el parámetro DesiredAccess en ZwCreateFile, IoCreateFile o ZwOpenFile, y FILE_SYNCHRONOUS_IO_ALERT o FILE_SYNCHRONOUS_IO_NONALERT en el parámetro CreateOptions o OpenOptions . Asegúrese de que no especifique también el derecho de acceso FILE_APPEND_DATA.

ZwReadFile y ZwWriteFile actualizan automáticamente el puntero actual de posición de archivo para que apunte justo más allá de los datos afectados por la operación. Por ejemplo, si lee 20 bytes a partir del desplazamiento de bytes 101, ZwReadFile actualizará la posición del archivo actual a 121.

Puede examinar o cambiar la posición del archivo actual llamando a ZwQueryInformationFile o ZwSetInformationFile, respectivamente. En cualquier caso, establezca el parámetro FileInformationClass en FilePositionInformation.