Unión FLT_PARAMETERS para IRP_MJ_PREPARE_MDL_WRITE
El siguiente miembro de unión FLT_PARAMETERS se usa cuando FLT_IO_PARAMETER_BLOCK.MajorFunction es IRP_MJ_PREPARE_MDL_WRITE.
Sintaxis
typedef union _FLT_PARAMETERS {
... ;
struct {
LARGE_INTEGER FileOffset;
ULONG POINTER_ALIGNMENT Length;
ULONG POINTER_ALIGNMENT Key;
PMDL *MdlChain;
} PrepareMdlWrite;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Miembros
PrepareMdlWrite: estructura que incluye los siguientes miembros.
FileOffset: byte inicial dentro del archivo almacenado en caché.
Length: longitud, en bytes, de los datos que se van a escribir en el archivo almacenado en caché.
Key: valor de clave asociado a un bloqueo de intervalo de bytes en el archivo de destino. Si el intervalo que se va a escribir se superpone o es un subrango de un intervalo bloqueado exclusivamente dentro del archivo, este parámetro debe ser la clave para ese bloqueo exclusivo. El bloqueo exclusivo debe mantenerse en el proceso primario del subproceso que realiza la llamada; de lo contrario, este parámetro se omite.
MdlChain: puntero a una variable que recibe un puntero a una cadena de una o varias listas de descriptores de memoria (MDL) que describen las páginas que contienen los datos que se van a escribir.
Comentarios
IRP_MJ_PREPARE_MDL_WRITE es una operación de E/S rápida. Hace lo mismo que IRP_MJ_WRITE + IRP_MN_MDL excepto por la siguiente diferencia:
- La operación basada en IRP configura el almacenamiento en caché en el archivo si aún no está almacenado en caché antes de realizar el trabajo de MDL.
- Se produce un error en la operación de E/S rápida si el archivo aún no está almacenado en caché.
La estructura FLT_PARAMETERS para las operaciones de IRP_MJ_PREPARE_MDL_WRITE contiene los parámetros de una operación PrepareMdlWrite de E/S rápida. La operación se representa mediante una estructura de datos de devolución de llamada (FLT_CALLBACK_DATA). Se encuentra en una estructura FLT_IO_PARAMETER_BLOCK, con los parámetros de la operación en la estructura FLT_IO_PARAMETER_BLOCK a la que apunta Iopb.
Si se produce un error en una solicitud IRP_MJ_PREPARE_MDL_WRITE de E/S rápida, el emisor de la E/S determina cómo volver a emitir la solicitud. Por ejemplo, la solicitud se podría volver a emitir como una operación basada en IRP mediante IRP_MJ_WRITE + IRP_MN_MDL.
Requisitos
Tipo de requisito | Requisito |
---|---|
Encabezado | Fltkernel.h (incluya Fltkernel.h) |