LPWSPCANCELBLOCKINGCALL 콜백 함수(ws2spi.h)
LPWSPCancelBlockingCall 함수는 현재 진행 중인 차단 호출을 취소합니다.
구문
LPWSPCANCELBLOCKINGCALL Lpwspcancelblockingcall;
int Lpwspcancelblockingcall(
[out] LPINT lpErrno
)
{...}
매개 변수
[out] lpErrno
오류 코드에 대한 포인터입니다.
반환 값
작업이 성공적으로 취소된 경우 LPWSPCancelBlockingCall 에서 반환된 값은 0입니다. 그렇지 않으면 SOCKET_ERROR 값이 반환되고 lpErrno에서 특정 오류 코드를 사용할 수 있습니다.
오류 코드 | 의미 |
---|---|
네트워크 하위 시스템이 실패했습니다. | |
미해결 차단 호출이 없음을 나타냅니다. |
설명
이 함수는 이 스레드에 대한 미해결 차단 작업을 취소합니다. 일반적으로 다음 두 가지 상황에서 사용됩니다.
- Windows Sockets SPI 클라이언트는 서비스 공급자가 pseudoblocking을 구현하는 동안 수신된 메시지를 처리하고 있습니다. 이 경우 WSAIsBlocking 은 true입니다.
- 차단 호출이 진행 중이며 Winsock 서비스 공급자가 Winsock SPI 클라이언트의 차단 후크 함수( WPUQueryBlockingCallback에서 검색된 콜백 함수를 통해)로 다시 호출하여 이 함수를 호출합니다. 이러한 상황은 instance 완료하는 데 시간이 더 걸리는 작업에 대해 취소 옵션을 구현할 때 발생할 수 있습니다.
각 경우에 원래 차단 호출은 오류 WSAEINTR로 가능한 한 빨리 종료됩니다. (첫 번째 instance Windows 메시지 예약으로 인해 Winsock의 의사 차단 루틴으로 다시 되돌리기 제어할 때까지 종료가 수행되지 않습니다. 두 번째 instance 차단 후크 함수가 완료되는 즉시 차단 호출이 종료됩니다.)
차단 LPWSPConnect 작업의 경우 Winsock은 가능한 한 빨리 차단 호출을 종료하지만 연결이 완료되거나 다시 설정되거나 시간이 초과될 때까지 소켓 리소스를 해제할 수 없습니다. Winsock SPI 클라이언트가 즉시 새 소켓을 열려고 시도하거나(사용할 수 있는 소켓이 없는 경우) LPWSPConnect 호출을 통해 동일한 피어에 연결하는 경우에만 눈에 띄는 것입니다.
LPWSPAccept 또는 LPWSPSelect 호출을 취소해도 이러한 호출에 전달된 소켓에 부정적인 영향을 주지 않습니다. 특정 호출만 실패합니다. 취소 전에 유효한 작업은 취소 후 합법적이며 소켓의 상태는 어떤 방식으로도 영향을 받지 않습니다.
LPWSPAccept 및 LPWSPSelect 이외의 작업을 취소하면 소켓이 확정되지 않은 상태로 남을 수 있습니다. Winsock SPI 클라이언트가 소켓에서 차단 작업을 취소하는 경우 Winsock SPI 클라이언트가 소켓에서 수행할 수 있는 유일한 작업은 LPWSPCloseSocket 호출뿐이지만 다른 작업은 일부 Winsock 서비스 공급자에서 작동할 수 있습니다. Winsock SPI 클라이언트에 최대 이식성이 필요한 경우 취소 작업 후 작업 수행에 의존하지 않도록 주의해야 합니다. Winsock SPI 클라이언트는 SO_LINGER 제한 시간을 0으로 설정하고 LPWSPCloseSocket을 호출하여 연결을 다시 설정할 수 있습니다.
취소 작업으로 SOCK_STREAM 데이터 스트림의 무결성이 손상되면 Winsock 공급자는 연결을 재설정하고 WSAECONNABORTED를 사용하여 LPWSPCloseSocket 이외의 모든 이후 작업을 실패합니다.
차단 네트워크 작업이 취소되기 전에 완료된 경우 LPWSPCancelBlockingCall 이 성공적으로 반환될 수 있습니다. 이 경우 차단 작업은 LPWSPCancelBlockingCall 이 호출되지 않은 것처럼 성공적으로 반환됩니다. Winsock SPI 클라이언트가 작업이 실제로 취소되었는지 확인하는 유일한 방법은 차단 호출에서 WSAEINTR의 반환 코드를 검사 것입니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
머리글 | ws2spi.h |