IRP_MJ_FLUSH_BUFFERS (controladores de filtro y FS)

Cuándo se envió

El Administrador de E/S, otros componentes del sistema operativo y otros controladores en modo kernel envían IRP_MJ_FLUSH_BUFFERS solicitudes cuando los datos almacenados en búfer deben vaciarse en el disco. Se puede enviar, por ejemplo, cuando una aplicación en modo de usuario ha llamado a una función Win32 como FlushFileBuffers. (Para los controladores del sistema de archivos y los controladores de filtro del sistema de archivos, llamar a CcFlushCache es preferible enviar un IRP).

Todos los controladores de filtro y sistema de archivos que mantienen búferes internos para los datos deben controlar este IRP para que los cambios en los datos de archivo o los metadatos se puedan conservar en los apagados del sistema.

Operación: controladores del sistema de archivos

El controlador del sistema de archivos debe vaciar en el disco los datos o metadatos importantes asociados al objeto de archivo y completar el IRP. Para obtener más información sobre cómo controlar este IRP, estudie el ejemplo FASTFAT.

Operación: controladores de filtro del sistema de archivos heredados

El controlador de filtro debe vaciar en el disco los datos o metadatos importantes asociados al objeto de archivo y pasar este IRP al controlador inferior siguiente de la pila.

Parámetros

Un sistema de archivos o un controlador de filtro llama a IoGetCurrentIrpStackLocation con el IRP especificado para obtener un puntero a su propia ubicación de pila en el IRP, que se muestra en la lista siguiente como IrpSp. (IrP se muestra como Irp). El controlador puede usar la información que se establece en los siguientes miembros del IRP y la ubicación de pila de IRP en el procesamiento de una solicitud de búferes de vaciado:

  • DeviceObject es un puntero al objeto de dispositivo de destino.

  • Irp->IoStatus apunta a una estructura de IO_STATUS_BLOCK que recibe el estado de finalización final e información sobre la operación solicitada.

  • IrpSp->FileObject apunta al objeto de archivo asociado a DeviceObject.

    El parámetro IrpSp-FileObject> contiene un puntero al campo RelatedFileObject, que también es una estructura de FILE_OBJECT. El campo RelatedFileObject de la estructura FILE_OBJECT no es válido durante el procesamiento de IRP_MJ_FLUSH_BUFFERS y no se debe usar.

  • IrpSp->MajorFunction se establece en IRP_MJ_FLUSH_BUFFERS.

Consulte también

CcFlushCache

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_FLUSH_BUFFERS (referencia del kernel de WDK)