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 | (Irp 的 MajorFunction 成员IRP_MJ_CREATE_MAILSLOT或IRP_MJ_CREATE_NAMED_PIPE) 创建命名管道或 mailslot 的请求无效。 此状态值指示失败。 |
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 |