共用方式為


RxFsdPostRequest 函式 (rxprocs.h)

RxFsdPostRequest 會將由RX_CONTEXT結構指定的 I/O 要求封包排入佇列,以供文件系統進程 (FSP) 處理。

語法

NTSTATUS RxFsdPostRequest(
  [in] IN PRX_CONTEXT RxContext
);

參數

[in] RxContext

包含要排入背景工作線程之 IRP 之RX_CONTEXT的指標。

傳回值

RxFsdPostRequest 會傳回下列值:

傳回碼 描述
STATUS_PENDING
已提出異步要求,並已排入背景工作線程以供稍後處理。 要求的狀態為擱置中。

言論

RDBSS 通常會呼叫 RxFsdPostRequest 來處理異步 I/O 要求封包 (IRP)。 RDBSS 通常會收到這些 IRP,以回應要求檔案作業的使用者模式應用程式。 另一個核心驅動程式也有可能發出這類 IRP。

如果 Flags RX_CONTEXT 結構的成員 RxContext 參數未設定RX_CONTEXT_FLAG_NO_PREPOSTING_NEEDED位,則 RxFsdPostRequest 會嘗試鎖定特定類型要求所需的任何使用者位址空間。 導致此行為的要求是以 RxContext 所指向之RX_CONTEXT結構的 MajorFunction 成員為基礎,並包含下列專案:

  • RxContext->MinorFunctionIRP_MN_QUERY_DIRECTORY 時,IRP_MJ_DIRECTORY CONTROL。
  • IRP_MJ_QUERY_EA
  • IRP_MJ_READ
  • IRP_MJ_SET_EA
  • IRP_MJ_WRITE
MajorFunctionRxContext 成員將決定此要求要張貼到哪個工作佇列。 IRP_MJ_DEVICE_CONTROL要求,其中 Parameters.DeviceIoControl.IoControlCode 成員IOCTL_REDIR_QUERY_PATH會張貼至延遲的工作佇列。 在此情況下,FlagsRxContext 參數的成員將會設定RX_CONTEXT_FLAG_FSP_DELAYED_OVERFLOW_QUEUE位。 所有其他要求都會張貼至重要工作佇列,而 RxContext 參數的 Flags 成員將會設定RX_CONTEXT_FLAG_FSP_CRITICAL_OVERFLOW_QUEUE位。

如果 IRP 的 FileObject 成員未 NULL,而且可以立即張貼要求進行處理(裝置佇列的閾值是空的),則會發生此情況。 否則,要求將會張貼到磁碟區上的溢位佇列。

RxFsdPostRequest 的所有呼叫都會排入背景工作線程,以呼叫傳入 RxContext 參數的 RxFsdDispatch 例程。

要求

要求 價值
目標平臺 桌面
標頭 rxprocs.h (包括 Rxprocs.h、Rxcontx.h)
IRQL <= APC_LEVEL

另請參閱

RxFsdDispatch