使用IOCP时如何初始化WSAOVERLAPPED?
How to initialize WSAOVERLAPPED when using IOCP?
我不确定在使用 IOCP 时如何初始化 WSAOVERLAPPED
。我认为我根本不需要初始化它,我只将 WSAOVERLAPPED.hEvent
设置为 NULL(也不确定这是否有必要)。此代码是否正确:
// Send data
char buffer[1024];
WSABUF wsaBuf;
wsaBuf.buf = buffer;
wsaBuf.len = 1024;
WSAOVERLAPPED wsaOverlapped;
wsaOverlapped.hEvent = NULL;
WSASend(s, &wsaBuf, 1, NULL, 0, &wsaOverlapped, NULL);
此外,使用 WSARecv()
时初始化 OVERLAPPED
是否与初始化 WSAOVERLAPPED
相同?
WSAOVERLAPPED
结构受制于the same rules as the OVERLAPPED
structure,即
Any unused members of this structure should always be initialized to zero before the structure is used in a function call. Otherwise, the function may fail and return ERROR_INVALID_PARAMETER.
memset(&wsaOverlapped, 0, sizeof(wsaOverlapped));
或者明确地将所有值设置为零。
我不确定在使用 IOCP 时如何初始化 WSAOVERLAPPED
。我认为我根本不需要初始化它,我只将 WSAOVERLAPPED.hEvent
设置为 NULL(也不确定这是否有必要)。此代码是否正确:
// Send data
char buffer[1024];
WSABUF wsaBuf;
wsaBuf.buf = buffer;
wsaBuf.len = 1024;
WSAOVERLAPPED wsaOverlapped;
wsaOverlapped.hEvent = NULL;
WSASend(s, &wsaBuf, 1, NULL, 0, &wsaOverlapped, NULL);
此外,使用 WSARecv()
时初始化 OVERLAPPED
是否与初始化 WSAOVERLAPPED
相同?
WSAOVERLAPPED
结构受制于the same rules as the OVERLAPPED
structure,即
Any unused members of this structure should always be initialized to zero before the structure is used in a function call. Otherwise, the function may fail and return ERROR_INVALID_PARAMETER.
memset(&wsaOverlapped, 0, sizeof(wsaOverlapped));
或者明确地将所有值设置为零。