安装 SAN 服务提供程序

SAN 服务提供程序通常安装为与 Windows 套接字交换机接口的基本 Windows 套接字服务提供程序。 尽管可以改为安装 SAN 服务提供程序供应用程序直接使用,但 Windows 套接字直接技术不支持以这种方式使用 SAN 服务提供程序。 安装的供应用程序直接使用的 SAN 服务提供程序会导出其本机地址系列和协议特征,而不是 TCP/IP 协议的特征。

通过 Windows 套接字开关间接向应用程序公开的 SAN 服务提供商必须在 SAN 服务提供商WSAPROTOCOL_INFOW结构的 dwProviderFlags 成员中设置 PFL_HIDDEN 标志。 若要在操作系统上安装 SAN 服务提供程序,SAN 服务提供商的安装机制会在调用 WSCInstallProvider 函数时传递此结构。 例如,SAN 服务提供商的安装机制可以是安装程序或由 SAN 服务提供商导出并由 INF 文件指令调用的函数。

SAN 服务提供程序的安装机制必须将类型REG_BINARY的值添加到注册表中的以下项,然后 Windows 套接字开关才能将 SAN 服务提供程序检测为基本 Windows 套接字服务提供程序:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock\
Parameters\TCP on SAN

此值包含来自 WSAPROTOCOL_INFOW 结构的 ProviderId 成员中的值的二进制表示形式。 此值向 Windows 套接字开关注册 SAN 服务提供程序。 此成员包含供应商分配给 SAN 服务提供商的全局唯一标识符 (GUID) 。

供应商还可以分配表示此 GUID 的唯一名称,例如:

  • 产品的商标名称

  • 唯一数值

  • GUID 的文本表示形式

注册 SAN 服务提供商

  1. 开关调用 WSAProviderConfigChange 函数来检测 Windows 套接字提供程序安装和删除事件。

  2. 安装新的 Windows 套接字服务提供程序后,开关会调用 WSCEnumProtocols 函数来查询 Windows 套接字目录和注册表中的 SAN 服务提供程序列表,以确定新的服务提供商是否控制 SAN。 有关 WSCEnumProtocols 的详细信息,请参阅 Windows SDK。

  3. 如果交换机检测到新的 SAN 服务提供程序,则交换机将初始化该服务提供商,如 初始化 SAN 服务提供程序中所述。

  4. 在初始化 SAN 服务提供程序后,交换机还会调用新安装的 SAN 服务提供程序的以下函数,以便为绑定到通配符 IP 地址 (0.0.0.0.0 的任何现有侦听套接字提供服务) (通配符 IP 地址意味着 SAN 服务提供商应接受来自其控制的所有 NIC) 的传入连接请求:

    WSPSocket
    创建套接字

    WSPBind
    将套接字绑定到通配符 IP 地址

    WSPListen
    将套接字设置为确认传入连接请求并将传入连接请求排入队列,直到交换机接受

    注意 从 Windows Vista 开始,通配符 IP 地址 0.0.0.0 不可用。 同样从 Windows Vista 开始,如果 IPAutoconfigurationEnabled 注册表项设置为值 0,则禁用自动 IP 地址分配,并且不分配 IP 地址。 在这种情况下, ipconfig 命令行工具不会显示 IP 地址。 如果密钥设置为非零值,则会自动分配 IP 地址。 此项可以位于注册表中的以下路径:

    HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Services\Tcpip\Parameters\IPAutoconfigurationEnabled

    HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Services\Tcpip\Parameters\Interfaces\GUID\IPAutoconfigurationEnabled