FLT_PARAMETERS für IRP_MJ_MDL_READ Union
Der folgende FLT_PARAMETERS Unionsmember wird verwendet, wenn FLT_IO_PARAMETER_BLOCK.MajorFunction IRP_MJ_MDL_READ ist.
Syntax
typedef union _FLT_PARAMETERS {
... ;
struct {
LARGE_INTEGER FileOffset;
ULONG POINTER_ALIGNMENT Length;
ULONG POINTER_ALIGNMENT Key;
PMDL *MdlChain;
} MdlRead;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Member
MdlRead: Struktur, die die folgenden Mitglieder enthält.
FileOffset: Byte wird innerhalb der zwischengespeicherten Datei gestartet.
Länge: Länge der Daten, die aus der zwischengespeicherten Datei gelesen werden sollen, in Bytes.
Schlüssel: Schlüsselwert, der einer Bytebereichssperre in der Zieldatei zugeordnet ist. Wenn der zu lesende Bereich überlappt oder ein Unterbereich eines exklusiv gesperrten Bereichs innerhalb der Datei ist, muss dieser Parameter der Schlüssel für diese exklusive Sperre sein. Die exklusive Sperre muss vom übergeordneten Prozess des aufrufenden Threads gehalten werden; andernfalls wird dieser Parameter ignoriert.
MdlChain: Zeiger auf eine Variable, die einen Zeiger auf eine Kette von einer oder mehreren Memory Descriptor Lists (MDL) erhält, die die Seiten beschreiben, die die zu lesenden Daten enthalten.
Hinweise
IRP_MJ_MDL_READ ist ein schneller E/A-Vorgang. Es funktioniert genauso wie IRP_MJ_READ + IRP_MN_MDL mit Ausnahme des folgenden Unterschieds:
- Der IRP-basierte Vorgang richtet die Zwischenspeicherung für die Datei ein, wenn er noch nicht zwischengespeichert wird, bevor die MDL-Arbeit ausgeführt wird.
- Der schnelle E/A-Vorgang schlägt fehl, wenn die Datei noch nicht zwischengespeichert ist.
Die Struktur FLT_PARAMETERS für IRP_MJ_MDL_READ-Vorgänge enthält die Parameter für einen schnellen E/A-MdlRead-Vorgang. Der Vorgang wird durch eine (FLT_CALLBACK_DATA)-Struktur mit den Parametern des Vorgangs in der FLT_IO_PARAMETER_BLOCK-Struktur dargestellt, auf die Iopb verweist.
Wenn bei einer schnellen E/A-IRP_MJ_MDL_READ-Anforderung ein Fehler auftritt, bestimmt der Aussteller der E/A, wie die Anforderung erneut ausgeführt werden soll. Die Anforderung kann z. B. mit IRP_MJ_READ + IRP_MN_MDL als IRP-basierten Vorgang neu bereitgestellt werden.
Anforderungen
Anforderungstyp | Anforderung |
---|---|
Header | Fltkernel.h (einschließlich Fltkernel.h) |