在Windows 10上的Visual Studio 2015中,我收到错误error C3861: 'DisconnectEx': identifier not found
。根据DisconnectEx上的documentation,该函数在标头mswsock.h
中定义,但包含该标头不起作用。这个定义是否移至其他地方文档中有错误吗?
答案 0 :(得分:1)
DisconnectEx()
函数本身未在mswsock.h
中声明。请仔细阅读文档:
注意必须在运行时通过调用指定了
DisconnectEx
操作码的WSAIoctl函数来获取SIO_GET_EXTENSION_FUNCTION_POINTER
函数的函数指针。传递给WSAIoctl
函数的输入缓冲区必须包含WSAID_DISCONNECTEX
,这是一个全局唯一标识符(GUID),其值标识DisconnectEx
扩展函数。成功时,WSAIoctl
函数返回的输出包含指向DisconnectEx
函数的指针。WSAID_DISCONNECTEX
GUID在Mswsock.h
头文件中定义。
例如:
SOCKET s = ...;
...
GUID guidDisconnectEx = WSAID_DISCONNECTEX;
LPFN_DISCONNECTEX lpDisconnectEx = NULL;
DWORD cbBytesReturned = 0;
WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &guidDisconnectEx, sizeof(guidDisconnectEx), &lpDisconnectEx, sizeof(lpDisconnectEx), &cbBytesReturned, NULL, NULL);
...
if (lpDisconnectEx)
lpDisconnectEx(s);