FLT_PARAMETERS para la unión de IRP_MJ_WRITE
El siguiente componente de unión se usa cuando se IRP_MJ_WRITE el campo MajorFunction de la estructura FLT_IO_PARAMETER_BLOCK de la operación.
Sintaxis
typedef union _FLT_PARAMETERS {
... ;
struct {
ULONG Length;
ULONG Key;
LARGE_INTEGER ByteOffset;
PVOID WriteBuffer;
PMDL MdlAddress;
} Write;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Miembros
Escritura: estructura que contiene los siguientes miembros.
Longitud: longitud, en bytes, de los datos que se van a escribir.
Key: valor de clave asociado a un bloqueo de intervalo de bytes en el archivo de destino.
ByteOffset: desplazamiento de bytes inicial dentro del archivo de los datos que se van a escribir.
WriteBuffer: puntero a un búfer que contiene los datos que se van a escribir en el archivo. Este miembro es opcional y puede ser NULL si se proporciona una MDL en MdlAddress. Vea Comentarios.
MdlAddress: dirección de una lista de descriptores de memoria (MDL) que describe el búfer al que apunta el miembro WriteBuffer . Este miembro es opcional y puede ser NULL si se proporciona un búfer en WriteBuffer. Vea Comentarios.
Comentarios
La estructura FLT_PARAMETERS para las operaciones de IRP_MJ_WRITE contiene los parámetros de una operación de escritura representada por una estructura de datos de devolución de llamada (FLT_CALLBACK_DATA). Está contenida en una estructura FLT_IO_PARAMETER_BLOCK.
Si se proporciona un búfer WriteBuffer y MdlAddress , se recomienda que los minifiltros usen mdL. La memoria a la que writeBuffer apunta es válida cuando se accede a una dirección en modo de usuario dentro del contexto del proceso de llamada o si es una dirección del modo kernel.
Si un minifiltro cambia el valor de MdlAddress, después de su devolución de llamada posterior a la operación, el Administrador de filtros liberará la MDL almacenada actualmente en MdlAddress y restaurará el valor anterior de MdlAddress.
Si el IRP_MN_COMPLETE bit se establece en Iopb-MinorFunction>, MdlAddress es la dirección que se va a enviar a CcMdlReadComplete.
Si el bit de IRP_MN_MDL (y no el bit de IRP_MN_COMPLETE) se establece en Iopb-MinorFunction>, MdlAddress es la dirección que se va a enviar a CcPrepareMdlWrite.
IRP_MJ_WRITE puede ser una operación basada en IRP o una operación de E/S rápida.
Requisitos
Tipo de requisito | Requisito |
---|---|
Encabezado | Fltkernel.h (incluya Fltkernel.h) |