初始化 SAN 服务提供程序
Windows 套接字交换机初始化 SAN 服务提供程序,如下图所示。
Windows 加载 Windows 套接字将 DLL 切换到应用程序进程后,将发生以下一系列事件。
初始化 SAN 服务提供程序
交换机检测并加载 TCP/IP 提供程序,然后查询注册表中的 SAN 服务提供商列表,以检测所有这些提供程序,如 安装 SAN 服务提供程序中所述。 开关调用每个检测到的提供程序的 WSPStartupEx 函数来启动使用该提供程序。
在 WSPStartupEx 调用中,交换机将指针传递到包含 TCP/IP 提供程序的协议信息的 WSAPROTOCOL_INFOW 结构。 TCP/IP 提供程序的协议向 SAN 服务提供程序指示它已由交换机(而不是其他分层服务提供商或 Windows 套接字接口)初始化。 交换机传递 TCP/IP 提供程序的协议信息,而不是 SAN 服务提供商的传输信息,如Microsoft Windows SDK文档的 Windows 套接字服务提供商接口 (SPI) 部分中的建议。
由于 SAN 服务提供程序可以检测到它由交换机初始化,因此它可以向交换机公开相应的入口点函数集。 如果 SAN 服务提供程序由应用程序直接初始化,则它可以向该应用程序公开另一组入口点函数。 如果 SAN 服务提供程序在交换机下分层,该提供程序必须遵守本部分所述的扩展和行为。
SAN 服务提供商的代理驱动程序获取分配给其控制下每个 NIC 的 IP 地址列表,如 注册 SAN NIC 通知中所述。 SAN 服务提供程序使用专用接口从其代理驱动程序检索此列表。 交换机调用 SAN 服务提供商的 WSPSocket 函数来创建套接字。 交换机使用此套接字检索分配给受 SAN 服务提供商代理驱动程序控制的 NIC 的 IP 地址的完整列表。 交换机检索此列表,如 接收和转换 NIC 地址中所述。 基于此列表和其他 SAN 服务提供商的列表,交换机生成一个表,用于将本地 IP 子网映射到 SAN 服务提供商。
Windows 套接字开关必须检索指向 SAN 服务提供商入口点函数的指针,这些函数扩展 Windows 套接字服务提供商接口 (SPI) 以与 SAN 一起使用。 为了检索其中每个扩展函数,Windows 套接字交换机调用 SAN 服务提供商的 WSPIoctl 函数,并传递 SIO_GET_EXTENSION_FUNCTION_POINTER 命令代码以及 GUID,其值标识其中一个扩展函数。
有关这些函数的完整说明,请参阅 适用于 SAN 的 Windows 套接字 SPI 扩展。
交换机可以创建线程以支持侦听套接字和非阻止连接请求,如 设置 SAN 连接中所述。