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)

Weitere Informationen

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS

FltReadFile

IRP_MJ_READ

ZwReadFile