网络重定向程序设计

本文介绍 Windows 2000 中引入的网络重定向程序的驱动程序模型。

网络重定向程序设计面临的一个重大挑战是,从用户启动的操作到低级别网络操作(无论是操作选择还是计时)执行的相对复杂的转换。 处理 Windows I/O 系统、缓存管理器和内存管理器是一项相对复杂的任务。 在考虑可能适用于远程通信机制的各种缓冲模式(例如速度和可靠性可能有很大差异的计算机网络)时,这一说法尤其正确。 在网络重定向程序中实现这些缓冲操作代表了对理想情况下由驱动程序共享和重用的功能的重大投资。

Windows 2000 引入了一种基于分层或微型端口驱动程序方法的网络重定向程序驱动程序模型。 此模型称为微型重定向程序体系结构 (rdr2)。 不必重新实现用于缓冲和与每个驱动程序中的 I/O 管理器和缓存管理器交互的复杂代码,而是将大型代码块提取出来,供所有潜在的网络重定向程序使用。 共享的通用缓冲代码称为重定向的驱动器缓冲子系统 (RDBSS)。

下面显示了具有多个重定向程序的此体系结构的模型。

说明从 Windows 2000 开始的网络重定向程序设计的关系图。

此 RDBSS 设计提供以下几个优势:

  • 它简化了为网络重定向程序编写内核模式驱动程序 (KMD) 的过程,因为提供了处理 I/O 系统、缓存管理器和内存管理器所需的大量通用代码。

  • 它根据为 Microsoft Networks 开发的缓冲算法和内核优化,为其他网络重定向程序驱动程序提供大量性能改进。

  • 它简化了维护,因为只需开发和维护缓冲代码的一个副本。 在 Windows 2000 之前的模型中,每个重定向程序都需要一个副本。

  • 它为网络重定向程序的网络协议特定组件提供了强大的封装,因此驱动程序开发人员可以专注于网络重定向程序中独特且特定于其应用程序或产品的这些方面。

  • 它通过基于这种分层方法提供解耦来简化网络重定向程序的调试驱动程序。

RDBSS 模型是在 Windows 2000 中引入的。 此模型也用于 Windows Server 2003 和 Windows XP。

Windows NT 中的网络重定向程序设计

Windows NT 3.0 中引入的原始方案不使用共享组件,并且受到限制。 此模型通常称为原始 rdr 驱动程序模型(rdr 是重定向程序的缩写)。 为了简化编写网络重定向程序的过程,OS 不提供特殊支持。 每个 KMD 都实现了网络重定向程序所需的所有功能。 因此,每个 KMD 都将包含大量用于与 I/O 管理器、缓存管理器和内存管理器交互的代码。 Windows 上安装的每个网络重定向程序(例如 LAN 管理器、NetWare 和 NFS)必须自行实现所有这些功能。 此设计模型用于通过 Windows NT 4.0 的网络重定向程序的驱动程序。 下面是此体系结构的示意图,其中包含多个重定向程序。

说明 Windows NT 中的网络重定向程序设计的关系图。