MRxStop 例程

RDBSS 调用MRxStop 例程来停止网络微型重定向程序。

语法

PMRX_CALLDOWN_CTX MRxStop;

NTSTATUS MRxStop(
  _Inout_ PRX_CONTEXT          RxContext,
  _Inout_ PRDBSS_DEVICE_OBJECT RxDeviceObject
)
{ ... }

参数

RxContext [in, out]
指向RX_CONTEXT 结构的指针。 此参数包含请求网络微型重定向程序停止的 IRP。

RxDeviceObject [in, out]
指向此网络微型重定向器的RDBSS_DEVICE_OBJECT结构的指针。

返回值

MRxStop 在成功时返回STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:

返回代码 说明
STATUS_REDIRECTOR_HAS_OPEN_HANDLES

网络微型重定向程序具有打开的句柄,阻止它此时停止。

STATUS_REDIRECTOR_NOT_STARTED

网络微型重定向程序未启动。

注解

MRxStop 从 RDBSS 的角度停止和取消初始化网络微型重定向程序。 停止网络微型重定向程序可能需要释放内存分配和其他系统资源。

在调用 MRxStop 之前,RDBSS 会修改以下值:

RxContext 指向的 RX_CONTEXT 结构中的 MajorFunction 成员设置为 IRP 的主要函数。

RxContext 指向的 RX_CONTEXT 结构中的 LowIoContext.ParamsFor.FsCtl.FsControlCode 成员设置为 IRP 的 FSCTL 代码(如果这是用于停止网络微型重定向程序的 FSTCL 请求)。

RxDeviceObject 指向的 RDBSS_DEVICE_OBJECT 结构的 StartStopContext.State 成员设置为 RDBSS_STOP_IN_PROGRESS

RxDeviceObject 指向的 RDBSS_DEVICE_OBJECT 结构的 StartStopContext.pStopContext 成员设置为 RxContext 参数。

MRxStop 由 RDBSS 从 RxStopMinirdr 例程调用。

如果 MRxStop 返回STATUS_SUCCESS,则表示例程成功。 任何其他返回值指示在停止网络微型重定向程序时出错。

如果 MRxStop 返回STATUS_SUCCESS,RDBSS 会将 RDBSS 的状态设置为RDBSS_STARTABLE。 此状态存储在 RxDeviceObject 指向的 RDBSS_DEVICE_OBJECT 结构的 StartStopContext.State 成员中。

网络微型重定向程序通常会维护一个内部变量,指示网络微型重定向程序是否已启动。 例如,网络微型重定向程序可以跟踪何时停止、启动,以及启动操作或停止操作正在进行。

要求

目标平台

桌面

标头

Mrx.h (包括 Mrx.h)

另请参阅

MRxDevFcbXXXControlFile

MrxStart

RxStopMinirdr