传输配置和安装

若要通过 Windows 套接字访问传输协议,必须在系统上正确安装传输协议并注册到 Windows 套接字。 通过调用供应商的安装程序来安装传输服务提供商时,必须将配置信息添加到配置数据库中,以便提供有关服务提供商的 Ws2_32.dll 所需信息。 Ws2_32.dll 导出多个安装函数,WSCInstallProviderWSCInstallProviderAndChains,以便供应商的安装程序提供有关要安装的服务提供商的相关信息。 此信息包括服务提供商 DLL 的名称和路径,以及此提供程序可以支持的 WSAPROTOCOL_INFO 结构列表。 Ws2_32.dll 还提供一个函数,WSCDeinstallProvider,以便供应商的取消安装计划从 Ws2_32.dll维护的配置数据库中删除所有相关信息。 此配置信息的确切位置和格式是 Ws2_32.dll专用的,只能由上述函数作。

在 64 位平台上,有类似的函数在 32 位和 64 位目录上运行。 这些函数包括 WSCInstallProvider64_32WSCInstallProviderAndChains64_32WSCDeinstallProvider32

最初安装传输服务提供商的顺序控制通过应用程序接口上的 WSCEnumProtocolsWSCEnumProtocols32,或通过应用程序接口上的 WSAEnumProtocols 来枚举它们的顺序。 更重要的是,此顺序还控制在客户端请求基于其地址系列、类型和协议标识符创建套接字时考虑协议和服务提供商的顺序。 Windows 套接字 2 包括一个名为 Sporder.exe 小程序,该小程序允许在安装协议后以交互方式对已安装的协议目录重新排序。 Windows 套接字 2 还包括一个辅助 DLL,Sporder.dll,用于导出用于重新排序协议的过程接口。 此过程接口由名为 WSCWriteProviderOrder的单个过程组成。

安装分层协议和协议链

随要安装的每个协议一起提供的 WSAPROTOCOL_INFO 结构指示协议是基协议、分层协议还是协议链。 ProtocolChain.ChainLen 参数的值解释如下表所示。

价值 意义
0 分层协议。
1 基协议(或仅包含一个组件的链)。
>1 协议链。

 

只有在成功安装所有构成组件(基本协议和分层协议)后,才能安装协议链。 协议链的 WSAPROTOCOL_INFO 结构使用 ProtocolChain 参数来描述链的长度和每个组件的标识。 构成链的各个协议按 ProtocolChain.ChainEntries 数组中的顺序列出,数组的第 0 个元素对应于第一个分层提供程序。 协议由其 CatalogEntryID 值标识,这些值由协议安装时 Ws2_32.dll 分配,可在每个协议的 WSAPROTOCOL_INFO 结构中找到。

应选择协议链的 WSAPROTOCOL_INFO 结构中剩余参数的值,以反映最能将协议链整体特征化的属性和标识符。 选择这些值时,开发人员应记住,只有两个终结点都安装了兼容的协议链,并且应用程序必须能够识别相应的 WSAPROTOCOL_INFO 结构时,才能通过协议链进行通信。

安装基协议时,无需在 ProtocolChain.ChainEntries 数组中输入任何条目。 隐式理解,此链的唯一组件已在同一 WSAPROTOCOL_INFO 结构的 CatalogEntryID 参数中标识。 另请注意,协议链可能不包括同一分层协议的多个实例。