RxFinalizeConnection 函数 (rxprocs.h)

RxFinalizeConnection 删除与共享的连接。 连接上打开的任何文件都根据指定的强制级别关闭。 网络微型重定向程序可能会出于性能原因选择保持传输连接打开状态,除非指定了某些选项来强制关闭连接。

语法

NTSTATUS RxFinalizeConnection(
  IN OUT PNET_ROOT   NetRoot,
  IN OUT PV_NET_ROOT VNetRoot,
  IN LOGICAL         ForceFilesClosed
);

参数

NetRoot

[in, out]指向正在完成NET_ROOT结构的指针。

VNetRoot

指向正在完成V_NET_ROOT结构的指针。

ForceFilesClosed

控制 RxFinalizeConnection 例程行为的标志。 标志可以是以下值之一:

TRUE

RxFinalizeConnection 成功,即使孤立文件和IRP_MN_NOTIFY_CHANGE_DIRECTORY请求处于打开状态也是如此。 此选项强制关闭这些孤立文件。

FALSE

RxFinalizeConnection 文件或更改通知打开时失败。

0xff

RxFinalizeConnection 由于添加连接请求而删除V_NET_ROOT结构上的额外引用,但其他作类似于 FALSERxFinalizeConnection 文件或更改通知打开时失败。

返回值

RxFinalizeConnection 在成功时返回STATUS_SUCCESS或失败时出现以下错误代码之一:

返回代码 描述
STATUS_CANCELLED
RX_CONTEXT结构的 标志 成员表示 IRP 已取消。
STATUS_CONNECTION_IN_USE
连接仍在使用中。
STATUS_FILES_OPEN
文件已打开,因此不应删除远程连接。
STATUS_LOCK_NOT_GRANTED
关联的独占锁

言论

RxFinalizeConnection 通常由网络微型重定向程序驱动程序调用,以响应从用户模式接收自定义 IOCTL 请求。 例如,用户可以从命令行执行“NET USE x: /d”以删除共享。 此请求将通过网络微型重定向程序提供的网络提供程序 DLL 映射到发送到网络微型重定向程序内核驱动程序的自定义 IOCTL 请求,该请求将调用 RxFinalizeConnection 例程来删除连接。

RxFinalizeConnection 取消给定V_NET_ROOT结构的所有未完成请求。 这些V_NET_ROOT结构是独立于打开和作它们的文件创建和删除的。 因此,在尝试删除作时,必须取消所有未完成的请求。

要求

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

另请参阅

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeSrvOpen

RxFinalizeVNetRoot

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

NET_ROOT结构

V_NET_ROOT结构