Rem*_*eau 14
注意此函数是Windows套接字规范的Microsoft特定扩展
SIO_GET_EXTENSION_FUNCTION_POINTER(操作码设置:O,I,T == 1)
检索指向相关服务提供者支持的指定扩展函数的指针.输入缓冲区包含全局唯一标识符(GUID),其值标识所讨论的扩展函数.指向所需函数的指针在输出缓冲区中返回.扩展功能标识符由服务提供商供应商建立,应包含在描述扩展功能和语义的供应商文档中.
在大多数系统上,Microsoft的提供商是唯一安装的提供商.但是,第三方提供商确实存在(自定义TCP堆栈等),也可以安装.根据以下
WSADATA文档WSAStartup():
Windows套接字的体系结构在版本2中更改为支持多个提供程序,WSADATA不再适用于单个供应商的堆栈.
哪个进一步支持:
使用时创建套接字时socket(),您无法控制使用哪个提供程序.使用WSASocket()替代方法创建套接字时,可以选择通过lpProtocolInfo参数指定特定的提供程序.
WSARecvMsg()仅在Microsoft的提供程序中可用,因此您必须将其传递给与SOCKET同一提供程序关联的服务器. WSAIoctrl()可用于向命令SOCKET所属的提供程序发送命令.因此,通过使用SIO_GET_EXTENSION_FUNCTION_POINTER,您可以确保WSARecvMsg()指定的提供程序支持(或任何其他特定于供应商的功能)SOCKET,从而与之兼容SOCKET.
Microsoft提供商通过WSAIoctrl()1提供的其他Microsoft特定功能包括:
AcceptEx()ConnectEx()DisconnectEx()GetAcceptExSockAddrs()TransmitFile()TransmitPackets()WSASendMsg()一旦检索指向一个特定供应商的功能,你可以重复使用指针,就像你的供应商保持在内存中加载(第一次调用之间要长WSAStartup(),并在最后一次通话WSACleanup()),并会传递给它SOCKET的是属于该提供者.
1:每个特定于提供商的扩展机制
在Windows Vista及更高版本中,新的Winsock系统扩展直接从Winsock DLL导出,因此不需要WSAIoctl函数来加载这些扩展.在Windows Vista和更高版本中提供的新的扩展功能,包括
WSAPoll和WSASendMsg那都从ws2_32.dll导出的函数.
| 归档时间: |
|
| 查看次数: |
502 次 |
| 最近记录: |