프로그래밍/MFC/WIN32
IOCP를 이용한 OVERLAPPED 사용시 ErrorCode(6) 관련
TFTC
2022. 4. 6. 11:47
반응형
IOCP OVERLAPPED사용할 경우 랜덤적으로 WSARecv 또는 WSASend 동작시 Error Code 6 일 발생하는 경우가 있다.
이것은 Overlapped 구조체의 hEvent 변수를 초기화하지 않고 사용해서 발생하는 것으로 해당 변수를 NULL 로 초기화해서 사용할 경우 발생하지 않는다.
아래의 경우에는 내가 사용했던 경우이다. 나중에 혹시 다시 발생하면 참고할 수 있도록 하자.
class CROverlapped : public OVERLAPPED, public CRObject
{
public:
E_TYPE_OVERLLAPED eType;
std::shared_ptr< CClientInfo> m_ClntInfo;
CROverlapped() { m_ClntInfo = nullptr;
hEvent = NULL;
}
CSocketHandle* m_Socket;
};
위 클래스는 OVERLAPPED 를 상속받았고 내부에서 hEvent 변수를 초기화하고 있는 것을 볼 수 있다.
반응형