Freigeben über


IO_DRIVER_CREATE_CONTEXT Struktur (ntddk.h)

Die IO_DRIVER_CREATE_CONTEXT-Struktur wird verwendet, um zusätzliche Parameter an die IoCreateFileEx- und FltCreateFileEx2 Routinen zu übergeben. Diese Struktur ist optional.

Die IoCreateFileEx Routine wird von älteren Filtertreibern verwendet, und die FltCreateFileEx2 Routine wird von Minifiltertreibern verwendet.

Syntax

typedef struct _IO_DRIVER_CREATE_CONTEXT {
  CSHORT               Size;
  struct _ECP_LIST     *ExtraCreateParameter;
  PVOID                DeviceObjectHint;
  PTXN_PARAMETER_BLOCK TxnParameters;
  PESILO               SiloContext;
} IO_DRIVER_CREATE_CONTEXT, *PIO_DRIVER_CREATE_CONTEXT;

Angehörige

Size

Ein schreibgeschütztes Element, das von der IoInitializeDriverCreateContext Routine initialisiert wird.

ExtraCreateParameter

Ein Zeiger auf eine ECP_LIST-Struktur, die eine Liste mit zusätzlichen ECP-Einträgen (Create Parameter) enthält. Wichtige Informationen finden Sie in den folgenden Anmerkungen Abschnitt.

DeviceObjectHint

Wenn IO_DRIVER_CREATE_CONTEXT verwendet wird, um zusätzliche Erstellungsparameter an die FltCreateFileEx2 Routine zu übergeben, muss dieses Element NULL-sein.

Wenn IO_DRIVER_CREATE_CONTEXT verwendet wird, um zusätzliche Erstellungsparameter an die IoCreateFileEx Routine zu übergeben, ist dieses Element ein Zeiger auf das Geräteobjekt, an das die Erstellungsanforderung gesendet wird. Das Geräteobjekt muss ein Legacyfilter- oder Dateisystemgeräteobjekt im Dateisystemtreiberstapel für das Volume sein, auf dem sich die Datei oder das Verzeichnis befindet. In der IoCreateFileEx Fall ist dieser Parameter optional und kann NULL-sein. Wenn dieser Parameter NULL-ist, wird die Anforderung am oberen Rand des Treiberstapels an das Geräteobjekt gesendet.

TxnParameters

Ein Zeiger auf eine Transaktion, die Sie dem Erstellungsvorgang zuordnen möchten. Der Erstellungsvorgang ist Teil der Transaktion, wenn der Wert dieses Elements ein gültiger Zeiger auf die Transaktion ist. Wenn der Wert dieses Elements NULL-ist, ist der Erstellungsvorgang nicht Teil einer Transaktion.

SiloContext

Der Container, auf dem sich die Datei befindet. Dieses Mitglied wurde in Windows 10, Version 1607, eingeführt.

Bemerkungen

Die IO_DRIVER_CREATE_CONTEXT Struktur kann aus seitenseitigem oder nicht seitenseitigem Pool zugeordnet werden. Die IoInitializeDriverCreateContext Routine muss die IO_DRIVER_CREATE_CONTEXT Struktur initialisieren, bevor die Struktur verwendet werden kann.

Die Member der IO_DRIVER_CREATE_CONTEXT-Struktur (mit Ausnahme der Size Member) funktionieren als zusätzliche Parameter für die IoCreateFileEx und FltCreateFileEx2 Routinen. Relativ zur Schnittstelle der IoCreateFileEx und FltCreateFileEx2 Routine können die folgenden Informationen hilfreich sein:

  • Eine ECP_LIST Struktur enthält eine Liste mit zusätzlichen ECP-Einträgen (Create Parameter). Jeder ECP-Eintrag (ECP-Kontextstruktur) in der ECP-Liste (ECP_LIST Struktur) fungiert als zusätzlicher Create-Parameter für IoCreateFileEx und FltCreateFileEx2.

    Um einen ECP als Teil eines Erstellungsvorgangs anzugeben, initialisieren Sie den ExtraCreateParameter Member der IO_DRIVER_CREATE_CONTEXT Struktur mit der richtigen Routine:

    • Bei älteren Filtertreibern muss die FsRtlAllocateExtraCreateParameterList Routine verwendet werden, um den Speicherpool für die ECP_LIST Struktur zuzuweisen. Das Betriebssystem gibt nicht automatisch ECP_LIST Strukturen frei. Nachdem die ECP_LIST Struktur zugeordnet wurde, muss sie stattdessen mithilfe der FsRtlFreeExtraCreateParameterList Routine freigegeben werden.

    • Bei Minifiltertreibern muss die FltAllocateExtraCreateParameterList Routine verwendet werden, um den Speicherpool für die ECP_LIST Struktur zuzuweisen. Das Betriebssystem gibt nicht automatisch ECP_LIST Strukturen frei. Wenn die ECP_LIST Struktur zugeordnet ist, muss sie stattdessen mithilfe der FltFreeExtraCreateParameterList Routine freigegeben werden.

    Wenn ECPs verwendet werden, müssen sie mithilfe der entsprechenden Routinen erstellt, bearbeitet und freigegeben werden. Minifiltertreiber verwenden beispielsweise die FltInsertExtraCreateParameter Routine, um einen ECP-Eintrag in eine ECP-Liste einzufügen. Im folgenden Siehe auch Abschnitt werden viele dieser erforderlichen Routinen aufgeführt.

    Wenn sie von einem Aufruf von IoCreateFileEx oder FltCreateFileEx2zurückgegeben werden, ist die ECP-Liste unverändert und kann an zusätzliche IoCreateFileEx oder FltCreateFileEx2 Aufrufe für neue Erstellungsvorgänge übergeben werden.

  • Um eine Datei im Kontext einer Transaktion zu erstellen oder zu öffnen, legen Sie das TxnParameters Member der IO_DRIVER_CREATE_CONTEXT Struktur auf den Wert fest, der vom IoGetTransactionParameterBlock Routine zurückgegeben wird.

Anforderungen

Anforderung Wert
Header- ntddk.h (include Ntddk.h, Ntifs.h, Fltkernel.h)

Siehe auch

ECP_LIST

FltAllocateExtraCreateParameterFromLookasideList

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

FsRtlAllocateExtraCreateParameterList

FsRtlFreeExtraCreateParameterList

IoCreateFileEx-

IoCreateFileSpecifyDeviceObjectHint

IoGetTransactionParameterBlock-

IoInitializeDriverCreateContext-