WSAGetOverlappedResult 함수(winsock2.h)
WSAGetOverlappedResult 함수는 지정된 소켓에서 겹치는 작업의 결과를 검색합니다.
구문
BOOL WSAAPI WSAGetOverlappedResult(
[in] SOCKET s,
[in] LPWSAOVERLAPPED lpOverlapped,
[out] LPDWORD lpcbTransfer,
[in] BOOL fWait,
[out] LPDWORD lpdwFlags
);
매개 변수
[in] s
소켓을 식별하는 설명자입니다.
겹치는 작업을 지원하는 Winsock 함수를 호출하여 겹치는 작업을 시작할 때 지정한 것과 동일한 소켓입니다. 이러한 함수에는 AcceptEx, ConnectEx, DisconnectEx, TransmitFile, TransmitPackets, WSARecv, WSARecvFrom, LPFN_WSARECVMSG(WSARecvMsg), WSASend, WSASendMsg, WSASendTo 및 WSAIoctl이 포함됩니다.
[in] lpOverlapped
겹치는 작업이 시작될 때 지정된 WSAOVERLAPPED 구조체에 대한 포인터입니다. 이 매개 변수는 NULL 포인터가 아니어야 합니다.
[out] lpcbTransfer
송신 또는 수신 작업 또는 WSAIoctl 함수에 의해 실제로 전송된 바이트 수를 수신하는 32비트 변수에 대한 포인터입니다. 이 매개 변수는 NULL 포인터가 아니어야 합니다.
[in] fWait
함수가 보류 중인 겹치는 작업이 완료될 때까지 대기해야 하는지 여부를 지정하는 플래그입니다. TRUE이면 작업이 완료될 때까지 함수가 반환되지 않습니다. FALSE이고 작업이 아직 보류 중인 경우 함수는 FALSE를 반환하고 WSAGetLastError 함수는 WSA_IO_INCOMPLETE 반환합니다. 겹치는 작업에서 이벤트 기반 완료 알림을 선택한 경우에만 fWait 매개 변수를 TRUE 로 설정할 수 있습니다.
[out] lpdwFlags
완료 상태 보완하는 하나 이상의 플래그를 수신할 32비트 변수에 대한 포인터입니다. 겹치는 작업이 WSARecv 또는 WSARecvFrom을 통해 시작된 경우 이 매개 변수에는 lpFlags 매개 변수에 대한 결과 값이 포함됩니다. 이 매개 변수는 NULL 포인터가 아니어야 합니다.
반환 값
WSAGetOverlappedResult가 성공하면 반환 값은 TRUE입니다. 즉, 겹치는 작업이 성공적으로 완료되었으며 lpcbTransfer 가 가리키는 값이 업데이트되었습니다.
WSAGetOverlappedResult가 FALSE를 반환하는 경우 이는 겹치는 작업이 완료되지 않았거나, 겹치는 작업이 완료되었지만 오류가 있거나, WSAGetOverlappedResult에 대한 하나 이상의 매개 변수 오류로 인해 겹치는 작업의 완료 상태 확인할 수 없음을 의미합니다. 실패 시 lpcbTransfer 가 가리키는 값은 업데이트되지 않습니다. WSAGetLastError를 사용하여 오류의 원인을 확인합니다(WSAGetOverlappedResult 함수 또는 연결된 겹치는 작업).
오류 코드 | 의미 |
---|---|
이 함수를 사용하기 전에 성공적인 WSAStartup 호출이 발생해야 합니다. | |
네트워크 하위 시스템이 실패했습니다. | |
설명자가 소켓이 아닙니다. | |
WSAOVERLAPPED 구조체의 hEvent 매개 변수에 유효한 이벤트 개체 핸들이 없습니다. | |
매개 변수 중 하나는 허용되지 않습니다. | |
fWait 매개 변수가 FALSE이고 I/O 작업이 아직 완료되지 않았습니다. | |
lpOverlapped, lpcbTransfer 또는 lpdwFlags 매개 변수 중 하나 이상이 사용자 주소 공간의 유효한 부분에 있지 않습니다. lpOverlapped, lpcbTransfer 또는 lpdwFlags 매개 변수가 Windows Server 2003 이하의 NULL 포인터인 경우 이 오류가 반환됩니다. |
설명
WSAGetOverlappedResult 함수는 s 매개 변수에 지정된 소켓에 대해 lpOverlapped 매개 변수에 지정된 겹치는 작업의 결과를 보고합니다. WSAGetOverlappedResult 함수는 겹치는 함수가 호출될 때 지정된 소켓 설명자 및 WSAOVERLAPPED 구조체를 전달합니다. 보류 중인 작업은 작업을 시작한 함수가 FALSE 를 반환하고 WSAGetLastError 함수가 WSA_IO_PENDING 반환할 때 표시됩니다. WSARecv와 같은 I/O 작업이 보류 중인 경우 작업을 시작한 함수는 WSAOVERLAPPED 구조체의 hEvent 멤버를 서명되지 않은 상태로 다시 설정합니다. 그런 다음 보류 중인 작업이 완료되면 시스템에서 이벤트 개체를 신호 상태로 설정합니다.
fWait 매개 변수가 TRUE이면 WSAGetOverlappedResult는 이벤트 개체가 신호 상태가 될 때까지 대기하여 보류 중인 작업이 완료되었는지 여부를 결정합니다. 클라이언트는 fWait 매개 변수를 TRUE로 설정할 수 있지만 I/O 작업이 요청되었을 때 이벤트 기반 완료 알림을 선택한 경우에만 가능합니다. 다른 형태의 알림을 선택한 경우 WSAOVERLAPPED 구조체의 hEvent 매개 변수 사용법이 다르며 fWait을 TRUE로 설정하면 예측할 수 없는 결과가 발생합니다.
WSAGetOverlappedResult 함수가 lpOverlapped, lpcbTransfer 또는 lpdwFlags 매개 변수를 Windows Vista의 NULL 포인터로 설정하여 호출하면 액세스 위반이 발생합니다. WSAGetOverlappedResult 함수가 lpOverlapped, lpcbTransfer 또는 lpdwFlags 매개 변수를 Windows Server 2003 이하의 NULL 포인터로 설정하여 호출하면 WSAEFAULT 오류 코드가 반환됩니다.
Windows 8.1 및 Windows Server 2012 R2: 이 함수는 Windows 8.1, Windows Server 2012 R2 이상에서 Windows 스토어 앱에서 지원됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8.1, Windows Vista [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | winsock2.h |
라이브러리 | Ws2_32.lib |
DLL | Ws2_32.dll |