FLT_PARAMETERS para IRP_MJ_WRITE união
O componente união a seguir é usado quando o campo MajorFunction da estrutura FLT_IO_PARAMETER_BLOCK para a operação é IRP_MJ_WRITE.
Sintaxe
typedef union _FLT_PARAMETERS {
... ;
struct {
ULONG Length;
ULONG Key;
LARGE_INTEGER ByteOffset;
PVOID WriteBuffer;
PMDL MdlAddress;
} Write;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Membros
Escrever: Estrutura contendo os seguintes membros.
Comprimento: Comprimento, em bytes, dos dados a serem gravados.
Key: valor de chave associado a um bloqueio de intervalo de bytes no arquivo de destino.
ByteOffset: deslocamento de byte inicial dentro do arquivo dos dados a serem gravados.
WriteBuffer: Ponteiro para um buffer que contém os dados a serem gravados no arquivo. Esse membro é opcional e pode ser NULL se um MDL for fornecido em MdlAddress. Veja os Comentários.
MdlAddress: Endereço de uma lista de descritores de memória (MDL) que descreve o buffer para o qual o membro WriteBuffer aponta. Esse membro é opcional e pode ser NULL se um buffer for fornecido em WriteBuffer. Veja os Comentários.
Comentários
A estrutura FLT_PARAMETERS para operações IRP_MJ_WRITE contém os parâmetros para uma operação de gravação representada por uma estrutura de dados de retorno de chamada (FLT_CALLBACK_DATA). Ele está contido em uma estrutura FLT_IO_PARAMETER_BLOCK.
Se um buffer WriteBuffer e MdlAddress forem fornecidos, é recomendável que os minifiltros usem o MDL. A memória para a qual WriteBuffer aponta é válida quando é um endereço de modo de usuário sendo acessado dentro do contexto do processo de chamada ou se é um endereço de modo kernel.
Se um minifiltro alterar o valor de MdlAddress, após seu retorno de chamada pós-operação, o Gerenciador de Filtros liberará o MDL atualmente armazenado em MdlAddress e restaurará o valor anterior de MdlAddress.
Se o bit IRP_MN_COMPLETE estiver definido em Iopb-MinorFunction>, MdlAddress será o endereço a ser enviado para CcMdlReadComplete.
Se o bit IRP_MN_MDL (e não o bit IRP_MN_COMPLETE) estiver definido em Iopb-MinorFunction>, MdlAddress será o endereço a ser enviado para CcPrepareMdlWrite.
IRP_MJ_WRITE pode ser uma operação baseada em IRP ou uma operação de E/S rápida.
Requisitos
Tipo de requisito | Requisito |
---|---|
Cabeçalho | Fltkernel.h (inclui Fltkernel.h) |