日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > ChatGpt >内容正文

ChatGpt

WSAIoctl 的SIO_GET_EXTENSION_FUNCTION_POINTER用法

發(fā)布時(shí)間:2023/12/20 ChatGpt 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WSAIoctl 的SIO_GET_EXTENSION_FUNCTION_POINTER用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Winsock2的其他供應(yīng)商不一定會(huì)實(shí)現(xiàn)AcceptEx函數(shù)。同樣情況也包括的其他Microsoft的特定APIs如TransmitFile,GetAcceptExSockAddrs以及其他Microsoft將在以后版本的windows里。在運(yùn)行WinNT和Win2000的系統(tǒng)上,這些APIs在Microsoft提供的DLL(mswsock.dll)里實(shí)現(xiàn),可以通過(guò)鏈接mswsock.lib或者通過(guò)WSAioctl的SIO_GET_EXTENSION_FUNCTION_POINTER操作動(dòng)態(tài)調(diào)用這些擴(kuò)展APIs.

未獲取函數(shù)指針就調(diào)用函數(shù)(如直接連接mswsock.lib并直接調(diào)用AcceptEx)的消耗是很大的,因?yàn)锳cceptEx 實(shí)際上是存在于Winsock2結(jié)構(gòu)體系之外的。每次應(yīng)用程序常試在服務(wù)提供層上(mswsock之上)調(diào)用AcceptEx時(shí),都要先通過(guò)WSAIoctl獲取該函數(shù)指針。如果要避免這個(gè)很影響性能的操作,應(yīng)用程序最好是直接從服務(wù)提供層通過(guò)WSAIoctl先獲取這些APIs的指針。

需要注意的是,通過(guò)WSAIoctl獲取AcceptEx函數(shù)指針時(shí),只需要傳遞給WSAIoctl一個(gè)有效的SOCKET即可,該Socket的類型不會(huì)影響獲取的AcceptEx函數(shù)指針。

同理可以獲取GetAcceptExSockaddrs函數(shù)指針

具體調(diào)用方式參看如下代碼(詳細(xì)參看《windows 網(wǎng)絡(luò)編程第二版》源碼第五章):

GUID??????? guidAcceptEx = WSAID_ACCEPTEX,guidGetAcceptExSockaddrs = WSAID_GETACCEPTEXSOCKADDRS;

?LPFN_ACCEPTEX??????? lpfnAcceptEx;
??? LPFN_GETACCEPTEXSOCKADDRS lpfnGetAcceptExSockaddrs;

? DWORD?????? bytes;

???????????//加載AccpetEx函數(shù)指針
??????????? rc = WSAIoctl(
??????????????????? sockobj->s,
??????????????????? SIO_GET_EXTENSION_FUNCTION_POINTER,
?????????????????? &guidAcceptEx,
??????????????????? sizeof(guidAcceptEx),
?????????????????? &lpfnAcceptEx,
??????????????????? sizeof(lpfnAcceptEx),
?????????????????? &bytes,
??????????????????? NULL,
??????????????????? NULL
??????????????????? );

//加載GetAcceptExSockaddrs函數(shù)指針

?rc = WSAIoctl(
??????????????????? sockobj->s,
??????????????????? SIO_GET_EXTENSION_FUNCTION_POINTER,
?????????????????? &guidGetAcceptExSockaddrs,
??????????????????? sizeof(guidGetAcceptExSockaddrs),
?????????????????? &lpfnGetAcceptExSockaddrs,
??????????????????? sizeof(lpfnGetAcceptExSockaddrs),
?????????????????? &bytes,
??????????????????? NULL,
??????????????????? NULL
??????????????????? );

總結(jié)

以上是生活随笔為你收集整理的WSAIoctl 的SIO_GET_EXTENSION_FUNCTION_POINTER用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。