NET_ROOT 结构

网络根结构(NET_ROOT)包含由网络微型重定向程序维护的每个特定网络服务器\共享连接的信息。

NET_ROOT是 RDBSS 和网络微型重定向程序驱动程序想要处理的内容,而不是服务器。 因此,RDBSS 通常会创建并打开NET_ROOT结构,并调用负责打开服务器的网络微型重定向程序驱动程序。 网络微型重定向程序驱动程序应填充NET_ROOT结构中传递的 相应字段。

RDBSS 为每个SRV_CALL维护NET_ROOT结构的列表。 每个NET_ROOT结构都有一些与其他 RDBSS 结构通用的元素,以及NET_ROOT结构中唯一的元素。 管理NET_ROOT结构的 RDBSS 例程仅修改以下元素:

  • 签名和引用计数

  • 名称和关联的表信息

  • 指向关联SRV_CALL结构的后退指针

  • 各种子结构的大小信息

  • 关联 FCB 结构的查找表

  • 网络微型重定向程序 (或NET_ROOT数据结构的创建者请求的附加存储)

NET_ROOT结构还包含RX_CONTEXT结构的列表,这些结构在恢复 IRP 处理之前等待NET_ROOT转换完成。 当并发请求定向到服务器时,通常会发生这种情况。 其中一个请求在排队时启动。 保留供网络微型重定向程序使用的额外空间从已知NET_ROOT数据结构的末尾开始,以便网络微型重定向程序只需使用包含文件中的上下文字段来引用此额外空间。

NET_ROOT结构的最终完成由两个部分组成:

  1. 销毁与所有V_NET_ROOTS的关联

  2. 释放内存

这两个操作之间可能存在延迟,并且 NET_ROOT 结构中的字段可防止复制第一步。