Share via


LPWSPCLEANUP 콜백 함수(ws2spi.h)

LPWSPCleanup 함수는 Windows 소켓 서비스 공급자의 사용을 종료합니다.

구문

LPWSPCLEANUP Lpwspcleanup;

int Lpwspcleanup(
  [out] LPINT lpErrno
)
{...}

매개 변수

[out] lpErrno

오류 코드에 대한 포인터입니다.

반환 값

작업이 성공적으로 시작된 경우 반환 값은 0입니다. 그렇지 않으면 SOCKET_ERROR 값이 반환되고 lpErrno에서 특정 오류 번호를 사용할 수 있습니다.

오류 코드 의미
WSANOTINITIALISED
이 함수를 사용하기 전에 **WSPStartup** 호출이 성공해야 합니다.
WSAENETDOWN
네트워크 하위 시스템이 실패했습니다.
WSAEINVAL
이름 공간 공급자에 지정된 공급자 식별자는 이름 공간 공급자에 의해 관리되지 않습니다.

설명

Windows Sockets 2 SPI 클라이언트는 Winsock 서비스 공급자를 사용하기 전에 성공적인 WSPStartup 호출을 수행해야 합니다. Winsock 서비스 공급자의 사용을 완료하면 SPI 클라이언트는 LPWSPCleanup 을 호출하여 Winsock 서비스 공급자의 등록을 취소하고 서비스 공급자가 Windows Sockets 2 클라이언트를 대신하여 할당된 모든 리소스를 해제할 수 있도록 합니다. SPI 클라이언트는 둘 이상의 WSPStartup 호출을 할 수 있습니다. 각 WSPStartup 호출에 대해 해당 LPWSPCleanup 호출도 발급됩니다. 서비스 공급자에 대한 최종 LPWSPCleanup 만 실제 정리를 수행합니다. 앞의 호출은 Winsock 서비스 공급자의 내부 참조 수를 감소시킬 뿐입니다.

내부 참조 수가 0에 도달하고 실제 정리 작업이 시작되면 이 프로세스의 스레드에서 발급된 보류 중인 차단 또는 비동기 호출은 알림 메시지를 게시하거나 이벤트 개체에 신호를 표시하지 않고 취소됩니다. 이 프로세스의 모든 스레드에서 발급한 보류 중인 겹치는 송신 및 수신 작업(LPWSPSend, LPWSPSendTo, LPWSPRecv, LPWSPRecvFrom 과 겹치는 소켓 포함)도 이벤트 개체를 설정하거나 지정된 경우 완료 루틴을 호출하지 않고 취소됩니다. 이 경우 겹치는 보류 중인 작업이 오류 상태 WSA_OPERATION_ABORTED 실패합니다. LPWSPCleanup이 호출될 때 열리는 모든 소켓은 다시 설정되고 LPWSPCloseSocket이 호출된 것처럼 자동으로 할당 취소됩니다. LPWSPCloseSocket으로 닫혔지만 전송할 보류 중인 데이터가 여전히 있는 소켓은 영향을 받지 않지만 보류 중인 데이터는 여전히 전송됩니다.

이 함수는 서비스 공급자 DLL이 메모리에서 언로드될 준비가 될 때까지 반환해서는 안 됩니다. 특히 전송할 남은 데이터는 이미 전송되었거나 서비스 공급자의 DLL과 함께 메모리에서 언로드되지 않는 전송 스택의 일부에 의해 전송을 위해 큐에 대기해야 합니다.

Winsock 서비스 공급자는 LPWSPCleanup 을 호출하지 않고 종료되는 프로세스를 처리할 준비가 되어 있어야 합니다(예: 오류의 결과). Winsock 서비스 공급자는 LPWSPCleanup 이 Ws2_32.dll 즉시 WSPStartup 을 호출하여 Winsock 사용량을 다시 설정할 수 있는 상태로 유지해야 합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
머리글 ws2spi.h

참고 항목

LPWSPCloseSocket

LPWSPShutdown

WSPStartup