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