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 |