连接引擎管理

在 RDBSS 中,连接引擎旨在尽可能贴近映射和模拟 TDI 规范。 这提供了一种有效的机制,可以充分利用网络微型重定向程序使用的基础 TDI 实现。

虽然 RDBSS 连接引擎会抽象化 TDI,但网络重定向程序也可以直接与 TDI 通信,而不是使用这些 RDBSS 连接引擎例程。 为 TDI 提供包装器的现有 RDBSS 连接引擎例程是为支持 Microsoft Networks 而开发的,因此它们非常以 Windows 为中心,可能不适用于其他网络控制器。 此外,RDBSS 中的连接引擎例程将从 Windows Server 2003 之后发布的 Windows 操作系统中删除。 将来,每个网络重定向程序将负责开发 (TDI 或其他一些传输) 所需的连接引擎例程。 例如,WebDAV 重定向程序可以与某些用户模式反射器进程通信,以 (标准 TCP/IP) 而不是 TDI 发送 HTTP 数据包。

RDBSS 连接引擎例程处理以下实体:

  • 传输

  • 传输地址

  • 传输连接

  • 连接上的虚拟线路

传输是对任何系统上各种传输服务提供程序的绑定。 传输地址是本地连接终结点。 这些连接是终结点之间的传输连接。 每个连接封装许多虚拟线路, (通常为一个) 。

以下重要数据结构由与 RDBSS 关联的各种连接引擎例程创建和操作:

  • RXCE_TRANSPORT -- 封装传输的所有参数

  • RXCE_ADDRESS -- 封装传输地址的所有参数

  • RXCE_CONNECTION - 封装传输连接的所有参数

  • RXCE_VC - 封装传输连接上虚拟线路的所有参数

网络微型重定向程序驱动程序可以使用这些数据结构,并调用为每种类型提供的例程来生成和拆解连接引擎部分。 这些例程不会分配或释放与这些结构关联的内存。 这为微型重定向程序驱动程序提供了一种灵活的机制,用于管理这些连接引擎数据结构的实例。

上述四种连接引擎类型在每个数据结构的开头都标记有一个特殊的RXCE_SIGNATURE签名,RDBSS 广泛使用该签名进行验证。

RDBSS 提供网络微型重定向程序驱动程序可以使用的以下连接引擎例程。

例程所返回的值 说明

RxCeAllocateIrpWithMDL

此例程分配供连接引擎使用的 IRP,并将 MDL 与 IRP 相关联。

此例程仅在 Windows XP 上可用。

RxCeBuildAddress

此例程将传输地址与传输绑定相关联。

RxCeBuildConnection

此例程在本地 RDBSS 连接地址和给定的远程地址之间建立连接。 应在系统工作线程的上下文中调用此例程。

RxCeBuildConnectionOverMultipleTransports

此例程在本地 RDBSS 连接地址和给定的远程地址之间建立连接,并支持多种传输。 指定了一组本地地址,此例程尝试通过与本地地址关联的所有传输连接到目标服务器。 根据连接选项选择一个连接作为优胜者。 必须在系统工作线程的上下文中调用此例程。

RxCeBuildTransport

此例程将 RDBSS 传输绑定到指定的传输名称。

RxCeBuildVC

此例程将虚拟线路添加到指定的连接。

RxCeCancelConnectRequest

此例程取消以前发出的连接请求。

请注意,此例程当前未实现。

RxCeFreeIrp

此例程释放连接引擎使用的 IRP。

此例程仅在 Windows XP 上可用。

RxCeInitiateVCDisconnect

此例程在虚拟线路上启动断开连接。 必须在系统工作线程的上下文中调用此例程。

RxCeQueryAdapterStatus

此例程返回给定传输的ADAPTER_STATUS结构。

RxCeQueryInformation

此例程查询与连接相关的信息。

RxCeQueryTransportInformation

此例程返回有关给定传输的连接计数和服务质量的传输信息。

RxCeSend

此例程沿虚拟线路上的指定连接发送 TSDU。

RxCeSendDatagram

此例程将 TSDU 发送到指定的传输地址。

RxCeTearDownAddress

此例程从传输绑定中删除传输地址。

RxCeTearDownConnection

此例程会断开给定的连接。

RxCeTearDownTransport

此例程与指定的传输取消绑定。

RxCeTearDownVC

此例程会断开虚拟连接。

注意 Windows Vista 之后的 Microsoft Windows 版本将不支持 TDI。 请改用 Windows 筛选平台Winsock 内核