OVERLAPPED over;
ZerMemory(&over,sizeof(OVERLAPPED));
WSASend(s, &DataBuf, 1, &SendBytes, 0,&over, NULL);
這樣能成功.
如果不執(zhí)行ZerMemory(&over,sizeof(OVERLAPPED));
WSASend就會(huì)失敗,錯(cuò)誤是"句柄無(wú)效",請(qǐng)問(wèn)高手這是為什么?
還有,如果同時(shí)執(zhí)行兩次WSASend,OVERLAPPED只有一個(gè),能成功嗎?系統(tǒng)是怎樣分別出哪次WSASend?
謝謝!
======================================================================================
typedef struct _OVERLAPPED {
ULONG_PTR Internal;
ULONG_PTR InternalHigh;
DWORD Offset;
DWORD OffsetHigh;
HANDLE hEvent;
} OVERLAPPED;
注意結(jié)構(gòu)里有HANDLE hEvent
當(dāng)沒(méi)使用ZeroMemory時(shí),hEvent被填充為0xCCCCCCCC,或其他的,就會(huì)出現(xiàn)"句柄無(wú)效"的錯(cuò)誤
======================================================================================
但使用了ZeroMemory時(shí),hEvent被填充為0x00000000,也不是一個(gè)有效的句柄呀,繼續(xù).
======================================================================================
sdk的代碼中hEvent = NULL。這就是原因!因?yàn)槟憧梢圆皇褂檬录模磎sdn吧!