次の方法で共有


IO_DRIVER_CREATE_CONTEXT 構造体 (ntddk.h)

IO_DRIVER_CREATE_CONTEXT構造体は、追加のパラメーターを IoCreateFileEx および FltCreateFileEx2 ルーチンに渡すために使用されます。 この構造体は省略可能です。

IoCreateFileEx ルーチンはレガシ フィルター ドライバーによって使用され、FltCreateFileEx2 ルーチンはミニフィルター ドライバーによって使用されます。

構文

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;

メンバー

Size

IoInitializeDriverCreateContext ルーチンによって初期化された読み取り専用メンバー。

ExtraCreateParameter

追加の create パラメーター (ECP) エントリの一覧を含む、 ECP_LIST 構造体へのポインター。 重要な情報については、次 の「解説 」セクションを参照してください。

DeviceObjectHint

fltCreateFileEx2 ルーチンに追加の作成パラメーターを渡すためにIO_DRIVER_CREATE_CONTEXTを使用している場合、このメンバーは NULL である必要があります。

IO_DRIVER_CREATE_CONTEXTを使用して追加の作成パラメーターを IoCreateFileEx ルーチンに渡す場合、このメンバーは、作成要求の送信先となるデバイス オブジェクトへのポインターです。 デバイス オブジェクトは、ファイルまたはディレクトリが存在するボリュームのファイル システム ドライバー スタック内のレガシ フィルターまたはファイル システム デバイス オブジェクトである必要があります。 IoCreateFileEx の場合、このパラメーターは省略可能であり、NULL にすることができます。 このパラメーターが NULL の場合、要求はドライバー スタックの上部にあるデバイス オブジェクトに送信されます。

TxnParameters

作成操作に関連付けるトランザクションへのポインター。 このメンバーの値がトランザクションへの有効なポインターである場合、作成操作はトランザクションの一部になります。 このメンバーの値が NULL の場合、作成操作はトランザクションの一部になりません。

SiloContext

ファイルが存在するコンテナー。 このメンバーは、Windows 10 バージョン 1607 で導入されました。

注釈

IO_DRIVER_CREATE_CONTEXT構造体は、ページ プールまたは非ページ プールから割り当てられます。 IoInitializeDriverCreateContext ルーチンは、構造体を使用する前に、IO_DRIVER_CREATE_CONTEXT構造体を初期化する必要があります。

IoCreateFileEx ルーチンおよび FltCreateFileEx2 ルーチンの追加パラメーターとして、IO_DRIVER_CREATE_CONTEXT構造体のメンバー (Size メンバーを除く) 関数。 IoCreateFileEx および FltCreateFileEx2 ルーチンのインターフェイスに対して、次の情報が役立つ場合があります。

  • ECP_LIST構造体には、追加の create パラメーター (ECP) エントリの一覧が含まれています。 ECP リスト (ECP_LIST 構造体) 内の各 ECP エントリ (ECP コンテキスト構造) は、 IoCreateFileEx および FltCreateFileEx2 に対する追加の create パラメーターとして機能します。

    作成操作の一部として ECP を指定するには、正しいルーチンを使用して、IO_DRIVER_CREATE_CONTEXT構造体の ExtraCreateParameter メンバーを初期化します。

    • レガシ フィルター ドライバーの場合、 fsRtlAllocateExtraCreateParameterList ルーチンを使用して、ECP_LIST構造体のメモリ プールを割り当てる必要があります。 オペレーティング システムは、ECP_LIST構造体を自動的に解放しません。 代わりに、ECP_LIST構造体が割り当てられると、最終的には FsRtlFreeExtraCreateParameterList ルーチンを使用して解放する必要があります。

    • ミニフィルター ドライバーの場合、 FltAllocateExtraCreateParameterList ルーチンを使用して、ECP_LIST構造体のメモリ プールを割り当てる必要があります。 オペレーティング システムは、ECP_LIST構造体を自動的に解放しません。 代わりに、ECP_LIST構造体が割り当てられると、最終的には FltFreeExtraCreateParameterList ルーチンを使用して解放する必要があります。

    ECP を使用する場合は、適切なルーチンを使用して作成、操作、解放する必要があります。 たとえば、ミニフィルター ドライバーでは 、FltInsertExtraCreateParameter ルーチンを使用して ECP リストに ECP エントリを挿入します。 次の 「関連項目」セクションでは 、これらの必須ルーチンの多くを一覧表示します。

    IoCreateFileEx または FltCreateFileEx2 の呼び出しから戻ると、ECP リストは変更されず、新しい作成操作の追加の IoCreateFileEx または FltCreateFileEx2 呼び出しに渡すことができます。

  • トランザクションのコンテキストでファイルを作成または開くには、IO_DRIVER_CREATE_CONTEXT構造体の TxnParameters メンバーを IoGetTransactionParameterBlock ルーチンによって返される値に設定します。

要件

要件
Header ntddk.h (Ntddk.h、Ntifs.h、Fltkernel.h を含む)

こちらもご覧ください

ECP_LIST

FltAllocateExtraCreateParameterFromLookasideList

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

FsRtlAllocateExtraCreateParameterList

FsRtlFreeExtraCreateParameterList

IoCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

IoGetTransactionParameterBlock

IoInitializeDriverCreateContext