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
- FALSE
- 0xff
RxFinalizeConnection 成功,即使孤立文件和IRP_MN_NOTIFY_CHANGE_DIRECTORY请求处于打开状态也是如此。 此选项强制关闭这些孤立文件。
RxFinalizeConnection 文件或更改通知打开时失败。
RxFinalizeConnection 由于添加连接请求而删除V_NET_ROOT结构上的额外引用,但其他作类似于 FALSE。 RxFinalizeConnection 文件或更改通知打开时失败。
返回值
RxFinalizeConnection 在成功时返回STATUS_SUCCESS或失败时出现以下错误代码之一:
返回代码 | 描述 |
---|---|
|
RX_CONTEXT结构的 标志 成员表示 IRP 已取消。 |
|
连接仍在使用中。 |
|
文件已打开,因此不应删除远程连接。 |
|
关联的独占锁 |
言论
RxFinalizeConnection 通常由网络微型重定向程序驱动程序调用,以响应从用户模式接收自定义 IOCTL 请求。 例如,用户可以从命令行执行“NET USE x: /d”以删除共享。 此请求将通过网络微型重定向程序提供的网络提供程序 DLL 映射到发送到网络微型重定向程序内核驱动程序的自定义 IOCTL 请求,该请求将调用 RxFinalizeConnection 例程来删除连接。
RxFinalizeConnection 取消给定V_NET_ROOT结构的所有未完成请求。 这些V_NET_ROOT结构是独立于打开和作它们的文件创建和删除的。 因此,在尝试删除作时,必须取消所有未完成的请求。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | rxprocs.h (包括 Rxprocs.h) |
IRQL | <= APC_LEVEL |