MRxLowIOSubmit [LOWIO_OP_READ] 例程

RDBSS调用MRxLowIOSubmit [LOWIO_OP_READ]例程向网络小型重定向程序发出读取请求。

语法

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_READ];

NTSTATUS MRxLowIOSubmit[LOWIO_OP_READ](
  _Inout_ PRX_CONTEXT RxContext
)
{ ... }

参数

RxContext [in,out]
指向 RX_CONTEXT 结构的指针。 此参数包含请求操作的 IRP。

返回值

MRxLowIOSubmit [LOWIO_OP_READ] 返回成功的 STATUS_SUCCESS 或相应的 NTSTATUS 值,如以下之一:

返回代码 说明
STATUS_FILE_CLOSED

已获取 FCB 结构,但关联的 SRV_OPEN 结构已关闭。

STATUS_INSUFFICIENT_RESOURCES

资源不足,无法完成请求。

STATUS_INVALID_DEVICE_REQUEST

指定了无效的设备请求。

STATUS_INVALID_PARAMETER

RxContext中指定了无效的参数。

STATUS_NOT_IMPLEMENTED

未实现此例程。

STATUS_NOT_SUPPORTED

网络小型重定向程序不支持指定的请求。

备注

RDBSS 调用 MRxLowIOSubmit [LOWIO_OP_READ] 来响应接收 IRP_MJ_READ 请求。

在调用 MRxLowIOSubmit [LOWIO_OP_READ]之前,RDBSS 会修改 RxContext 参数指向的 RX_CONTEXT 结构中的以下成员:

LowIoContext成员设置为 LOWIO_OP_READ。

LowIoContext. ResourceThreadId成员设置为在 RDBSS 中启动操作的进程线程。

LowIoContext 成员设置为 IrpSp- > Parameters. Read. key的值。

如果Irp > 标志上的 IRP_PAGING_IO 位为,则ParamsFor成员具有 LOWIO_READWRITEFLAG_PAGING_IO 位。

ParamsFor成员设置为锁定 IoReadAccess 的用户缓冲区。

ParamsFor. ByteCount成员设置为 IrpSp > 的值。 LowIoContext 的值。

读取请求通常由网络小型重定向程序作为异步操作来实现,因为这可能需要相当长的时间。 操作通常包含向远程服务器发送网络请求。 当读取请求在服务器上完成时,将获取响应。 这是一个操作示例,网络小型重定向程序可能需要为此操作注册上下文以处理本地启动的取消。

MRxLowIOSubmit [LOWIO_OP_READ] 例程正在处理时,将保证 RX_CONTEXT 的 ResourceThreadId 成员指示在 RDBSS 中启动操作的进程线程。 LowIoContext. ResourceThreadId成员可用于代表其他线程发布 FCB 结构。 异步例程完成后,可以释放从初始线程获取的 FCB 结构。 可以通过调用 RxReleaseFcbResourceForThreadInMRx来释放 FCB 结构。

要求

目标平台

桌面

标头

Mrx (包含 Mrx)

请参阅

MRxLowIOSubmit [LOWIO_OP_EXCLUSIVELOCK]

MRxLowIOSubmit [LOWIO_OP_FSCTL]

MRxLowIOSubmit [LOWIO_OP_IOCTL]

MRxLowIOSubmit [LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxLowIOSubmit [LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit [LOWIO_OP_UNLOCK]

MRxLowIOSubmit [LOWIO_OP_UNLOCK_MULTIPLE]

MRxLowIOSubmit [LOWIO_OP_WRITE]

RxReleaseFcbResourceForThreadInMRx