RxFsdDispatch 函数 (mrx.h)
RxFsdDispatch 实现文件系统驱动程序 (FSD) 调度,以便 RDBSS 处理 I/O 请求数据包(IRP)。 当 RDBSS 初始化时,RxDriverEntry 例程通过网络微型重定向程序驱动程序的设备驱动程序调度表复制指向此例程的指针。
语法
NTSTATUS RxFsdDispatch(
[in] IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
[in] IN PIRP Irp
);
参数
[in] RxDeviceObject
指向此网络微型重定向器的 RDBSS 设备对象的指针。
[in] Irp
指向正在处理的 I/O 请求数据包的指针。
返回值
RxFsdDispatch 返回以下值之一:
返回代码 | 描述 |
---|---|
STATUS_INVALID_DEVICE_REQUEST | 对无效的设备对象发出请求。 例如,如果将文件系统对象作为 RxDeviceObject 参数传递,则返回此错误。 此状态值指示失败。 |
STATUS_OBJECT_NAME_INVALID | 发出了创建命名管道或 mailslot 的无效请求(Irp 的 MajorFunction 成员IRP_MJ_CREATE_MAILSLOT或IRP_MJ_CREATE_NAMED_PIPE)。 此状态值指示失败。 |
STATUS_PENDING | 发出了异步请求,请求的状态处于挂起状态。 |
STATUS_SUCCESS | RxFsdDispatch 例程调用成功。 |
言论
RDBSS 调用 RxFsdDispatch 来处理 I/O 请求数据包(IRP)。 RDBSS 通常会接收这些 IRP,以响应请求对文件执行的作的用户模式应用程序。 另一个内核驱动程序也可以发出此类 IRP。
当调用 RxDriverEntry 例程以初始化 RDBSS 时,通过网络微型重定向程序驱动程序的驱动程序调度表复制指向 RxFsdDispatch 例程的指针。
在内部,RDBSS 维护两个调度向量:
大多数作的常见调度向量。
文件设备 FCB作的专用调度向量。
如果 IRP 是IRP_MJ_CREATE请求,则 RxFsdDispatch 将使用常见的调度向量。 如果 IRP 用于对文件对象的 FCB 执行作,RxFsdDispatch 将检查是否应使用专用调度矢量。 否则,将使用通用调度向量来处理 IRP。
RxFsdDispatch 调用内部例程来处理标准 IRP,其中大多数都会导致调用网络微型重定向程序驱动程序实现的回调例程之一。
一些 IRP 被视为特殊且由 RDBSS 在内部处理。 例如,如果启用了 WMI,则内部使用IRP_MJ_SYSTEM_CONTROL。 会特别处理IRP_MJ_CREATE_MAILSLOT或IRP_MJ_CREATE_NAMED_PIPE请求(返回STATUS_OBJECT_NAME_INVALID错误)。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | mrx.h (包括 Mrx.h、Rxstruc.h、Struchdr.h) |
IRQL | <= APC_LEVEL |