FLT_PARAMETERS für IRP_MJ_READ Union
Die folgende Union-Komponente wird verwendet, wenn das Feld "MajorFunction" der FLT_IO_PARAMETER_BLOCK Struktur für den Vorgang IRP_MJ_READ ist.
Syntax
typedef union _FLT_PARAMETERS {
... ;
struct {
ULONG Length;
ULONG POINTER_ALIGNMENT Key;
LARGE_INTEGER ByteOffset;
PVOID ReadBuffer;
PMDL MdlAddress;
} Read;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Member
Read: Structure containing the following members.
Länge: Länge der zu lesenden Daten in Bytes.
Schlüssel: Schlüsselwert, der einer Bytebereichssperre in der Zieldatei zugeordnet ist.
ByteOffset: Byteoffset beginnt in der Datei der zu lesenden Daten.
ReadBuffer: Zeiger auf einen Puffer, der die Daten empfängt, die aus der Datei gelesen werden. Dieses Element ist optional und kann NULL sein, wenn eine MDL in MdlAddress bereitgestellt wird. Siehe Hinweise.
MdlAddress: Adresse einer Speicherdeskriptorliste (MDL), die den Puffer beschreibt, auf den das ReadBuffer-Element verweist. Dieses Element ist optional und kann NULL sein, wenn in ReadBuffer ein Puffer bereitgestellt wird. Siehe Hinweise.
Hinweise
Die FLT_PARAMETERS-Struktur für IRP_MJ_READ-Vorgänge enthält die Parameter für einen Lesevorgang, der durch eine Rückrufdatenstruktur (FLT_CALLBACK_DATA) dargestellt wird. Sie ist in einer FLT_IO_PARAMETER_BLOCK-Struktur enthalten.
Wenn sowohl ein ReadBuffer- als auch ein MdlAddress-Puffer bereitgestellt werden, wird empfohlen, dass Minifilter die MDL verwenden. Der Speicher, auf den ReadBuffer verweist, ist gültig, wenn es sich um eine Benutzermodusadresse handelt, auf die im Kontext des aufrufenden Prozesses zugegriffen wird, oder wenn es sich um eine Kernelmodusadresse handelt.
Wenn ein Minifilter den Wert von MdlAddress ändert, gibt der Filter-Manager nach dem Rückruf nach dem Vorgang die MDL frei, die derzeit in MdlAddress gespeichert ist, und stellt den vorherigen Wert von MdlAddress wieder her.
Wenn das IRP_MN_COMPLETE Bit in Iopb-MinorFunction> festgelegt ist, ist MdlAddress die Adresse, die an CcMdlReadComplete gesendet werden soll.
Wenn das IRP_MN_MDL Bit (und nicht das IRP_MN_COMPLETE Bit) in Iopb-MinorFunction> festgelegt ist, ist MdlAddress die Adresse, die an CcMdlRead gesendet werden soll.
IRP_MJ_READ kann ein IRP-basierter Vorgang oder ein schneller E/A-Vorgang sein.
Anforderungen
Anforderungstyp | Anforderung |
---|---|
Header | Fltkernel.h (einschließlich Fltkernel.h) |