OVERLAPPED over;
ZerMemory(&over,sizeof(OVERLAPPED));
WSASend(s, &DataBuf, 1, &SendBytes, 0,&over, NULL);
這樣能成功.
如果不執行ZerMemory(&over,sizeof(OVERLAPPED));
WSASend就會失敗,錯誤是"句柄無效",請問高手這是為什么?
還有,如果同時執行兩次WSASend,OVERLAPPED只有一個,能成功嗎?系統是怎樣分別出哪次WSASend?
謝謝!
======================================================================================
typedef struct _OVERLAPPED {
ULONG_PTR Internal;
ULONG_PTR InternalHigh;
DWORD Offset;
DWORD OffsetHigh;
HANDLE hEvent;
} OVERLAPPED;
注意結構里有HANDLE hEvent
當沒使用ZeroMemory時,hEvent被填充為0xCCCCCCCC,或其他的,就會出現"句柄無效"的錯誤
======================================================================================
但使用了ZeroMemory時,hEvent被填充為0x00000000,也不是一個有效的句柄呀,繼續.
======================================================================================
sdk的代碼中hEvent = NULL。這就是原因!因為你可以不使用事件的,看msdn吧!