传输配置和安装

若要通过 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 参数中标识。 另请注意,协议链可能不包括同一分层协议的多个实例。