Compartir a través de


Función NtFlushBuffersFileEx (ntifs.h)

La rutina NtFlushBuffersFileEx envía una solicitud de vaciado para un archivo determinado al sistema de archivos. Se puede establecer una marca de operación de vaciado opcional para controlar cómo se escriben los datos de archivo en el almacenamiento.

Sintaxis

__kernel_entry NTSYSCALLAPI NTSTATUS NtFlushBuffersFileEx(
  [in]  HANDLE           FileHandle,
  [in]  ULONG            Flags,
  [in]  PVOID            Parameters,
  [in]  ULONG            ParametersSize,
  [out] PIO_STATUS_BLOCK IoStatusBlock
);

Parámetros

[in] FileHandle

Identificador devuelto por NtCreateFile o NtOpenFile para el archivo cuyos búferes se vaciarán. Este parámetro es necesario y no puede ser NULL.

[in] Flags

Marcas de operación de vaciado. flags puede ser uno de los siguientes valores:

Valor Significado
0 (normal) Los datos de archivo y los metadatos de la caché de archivos se escribirán y el almacenamiento subyacente se sincroniza para vaciar su caché. Sistemas de archivos de Windows compatibles: NTFS, ReFS, FAT, exFAT.
FLUSH_FLAGS_FILE_DATA_ONLY Se escribirán los datos de archivo en la caché de archivos. No se escribe ningún metadato y el almacenamiento subyacente no se sincroniza para vaciar su caché. Esta marca no es válida con identificadores de volumen. Sistemas de archivos de Windows compatibles: NTFS, FAT, exFAT.
FLUSH_FLAGS_NO_SYNC Se escribirán los datos de archivo y los metadatos de la caché de archivos. El almacenamiento subyacente no se sincroniza para vaciar su caché. Esta marca no es válida con identificadores de volumen. Sistemas de archivos de Windows compatibles: NTFS, FAT, exFAT.
FLUSH_FLAGS_FILE_DATA_SYNC_ONLY Los datos del archivo especificado se escribirán desde la caché en memoria de Windows. Solo se vaciarán los metadatos necesarios para la recuperación de datos (la actualización de marca de tiempo se omitirá tanto como sea posible). El almacenamiento subyacente se sincroniza para vaciar su caché. Esta marca no es válida con identificadores de volumen o directorio. Sistemas de archivos de Windows compatibles: NTFS.

[in] Parameters

Puntero a un bloque con parámetros adicionales. Este parámetro debe establecerse actualmente en NULL.

[in] ParametersSize

Tamaño, en bytes, del bloque al que Parámetros apuntar. Este parámetro debe establecerse actualmente en 0.

[out] IoStatusBlock

Dirección del bloque de estado de E/S del autor de la llamada. Este parámetro es necesario y no puede ser NULL.

Valor devuelto

NtFlushBuffersFileEx devuelve STATUS_SUCCESS o un valor NTSTATUS adecuado, como uno de los siguientes:

Código devuelto Descripción
STATUS_MEDIA_WRITE_PROTECTED El archivo reside en un volumen protegido por escritura; se trata de un código de error.
STATUS_VOLUME_DISMOUNTED El archivo reside en un volumen que no está montado actualmente; se trata de un código de error.
STATUS_ACCESS_DENIED El archivo no tiene acceso de escritura ni de anexión.

Observaciones

Los controladores de minifiltro deben llamar a FltFlushBuffers2 en lugar de llamar a NtFlushBuffersFileEx.

Un controlador de filtro del sistema de archivos heredado puede llamar a NtFlushBuffersFileEx para emitir una solicitud de IRP_MJ_FLUSH_BUFFERS al sistema de archivos para un archivo determinado. La operación de vaciado es sincrónica.

Los autores de llamadas de NtFlushBuffersFileEx deben ejecutarse en IRQL = PASSIVE_LEVEL y con API de kernel especiales habilitadas.

En el caso de las llamadas desde controladores en modo kernel, las NtXxx y Zwversiones de Xxx de una rutina de Servicios del sistema nativo de Windows pueden comportarse de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones de NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 8
de la plataforma de destino de Universal
encabezado de ntifs.h (incluya Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL PASSIVE_LEVEL (consulte la sección Comentarios).

Consulte también

fltFlushBuffers2

IRP_MJ_FLUSH_BUFFERS

usar versiones Nt y Zw de las rutinas de servicios del sistema nativo

NtCreateFile

NtOpenFile