RxFsdPostRequest 函式 (rxprocs.h)

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

語法

NTSTATUS RxFsdPostRequest(
  [in] IN PRX_CONTEXT RxContext
);

參數

[in] RxContext

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

傳回值

RxFsdPostRequest 會傳回下列值:

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

備註

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

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

  • RxContext->MinorFunction IRP_MN_QUERY_DIRECTORY 時 ,IRP_MJ_DIRECTORY CONTROL。
  • IRP_MJ_QUERY_EA
  • IRP_MJ_READ
  • IRP_MJ_SET_EA
  • IRP_MJ_WRITE
RxContext的 MajorFunction 成員會決定要張貼此要求的工作佇列。 IRP_MJ_DEVICE_CONTROL要求,其中 Parameters.DeviceIoControl.IoControlCode 成員IOCTL_REDIR_QUERY_PATH會張貼到延遲的工作佇列。 在此情況下,RxContext 參數的 Flags 成員將會設定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