FLT_PARAMETERS per l'unione IRP_MJ_READ
Il componente di unione seguente viene utilizzato quando il campo MajorFunction della struttura FLT_IO_PARAMETER_BLOCK per l'operazione viene IRP_MJ_READ.
Sintassi
typedef union _FLT_PARAMETERS {
... ;
struct {
ULONG Length;
ULONG POINTER_ALIGNMENT Key;
LARGE_INTEGER ByteOffset;
PVOID ReadBuffer;
PMDL MdlAddress;
} Read;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Membri
Lettura: Struttura contenente i membri seguenti.
Lunghezza: lunghezza, in byte, dei dati da leggere.
Chiave: valore della chiave associato a un blocco di intervallo di byte nel file di destinazione.
ByteOffset: offset di byte iniziale all'interno del file dei dati da leggere.
ReadBuffer: puntatore a un buffer che riceve i dati letti dal file. Questo membro è facoltativo e può essere NULL se viene fornito un MDL in MdlAddress. Vedere la sezione Note.
MdlAddress: indirizzo di un elenco di descrittori di memoria (MDL) che descrive il buffer a cui punta il membro ReadBuffer . Questo membro è facoltativo e può essere NULL se viene fornito un buffer in ReadBuffer. Vedere la sezione Note.
Osservazioni:
La struttura FLT_PARAMETERS per le operazioni IRP_MJ_READ contiene i parametri per un'operazione di lettura rappresentata da una struttura di dati di callback (FLT_CALLBACK_DATA). È contenuto in una struttura FLT_IO_PARAMETER_BLOCK.
Se vengono forniti sia un buffer ReadBuffer che MdlAddress , è consigliabile che i minifiltri usino il file MDL. La memoria a cui ReadBuffer punta è valida quando si tratta di un indirizzo in modalità utente a cui si accede nel contesto del processo chiamante o se si tratta di un indirizzo in modalità kernel.
Se un minifiltro modifica il valore di MdlAddress, dopo il callback dell'operazione successiva, Gestione filtri libera il file MDL attualmente archiviato in MdlAddress e ripristina il valore precedente di MdlAddress.
Se il bit IRP_MN_COMPLETE è impostato in Iopb-MinorFunction>, MdlAddress è l'indirizzo da inviare a CcMdlReadComplete.
Se il bit IRP_MN_MDL (e non il bit IRP_MN_COMPLETE) è impostato in Iopb-MinorFunction>, MdlAddress è l'indirizzo da inviare a CcMdlRead.
IRP_MJ_READ può essere un'operazione basata su IRP o un'operazione di I/O veloce.
Requisiti
Tipo di requisito | Requisito |
---|---|
Intestazione | Fltkernel.h (include Fltkernel.h) |