Share via


Winsock 커널 이벤트

WSK(Winsock 커널) 하위 시스템은 소켓에서 새 데이터를 받은 경우 또는 소켓의 연결이 끊긴 경우와 같이 특정 소켓 이벤트가 발생할 때 WSK 애플리케이션에 비동기적으로 알릴 수 있습니다. WSK 애플리케이션이 소켓 이벤트를 비동기적으로 알리려면 WSK 애플리케이션이 적절한 이벤트 콜백 함수를 구현하고 해당 이벤트 콜백 함수를 만드는 소켓에서 사용하도록 설정해야 합니다.

참고 WSK 애플리케이션은 이벤트 콜백 함수를 구현하거나 사용할 필요가 없습니다. WSK 애플리케이션은 적절한 WSK 소켓 함수를 호출하여 대부분의 WSK 소켓 작업을 수행할 수 있습니다. 이벤트 콜백 함수를 사용해야 하는 유일한 WSK 기능은 수신 대기 소켓의 조건부 수락 모드입니다. WSK 함수 사용과 이벤트 콜백 함수 사용 간의 장점 및 단점에 대한 자세한 내용은 Winsock 커널 함수 및 이벤트 콜백 함수 사용을 참조하세요.

각 WSK 소켓 범주 는 서로 다른 소켓 이벤트 집합을 지원합니다.

기본 소켓

기본 소켓은 소켓 이벤트를 지원하지 않습니다.

수신 대기 소켓

이벤트 이벤트 콜백 함수

들어오는 연결이 수락되었습니다.

WskAcceptEvent

들어오는 연결 요청이 도착했습니다.

WskInspectEvent

들어오는 연결 요청이 삭제되었습니다.

WskAbortEvent

* 조건부 수락 모드가 활성화된 수신 대기 소켓에만 적용됩니다. 수신 대기 소켓에서 조건부 수락 모드를 사용하는 방법에 대한 자세한 내용은 수신 대기 및 들어오는 연결 수락을 참조하세요.

데이터그램 소켓

이벤트 이벤트 콜백 함수

하나 이상의 새 데이터그램이 수신되었습니다.

WskReceiveFromEvent

연결 지향 소켓

이벤트 이벤트 콜백 함수

새 데이터가 수신되었습니다.

WskReceiveEvent

소켓의 연결이 끊어졌습니다.

WskDisconnectEvent

이상적인 보내기 백로그 크기가 변경되었습니다.

WskSendBacklogEvent

WSK 애플리케이션이 소켓을 만들 때 소켓의 이벤트 콜백 함수는 기본적으로 사용하지 않도록 설정됩니다. WSK 하위 시스템이 소켓 이벤트가 발생할 때 소켓의 이벤트 콜백 함수를 호출하려면 WSK 애플리케이션에서 소켓의 이벤트 콜백 함수를 사용하도록 설정해야 합니다. 소켓의 이벤트 콜백 함수를 사용하도록 설정하고 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 이벤트 콜백 함수 사용 및 비활성화를 참조하세요.

WSK 애플리케이션이 소켓에 대한 확장 인터페이스 를 등록하는 경우 확장 인터페이스는 추가 이벤트를 지원할 수 있습니다. 소켓에 대한 확장 인터페이스를 등록하는 방법에 대한 자세한 내용은 확장 인터페이스 등록을 참조하세요.

WSK 하위 시스템은 특정 소켓과 관련이 없는 이벤트를 WSK 애플리케이션에 알릴 수도 있습니다. WSK 애플리케이션이 이러한 이벤트에 대한 알림을 받으려면 WSK 애플리케이션이 WskClientEvent 이벤트 콜백 함수를 구현해야 합니다. 현재 특정 소켓과 관련이 없는 이벤트가 정의되어 있지 않습니다. WSK 애플리케이션의 WskClientEvent 이벤트 콜백 함수는 항상 사용하도록 설정되며 사용하지 않도록 설정할 수 없습니다.

WSK 애플리케이션의 이벤트 콜백 함수는 WSK 완료 또는 이벤트 콜백 함수의 컨텍스트에서 다른 WSK 요청이 완료될 때까지 기다리지 않아야 합니다. 콜백은 DISPATCH_LEVEL 너무 많은 시간을 소비하지 않거나 커널 스택을 소모하지 않는다고 가정하여 다른 WSK 요청을 시작할 수 있지만 콜백이 IRQL = PASSIVE_LEVEL 호출되는 경우에도 완료될 때까지 기다리지 않아야 합니다.