Freigeben über


FLT_PARAMETERS für IRP_MJ_PREPARE_MDL_WRITE Union

Das folgende FLT_PARAMETERS Unionsmitglied wird verwendet, wenn FLT_IO_PARAMETER_BLOCK. MajorFunction ist IRP_MJ_PREPARE_MDL_WRITE.

Syntax

typedef union _FLT_PARAMETERS {
  ...    ;
  struct {
    LARGE_INTEGER           FileOffset;
    ULONG POINTER_ALIGNMENT Length;
    ULONG POINTER_ALIGNMENT Key;
    PMDL                    *MdlChain;
  } PrepareMdlWrite;
  ...    ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

Elemente

  • PrepareMdlWrite: Struktur, die die folgenden Member enthält.

  • FileOffset: Byte wird innerhalb der zwischengespeicherten Datei gestartet.

  • Länge: Länge der in Bytes zu schreibenden Daten in die zwischengespeicherte Datei.

  • Schlüssel: Schlüsselwert, der einer Bytebereichssperre in der Zieldatei zugeordnet ist. Wenn der zu schreibende Bereich überlappt oder eine Unterrange 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 einer oder mehrerer Speicherdeskriptorlisten (MDL) empfängt, die die Seiten beschreiben, die die zu schreibenden Daten enthalten.

Bemerkungen

IRP_MJ_PREPARE_MDL_WRITE ist ein schneller E/A-Vorgang. Es funktioniert genauso wie IRP_MJ_WRITE + 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 Fast IO-Vorgang schlägt fehl, wenn die Datei noch nicht zwischengespeichert ist.

Die FLT_PARAMETERS Struktur für IRP_MJ_PREPARE_MDL_WRITE Vorgänge enthält die Parameter für einen schnellen E/A PrepareMdlWrite-Vorgang . Der Vorgang wird durch eine Rückrufdatenstruktur (FLT_CALLBACK_DATA) dargestellt. Sie ist in einer FLT_IO_PARAMETER_BLOCK Struktur enthalten, wobei die Parameter des Vorgangs in der FLT_IO_PARAMETER_BLOCK Struktur, auf die Iopb verweist.

Wenn eine schnelle E/A-IRP_MJ_PREPARE_MDL_WRITE-Anforderung fehlschlägt, bestimmt der Aussteller der E/A, wie die Anforderung erneut ausgeführt werden soll. Die Anforderung kann z. B. mit IRP_MJ_WRITE + IRP_MN_MDL als IRP-basierten Vorgang neu bereitgestellt werden.

Anforderungen

Anforderungstyp Anforderung
Kopfzeile Fltkernel.h (include Fltkernel.h)

Siehe auch

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS