RxFsdPostRequest 函数 (rxprocs.h)

RxFsdPostRequest 将 I/O 请求数据包 (IRP) RX_CONTEXT结构指定的 I/O 请求数据包排队到辅助角色队列中,供文件系统进程 (FSP) 进行处理。

语法

NTSTATUS RxFsdPostRequest(
  [in] IN PRX_CONTEXT RxContext
);

参数

[in] RxContext

指向RX_CONTEXT的指针,其中包含要排队到工作线程的 IRP。

返回值

RxFsdPostRequest 返回以下值:

返回代码 说明
STATUS_PENDING
已发出异步请求,并已排队到工作线程供以后处理。 请求的状态为挂起。

注解

RDBSS 通常调用 RxFsdPostRequest 来处理异步 I/O 请求数据包 (IRP) 。 这些 IRP 通常由 RDBSS 接收,以响应用户模式应用程序请求对文件执行的操作。 另一个内核驱动程序也可以发出这样的 IRP。

如果 RxContext 参数指向的 RX_CONTEXT 结构的 Flags 成员未设置RX_CONTEXT_FLAG_NO_PREPOSTING_NEEDED位,则 RxFsdPostRequest 将尝试锁定某些类型请求所需的任何用户地址空间。 导致此行为的请求基于 RxContext 指向的 RX_CONTEXT 结构的 MajorFunction 成员,包括以下内容:

  • IRP_MN_QUERY_DIRECTORY RxContext->MinorFunction 时IRP_MJ_DIRECTORY CONTROL
  • IRP_MJ_QUERY_EA
  • IRP_MJ_READ
  • IRP_MJ_SET_EA
  • IRP_MJ_WRITE
RxContextMajorFunction 成员将确定此请求将发布到哪个工作队列。 IOCTL_REDIR_QUERY_PATH Parameters.DeviceIoControl.IoControlCode 成员的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 例程。

要求

要求
目标平台 桌面
标头 rxprocs.h (包括 Rxprocs.h、Rxcontx.h)
IRQL <= APC_LEVEL

另请参阅

RxFsdDispatch