Windows Sockets2 详解1--提供者专用扩展机制
时间:2010-11-15 来源:zhoujie
扩展函数的函数原型、GUID值以及详细调用信息由服务提供商负责提供,调用者不需要知道其实现细节。这使得对与同一个功能函数可以由多个服务提供商提供。
mswsock.h中包含了微软对Windows Sockets Api的专有扩展(微软也是一个服务提供商啊)。下面代码详细演示了如何使用微软提供的扩展函数LPFN_DISCONNECTEX

void * mDisconnectExFunc;
int loadDisconnectEx( SOCKET fd )
{
LPFN_DISCONNECTEX fnDisConnectEx = NULL;
GUID guidDisConnectEx = WSAID_DISCONNECTEX;
DWORD dwByte;
::WSAIoctl( fd, SIO_GET_EXTENSION_FUNCTION_POINTER,
&guidDisConnectEx, sizeof(guidDisConnectEx),
&fnDisConnectEx, sizeof(fnDisConnectEx),
&dwByte, NULL, NULL);
mDisconnectExFunc = fnDisConnectEx;
return NULL != mDisconnectExFunc ? 0 : -1;
}
//2、调用
LPFN_DISCONNECTEX fnDisConnectEx = (LPFN_DISCONNECTEX)mDisconnectExFunc;
if( NULL != fnDisConnectEx ) {
return fnDisConnectEx( fd, lpOverlapped, dwFlags, reserved );
}
相关阅读 更多 +