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 |