다음을 통해 공유


PFN_WSK_INSPECT_COMPLETE 콜백 함수(wsk.h)

WskInspectComplete 함수는 조건부 수락 모드가 설정된 수신 대기 소켓에서 수신된 이전에 보류된 들어오는 연결 요청의 검사를 완료합니다.

통사론

PFN_WSK_INSPECT_COMPLETE PfnWskInspectComplete;

NTSTATUS PfnWskInspectComplete(
  [in]      PWSK_SOCKET ListenSocket,
  [in]      PWSK_INSPECT_ID InspectID,
  [in]      WSK_INSPECT_ACTION Action,
  [in, out] PIRP Irp
)
{...}

매개 변수

[in] ListenSocket

WSK_SOCKET 구조체에 대한 포인터입니다. 이 포인터는 WSK 애플리케이션이 검사하는 들어오는 연결 요청을 수신한 수신 대기 소켓을 지정합니다.

[in] InspectID

WSK_INSPECT_ID 구조체에 대한 포인터입니다. 구조체의 내용은 WSK 애플리케이션이 검사하는 특정 연결 요청을 식별합니다.

[in] Action

WSK 애플리케이션이 들어오는 연결 요청을 수락하거나 거부할지 여부를 지정하는 값입니다. WSK 애플리케이션은 이 매개 변수에 WskInspectAccept 또는 WskInspectReject 지정해야 합니다.

[in, out] Irp

WSK 하위 시스템이 다시 시작 작업을 비동기적으로 완료하는 데 사용하는 호출자 할당 IRP에 대한 포인터입니다. WSK 함수와 함께 IRP를 사용하는 방법에 대한 자세한 내용은 Winsock 커널 함수IRP를 사용하는 것을 참조하세요.

반환 값

WskInspectComplete 다음 NTSTATUS 코드 중 하나를 반환합니다.

반환 코드 묘사
STATUS_SUCCESS
이전에 보류된 검사 작업이 다시 시작되었습니다. IRP는 성공 상태로 완료됩니다.
STATUS_PENDING
WSK 하위 시스템이 검사 작업을 즉시 다시 시작할 수 없습니다. WSK 하위 시스템은 들어오는 연결 요청의 검사 작업을 재개한 후 IRP를 완료합니다. 검사 작업을 다시 시작하면 IRP의 IoStatus.Status 필드에 반환됩니다.
STATUS_FILE_FORCED_CLOSED
소켓이 더 이상 작동하지 않습니다. IRP는 실패 상태로 완료됩니다. WSK 애플리케이션은 WskCloseSocket 함수를 호출하여 가능한 한 빨리 소켓을 닫아야 합니다.
기타 상태 코드
오류가 발생했습니다. IRP는 실패 상태로 완료됩니다.

발언

WSK 애플리케이션은 WskInspectComplete 함수를 호출하여 애플리케이션의 WskInspectEvent 이벤트 콜백 함수가 이전에 WskInspectPend 반환한 들어오는 연결 요청 검사를 완료합니다.

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

WSK 하위 시스템은 애플리케이션의 WskInspectEvent 이벤트 콜백 함수를 호출할 때 WSK 애플리케이션에 WSK_INSPECT_ID 구조에 대한 포인터를 전달했습니다. WSK 애플리케이션은 WskInspectEvent 이벤트 콜백 함수에서 WskInspectPend 반환하기 전에 해당 구조체의 내용을 자체 WSK_INSPECT_ID 구조로 복사했습니다. WSK 애플리케이션은 WskInspectComplete 함수를 호출할 때 InspectID 매개 변수의 자체 WSK_INSPECT_ID 구조에 대한 포인터를 전달합니다.

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

WSK 애플리케이션이 Action 매개 변수에 WskInspectReject 지정하면 들어오는 연결 요청이 삭제되고 소켓 연결이 설정되지 않습니다.

WSK 애플리케이션이 WskInspectComplete 함수를 호출하기 전에 원격 시스템에서 들어오는 연결 요청을 삭제하면 WSK 하위 시스템은 WSK 애플리케이션의 WskAbortEvent 이벤트 콜백 함수를 호출합니다.

WSK 애플리케이션이 중단된 들어오는 연결 요청에서 WskInspectComplete 함수를 호출하는 경우 WSK 애플리케이션이 Action 매개 변수에서 WskInspectAccept 지정한 경우에도 연결이 설정되지 않습니다.

요구 사항

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

참고 항목

SO_CONDITIONAL_ACCEPT

WSK_INSPECT_ID

WSK_PROVIDER_LISTEN_DISPATCH

WSK_SOCKET

WskAbortEvent

WskAccept

WskAcceptEvent

WskInspectEvent