2010-02-12 4 views
1

OVERLAPPED 구조체로 ConnectNamedPipe를 호출하고 나중에 GetLastError를 검사하면 GetLastError가 ERROR_SUCCESS를 반환하는 경우가 종종 있습니다. 내가 documentation을 읽는 방식은 절대로 일어나지 않아야합니다. 클라이언트가 이미 연결되어있는 경우 ERROR_PUCCESS가 아니라 ERROR_PIPE_CONNECTED를 설정해야합니다.ConnectNamedPipe를 호출 한 후 ERROR_SUCCESS를 반환하는 GetLastError

다른 사람이 본 사람이 있습니까? OS는 32 비트 Windows 7입니다.

답변

0

OVERLAPPED의 일반적인 기능입니다. 비동기 소켓을 가정하고 연결하기 전에 매개 변수가 괜찮은지 여부를 알려줍니다. 연결이 완료되거나 실패하면 GetOverlappedResult()이 적절한 상태를 반환합니다. 그래서 이것은 사소한 문서 오류라고 생각합니다.

+0

GetLastError()가 ConnectNamedPipe() 후에 ERROR_SUCCESS를 반환하면 ERROR_IO_PENDING으로 처리하고 GetOverlappedResult()를 호출해야합니까? – Ray

+0

종류입니다. I/O가 보류 중임을 의미하지는 않습니다. 예를 들어 부적절한 IP 주소가있는 경우와 같이 실패 할 수 있습니다. 따라서 I/O는 보류 중이 아닙니다. 그것은 아직 발생하지 않았습니다. – wallyk

0

ConnectNamedPipe 직후에 GetLastError()를 호출 해보십시오. 사이에 API를 호출하지 마십시오.

관련 문제