Compartir a través de


Función FltFlushBuffers2 (fltkernel.h)

Un controlador de minifiltro llama a FltFlushBuffers2 para enviar una solicitud de vaciado al sistema de archivos para un archivo determinado.

Sintaxis

NTSTATUS FLTAPI FltFlushBuffers2(
  PFLT_INSTANCE      Instance,
  PFILE_OBJECT       FileObject,
  ULONG              FlushType,
  PFLT_CALLBACK_DATA CallbackData
);

Parámetros

Instance

[in] Puntero de instancia opaco para la instancia del controlador minifiltro que llama. Este parámetro es necesario y no puede ser NULL.

FileObject

[in] Puntero de objeto de archivo para el archivo o volumen que se va a vaciar. Este parámetro es necesario y no puede ser NULL.

FlushType

[in] Especifica el tipo de vaciado que debe hacer el sistema de archivos en el archivo. FlushType puede ser uno de los siguientes:

Valor de operación FlushType Descripción
0 Si fileObject es para un archivo, se escribirán los datos de archivo y los metadatos de la memoria caché de archivos y el almacenamiento subyacente se sincronizará para vaciar su caché. Si fileObject es para un volumen, el sistema de archivos hará que los datos de archivo y los metadatos de todos los archivos modificados del volumen se escriban y el almacenamiento subyacente se sincronizará para vaciar su caché. Esta operación es equivalente a FltFlushBuffers.
FLT_FLUSH_TYPE_FLUSH_AND_PURGE Igual que 0 (FltFlushBuffers), excepto que la memoria caché también se purga después de que se complete el vaciado.
FLT_FLUSH_TYPE_FILE_DATA_ONLY Si el archivo está en un sistema de archivos NTFS, solo 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 si FileObject es para un volumen.
FLT_FLUSH_TYPE_NO_SYNC Si el archivo está en un sistema de archivos NTFS, se escribirán los datos de archivo y los metadatos de la caché de archivos. El almacenamiento subyacente no se sincronizará para vaciar su caché. Esta marca no es válida si FileObject es para un volumen.
FLT_FLUSH_TYPE_DATA_SYNC_ONLY Si el archivo está en un sistema de archivos NTFS, se escribirán los datos de archivo en la caché de archivos. No se escribe ningún metadato. El almacenamiento subyacente se sincroniza para vaciar su caché. Esta marca no es válida si fileObject es para un volumen o directorio.

CallbackData

[in/optional] Puntero a la estructura opcional FLT_CALLBACK_DATA usada para propagar la extensión IRP del autor de la llamada. Consulte FltPropagateIrpExtension.

Valor devuelto

fltFlushBuffers2 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.

Observaciones

Un controlador de minifiltro puede llamar a FltFlushBuffers2 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 y se emite a las instancias debajo de la instancia de especificada.

Si el archivo está en un sistema de archivos NTFS, el minifiltro puede controlar el tipo de vaciado a través del parámetro FlushType.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 10, versión 1903
encabezado de fltkernel.h

Consulte también

fltFlushBuffers

fltPropagateIrpExtension

IRP_MJ_FLUSH_BUFFERS