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 de controlador de minifiltro que llama. Este parámetro es obligatorio 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 obligatorio 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 la operación FlushType Descripción
0 Si FileObject es para un archivo, se escribirán los datos del archivo y los metadatos de la 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 tanto los datos de archivo como 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), salvo 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 de 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 de FLT_CALLBACK_DATA opcional que se usa 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.

Comentarios

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 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 Value
Cliente mínimo compatible Windows 10, versión 1903
Encabezado fltkernel.h

Consulte también

FltFlushBuffers

FltPropagateIrpExtension

IRP_MJ_FLUSH_BUFFERS