网络根结构NET_ROOT包含由网络微型重定向程序维护的每个特定网络服务器\共享连接的信息。
NET_ROOT是 RDBSS 和网络微型重定向程序驱动程序想要处理的内容,而不是服务器。 因此,RDBSS 通常会创建并打开NET_ROOT结构,并调用负责打开服务器的网络微型重定向程序驱动程序。 网络微型重定向程序驱动程序应填充传入NET_ROOT结构中的相应字段。
每个SRV_CALL的 RDBSS 维护NET_ROOT结构的列表。 每个NET_ROOT结构都有一些与其他 RDBSS 结构通用的元素,以及NET_ROOT结构特有的元素。 管理NET_ROOT结构的 RDBSS 例程仅修改以下元素:
签名和引用计数
名称和关联的表信息
指向关联SRV_CALL结构的后退指针
各种子结构的大小信息
关联的 FCB 结构的查阅表格
网络微型重定向程序(或NET_ROOT数据结构的创建者)请求的任何其他存储
NET_ROOT结构还包含一系列RX_CONTEXT结构,这些结构正在等待NET_ROOT转换在恢复 IRP 处理之前完成。 当并发请求定向到服务器时,通常会发生这种情况。 其中一个请求是在其他请求排队时启动的。 网络微型重定向程序保留的额外空间从已知NET_ROOT数据结构的末尾开始,以便网络微型重定向程序只需使用包含文件中的上下文字段来引用此额外空间。
NET_ROOT结构的最终化由两个部分组成:
销毁与所有V_NET_ROOTS的关联
释放内存
这两个作之间可能存在延迟,NET_ROOT结构中的字段可防止第一步重复。