次の方法で共有


RxFsdPostRequest 関数 (rxprocs.h)

RxFsdPostRequest は、ファイル システム プロセス (FSP) によって処理するために、RX_CONTEXT構造体で指定された I/O 要求パケット (IRP) をワーカー キューにキューに入れます。

構文

NTSTATUS RxFsdPostRequest(
  [in] IN PRX_CONTEXT RxContext
);

パラメーター

[in] RxContext

ワーカー スレッドにキューに入る IRP を含むRX_CONTEXTへのポインター。

戻り値

RxFsdPostRequest は 次の値を返します。

リターン コード 説明
STATUS_PENDING
非同期要求が行われ、後で処理するためにワーカー スレッドにキューに入れられました。 要求の状態が保留中です。

注釈

RxFsdPostRequest は通常、非同期 I/O 要求パケット (IRP) を処理するために RDBSS によって呼び出されます。 通常、これらの IRP は、ファイルに対する操作を要求するユーザー モード アプリケーションに応答して RDBSS によって受信されます。 また、別のカーネル ドライバーがこのような IRP を発行することもできます。

RxContext パラメーターが指すRX_CONTEXT構造体の Flags メンバーにRX_CONTEXT_FLAG_NO_PREPOSTING_NEEDEDビットが設定されていない場合、RxFsdPostRequest は、特定の種類の要求に必要なユーザー アドレス空間をロックダウンしようとします。 この動作の結果となる要求は、RxContext によって指RX_CONTEXT構造体の MajorFunction メンバーに基づいており、次のものが含まれます。

  • RxContext->MinorFunctionIRP_MN_QUERY_DIRECTORYされている場合は、CONTROL をIRP_MJ_DIRECTORYします。
  • IRP_MJ_QUERY_EA
  • IRP_MJ_READ
  • IRP_MJ_SET_EA
  • IRP_MJ_WRITE
RxContextMajorFunction メンバーは、この要求の送信先となる作業キューを決定します。 Parameters.DeviceIoControl.IoControlCode メンバーがIOCTL_REDIR_QUERY_PATH IRP_MJ_DEVICE_CONTROL要求は、遅延作業キューにポストされます。 この場合、RxContext パラメーターの Flags メンバーには、RX_CONTEXT_FLAG_FSP_DELAYED_OVERFLOW_QUEUE ビットが設定されます。 その他のすべての要求はクリティカル作業キューにポストされ、 RxContext パラメーターの Flags メンバーには RX_CONTEXT_FLAG_FSP_CRITICAL_OVERFLOW_QUEUE ビットが設定されます。

IRP の FileObject メンバーが NULL ではなく、処理のために要求を直ちに投稿できる場合 (デバイス キューのしきい値が空です)、これが発生します。 それ以外の場合、要求はボリューム上のオーバーフロー キューにポストされます。

RxFsdPostRequest へのすべての呼び出しは、RxContext パラメーターを渡す RxFsdDispatch ルーチンを呼び出すためにワーカー スレッドにキューに入れられます。

要件

要件
対象プラットフォーム デスクトップ
Header rxprocs.h (Rxprocs.h、Rxcontx.h を含む)
IRQL <= APC_LEVEL

こちらもご覧ください

RxFsdDispatch