RxInitializeContext 関数 (rxcontx.h)
RxInitializeContext は、既存のRX_CONTEXTデータ構造を初期化します。
構文
void RxInitializeContext(
[in, optional] IN PIRP Irp,
[in] IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
[in] IN ULONG InitialContextFlags,
[in, out] IN OUT PRX_CONTEXT RxContext
);
パラメーター
[in, optional] Irp
このRX_CONTEXT構造体によってカプセル化される IRP へのポインター。
[in] RxDeviceObject
このRX_CONTEXTと IRP が適用されるデバイス オブジェクトへのポインター。
[in] InitialContextFlags
RX_CONTEXT構造体に格納するRX_CONTEXT データ構造の Flags メンバーの初期値のセット。 これらの初期値は、次の列挙の任意の組み合わせにすることができます。
RX_CONTEXT_FLAG_WAIT
この値を設定すると、ファイル システム プロセスによって後で実行するために IRP をポストする必要はありませんが、完了するまで待機する必要があります。
RX_CONTEXT_FLAG_MUST_SUCCEED
この値が設定されている場合、操作は成功する必要があります。 この値は現在 RDBSS では使用されていませんが、ネットワーク ミニ リダイレクター ドライバーで使用される場合があります。
RX_CONTEXT_FLAG_MUST_SUCCEED_NONBLOCKING
この値が設定されている場合、非ブロッキング操作では操作が成功する必要があります。 この値は現在 RDBSS では使用されていませんが、ネットワーク ミニ リダイレクター ドライバーで使用される場合があります。
[in, out] RxContext
初期化するRX_CONTEXTへのポインター。
戻り値
なし
解説
RxInitializeContext は、 RxCreateRxContext ルーチンによって内部的に呼び出されます。 したがって、 RxInitializeContext ルーチンは、通常、 rxCreateRxContext ルーチンを呼び出してRX_CONTEXT構造体を割り当てて初期化するのではなく、RX_CONTEXT構造体を直接割り当てるネットワーク min-redirector ドライバーでのみ使用されます。
Irp パラメーターが非同期操作用に構成されている場合、RxContext が指すRX_CONTEXT構造体の Flags メンバーにも次の値が設定されます。
RX_CONTEXT_FLAG_ASYNC_OPERATIONは、次の条件にも設定されます。
- Irp の MajorFunction メンバーは、IRP_MJ_READ、IRP_MJ_WRITE、またはIRP_MJ_DEVICE_CONTROLです。
- Irp の MajorFunction メンバーはIRP_MJ_DIRECTORY_CONTROLであり、IRP の MinorFunction メンバーはIRP_MN_NOTIFY_CHANGE_DIRECTORYです。
- Irp の MajorFunction メンバーはIRP_MJ_FILE_SYSTEM_CONTROLであり、関連付けられている FCB の NetRoot メンバーは NULL ではなく、NET_ROOTの Type メンバーはNET_ROOT_PIPE。
RxDeviceObject パラメーターがこれが最上位レベルの RDBSS デバイス オブジェクトであることを示している場合、RX_CONTEXT構造体の Flags メンバーにも次の値が設定されます。
Irp FileObject Flags メンバーに FO_WRITE_THROUGH オプションが設定されている場合、RX_CONTEXT構造体の Flags メンバーにも次の値が設定されます。
RxInitializeContext は、次のようなRX_CONTEXT構造体内の他のメンバーの数を設定します。
- 適切な NodeTypeCode、 NodeByteSize、 SerialNumber、 RxDeviceObject を設定し、 ReferenceCount を 1 に初期化します。
- SyncEvent を初期化します
- 関連付けられているスカベンジャーエントリを初期化する
- BlockedOperations のリスト エントリを初期化します
- Irp に基づいてRX_CONTEXTメンバーを設定します。 CurrentIrp、OriginalThread、MajorFunction、MinorFunction、CurrentIrpSp、pFcb、NonPagedFcb、pFobx、pRelevantSrvOpen、および FobxSerialNumber メンバーが含まれます。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | rxcontx.h (Rxprocs.h rxcontx.h を含む) |
IRQL | <= APC_LEVEL |
こちらもご覧ください
RxDereferenceAndDeleteRxContext_Real
RxResumeBlockedOperations_Serially