本部分简要介绍了 SAN 服务提供商 DLL 必须提供的 SAN 扩展函数。 这些函数扩展 Windows 套接字 SPI 以用于 SAN。 扩展函数在 Ws2san.h 中定义,并完全记录在 Windows 套接字直接引用 部分中。
除 WSPStartupEx 函数外,本节中列出的扩展函数将由 Windows 套接字开关检索。 若要检索每个扩展函数的入口点,Windows 套接字开关将调用 SAN 服务提供商的 WSPIoctl 函数,并传递SIO_GET_EXTENSION_FUNCTION_POINTER命令代码以及 GUID,其值标识这些扩展函数之一。
SAN 服务提供商必须实现以下所有扩展函数,WSPRdmaRead 和 WSPMemoryRegistrationCacheCallback 函数除外。 如果 SAN 服务提供商不支持 WSPRdmaRead 或 WSPMemoryRegistrationCacheCallback 扩展函数, 它的 WSPIoctl 函数必须在 Windows 套接字开关将入口点请求 WSPRdmaRead 或 WSPMemoryRegistrationCacheCallback时返回错误 WSAEOPNOTSUPP。
WSPStartupEx
启动 Windows 套接字开关对 SAN 服务提供商的使用。
WSPRegisterMemory
注册套接字用作数据传输作的本地源或本地目标的缓冲区数组。 此类套接字可以将此缓冲区数组用作 WSPRdmaWrite 中的源缓冲区,WSPSend 调用和 WSPRdmaRead 和 WSPRecv 调用中的接收缓冲区。
WSPDeregisterMemory
释放先前对 WSPRegisterMemory 函数的调用注册的缓冲区数组。
WSPRegisterRdmaMemory
注册向远程对等连接公开的 RDMA 缓冲区数组,以便将数据传输到该对等连接或从该对等连接传输数据。 远程对等方上的套接字可以使用此 RDMA 缓冲区数组作为 WSPRdmaWrite 调用中的目标缓冲区,WSPRdmaRead 调用中的源缓冲区。
WSPDeregisterRdmaMemory
释放先前调用 WSPRegisterRdmaMemory 函数注册的缓冲区数组。
WSPMemoryRegistrationCacheCallback
释放应用程序的缓冲区所有权以及缓冲区与物理内存之间的锁,并从 SAN NIC 中删除 SAN 服务提供商的缓存中的缓冲区和缓冲区注册。
WSPRdmaRead
从地址空间中的 RDMA 缓冲区传输数据,该缓冲区的套接字的远程对等方可以访问本地套接字可以访问的地址空间中的缓冲区。
WSPRdmaWrite
从地址空间中的源缓冲区传输数据,本地套接字可以访问该套接字的远程对等方可以访问的地址空间中的目标 RDMA 缓冲区。