다음을 통해 공유


PFN_WSK_INSPECT_EVENT 콜백 함수(wsk.h)

WskInspectEvent 이벤트 콜백 함수는 조건부 수락 모드가 활성화된 수신 대기 소켓에서 들어오는 연결 요청이 수신되었음을 WSK 애플리케이션에 알린 것입니다.

구문

PFN_WSK_INSPECT_EVENT PfnWskInspectEvent;

WSK_INSPECT_ACTION PfnWskInspectEvent(
  [in, optional] PVOID SocketContext,
  [in]           PSOCKADDR LocalAddress,
  [in]           PSOCKADDR RemoteAddress,
  [in, optional] PWSK_INSPECT_ID InspectID
)
{...}

매개 변수

[in, optional] SocketContext

들어오는 연결 요청이 수신된 수신 대기 소켓의 소켓 컨텍스트에 대한 포인터입니다. WSK 애플리케이션은 WskSocket 함수를 호출하여 수신 대기 소켓을 만들 때 WSK 하위 시스템에 대한 이 포인터를 제공했습니다.

[in] LocalAddress

들어오는 연결 요청이 도착한 로컬 전송 주소를 포함하는 버퍼에 대한 포인터입니다. 버퍼에는 WSK 애플리케이션이 수신 대기 소켓을 만들 때 지정한 주소 패밀리에 해당하는 특정 SOCKADDR 구조 유형이 포함됩니다.

[in] RemoteAddress

들어오는 연결 요청이 시작된 원격 전송 주소를 포함하는 버퍼에 대한 포인터입니다. 버퍼에는 WSK 애플리케이션이 수신 대기 소켓을 만들 때 지정한 주소 패밀리에 해당하는 특정 SOCKADDR 구조 유형이 포함됩니다.

[in, optional] InspectID

WSK_INSPECT_ID 구조체에 대한 포인터입니다. 구조체의 내용은 검사 중인 들어오는 연결 요청을 식별합니다. 이 포인터가 NULL이면 수신 대기 소켓이 더 이상 작동하지 않으며 WSK 애플리케이션은 WskCloseSocket 함수를 호출하여 가능한 한 빨리 수신 대기 소켓을 닫아야 합니다.

반환 값

WSK 애플리케이션의 WskInspectEvent 이벤트 콜백 함수는 다음 WSK_INSPECT_ACTION 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
WskInspectAccept
들어오는 연결 요청이 수락됩니다.
WskInspectReject
들어오는 연결 요청이 거부됩니다.
WskInspectPend
WSK 애플리케이션은 들어오는 연결 요청을 즉시 수락하거나 거부해야 하는지 여부를 확인할 수 없습니다.

설명

WSK 하위 시스템은 조건부 수락 모드가 활성화된 수신 대기 소켓에서 WSK 애플리케이션의 WskInspectEvent 이벤트 콜백 함수를 호출합니다. WSK 애플리케이션은 SO_CONDITIONAL_ACCEPT 소켓 옵션을 사용하도록 설정하여 수신 대기 소켓에서 조건부 수락 모드를 사용하도록 설정할 수 있습니다. 들어오는 연결을 조건부로 수락하는 방법에 대한 자세한 내용은 수신 대기 및 들어오는 Connections 수락을 참조하세요.

WSK 애플리케이션이 WskInspectEvent 이벤트 콜백 함수에서 WskInspectAccept 를 반환하는 경우 WSK 하위 시스템은 계속해서 소켓 연결을 설정합니다. WSK 하위 시스템은 WskAccept 함수에 대한 호출을 완료하거나 이벤트 콜백 함수가 사용하도록 설정된 경우 WSK 애플리케이션의 WskAcceptEvent 이벤트 콜백 함수를 호출하여 WSK 애플리케이션에 소켓을 반환합니다. 소켓 연결이 완전히 설정되기 전에 들어오는 연결 요청이 삭제되면 WSK 하위 시스템은 WSK 애플리케이션의 WskAbortEvent 이벤트 콜백 함수를 호출합니다.

WSK 애플리케이션이 WskInspectEvent 이벤트 콜백 함수에서 WskInspectReject를 반환하는 경우 들어오는 연결 요청이 삭제되고 소켓 연결이 설정되지 않습니다.

WSK 애플리케이션이 WskInspectEvent 이벤트 콜백 함수에서 WskInspectPend를 반환하는 경우 들어오는 연결 요청을 수락하거나 거부할지 여부를 결정한 후 애플리케이션에서 WskInspectComplete 함수를 호출해야 합니다(들어오는 연결 요청이 그 동안 중단되지 않는 한). WSK 애플리케이션은 WskInspectEvent 이벤트 콜백 함수에서 반환하기 전에 InspectID 매개 변수가 가리키는 WSK_INSPECT_ID 구조체의 내용을 자체 WSK_INSPECT_ID 구조체에 복사해야 합니다. WSK 애플리케이션은 검사를 완료할 때 자체 WSK_INSPECT_ID 구조에 대한 포인터를 WskInspectComplete 함수에 전달합니다. 또한 WSK 애플리케이션은 이 구조를 사용하여 검사가 완료되기 전에 요청이 중단된 경우 들어오는 연결 요청을 식별합니다.

LocalAddressRemoteAddress 매개 변수가 가리키는 SOCKADDR 구조체는 WskInspectEvent 이벤트 콜백 함수를 호출하는 동안에만 유효합니다. WSK 애플리케이션이 WskInspectEvent 이벤트 콜백 함수에서 WskInspectPend를 반환하고 검사의 나머지 기간 동안 이러한 전송 주소가 필요한 경우 WskInspectEvent 이벤트 콜백 함수에서 반환하기 전에 이러한 구조체의 내용을 자체 SOCKADDR 구조체에 복사해야 합니다.

WSK 하위 시스템은 IRQL <= DISPATCH_LEVEL WSK 애플리케이션의 WskInspectEvent 이벤트 콜백 함수를 호출합니다.

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 Windows
헤더 wsk.h(Wsk.h 포함)
IRQL <= DISPATCH_LEVEL

추가 정보

SOCKADDR

WSK_CLIENT_LISTEN_DISPATCH

WSK_INSPECT_ID

WskAbortEvent

WskAccept

WskAcceptEvent

WskCloseSocket

WskControlSocket

WskInspectComplete

WskSocket