FLT_PARAMETERS für IRP_MJ_WRITE Union
Die folgende Union-Komponente wird verwendet, wenn das Feld "MajorFunction" der FLT_IO_PARAMETER_BLOCK Struktur für den Vorgang IRP_MJ_WRITE ist.
Syntax
typedef union _FLT_PARAMETERS {
... ;
struct {
ULONG Length;
ULONG Key;
LARGE_INTEGER ByteOffset;
PVOID WriteBuffer;
PMDL MdlAddress;
} Write;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Member
Write: Structure containing the following members.
Länge: Länge der zu schreibenden Daten in Bytes.
Schlüssel: Schlüsselwert, der einer Bytebereichssperre in der Zieldatei zugeordnet ist.
ByteOffset: Byteoffset beginnt innerhalb der Datei der zu schreibenden Daten.
WriteBuffer: Zeiger auf einen Puffer, der die daten enthält, die in die Datei geschrieben werden sollen. 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 WriteBuffer-Element verweist. Dieses Element ist optional und kann NULL sein, wenn in WriteBuffer ein Puffer bereitgestellt wird. Siehe Hinweise.
Hinweise
Die FLT_PARAMETERS Struktur für IRP_MJ_WRITE-Vorgänge enthält die Parameter für einen Schreibvorgang, der durch eine Rückrufdatenstruktur (FLT_CALLBACK_DATA) dargestellt wird. Sie ist in einer FLT_IO_PARAMETER_BLOCK-Struktur enthalten.
Wenn sowohl ein WriteBuffer- als auch ein MdlAddress-Puffer bereitgestellt werden, wird empfohlen, dass Minifilter die MDL verwenden. Der Speicher, auf den WriteBuffer verweist, ist gültig, wenn es sich um eine Benutzermodusadresse handelt, auf die im Kontext des Aufrufvorgangs 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 CcPrepareMdlWrite gesendet werden soll.
IRP_MJ_WRITE kann ein IRP-basierter Vorgang oder ein schneller E/A-Vorgang sein.
Anforderungen
Anforderungstyp | Anforderung |
---|---|
Header | Fltkernel.h (einschließlich Fltkernel.h) |