다음을 통해 공유


SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT 제어 코드

SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT 소켓 I/O 컨트롤 작업을 사용하면 Winsock 클라이언트가 리디렉션된 연결에 대한 리디렉션 레코드에 대한 리디렉션 컨텍스트를 검색할 수 있습니다.

WFP 리디렉션 레코드는 리디렉션된 연결과 원래 연결이 논리적으로 관련되도록 WFP가 아웃바운드 프록시 연결에서 설정해야 하는 불투명 데이터의 버퍼입니다.

참고SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 쿼리는 연결이 WFP 클라이언트에 의해 FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 또는 FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 계층에서 리디렉션된 경우에만 사용할 수 있습니다.

리디렉션에 대한 자세한 내용은 바인딩 또는 연결 리디렉션 사용을 참조하세요.

리디렉션 레코드에 대한 리디렉션 컨텍스트를 쿼리하기 위해 Winsock 클라이언트는 다음 매개 변수를 사용하여 WskControlSocket 함수를 호출합니다.

매개 변수

RequestType

WskIoctl

ControlCode

SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT

수준

0

InputSize

0

InputBuffer

NULL

OutputSize

OutputBuffer 매개 변수가 가리키는 버퍼의 크기(바이트)입니다.

OutputBuffer

허용되는 TCP 연결에 대한 리디렉션 레코드에 대한 리디렉션 컨텍스트를 수신하는 버퍼에 대한 포인터입니다. 버퍼의 크기는 OutputSize 매개 변수에 지정됩니다.

OutputSizeReturned

OutputBuffer 매개 변수가 가리키는 버퍼에 복사되는 데이터 바이트 수를 수신하는 ULONG 형식 변수에 대한 포인터입니다.

Irp

IRP에 대한 포인터입니다.

호출자는 다음 방법 중 하나로 이 쿼리를 수행할 수 있습니다.

  • OutputBuffer를 약 1KB 크기의 큰 버퍼로 설정할 수 있습니다. 출력 버퍼 크기가 충분히 크지 않으면 WskControlSocketSTATUS_BUFFER_TOO_SMALL 반환하고 OutputSizeReturned 에는 버퍼의 필요한 크기가 포함됩니다. 그런 다음 더 큰 버퍼를 할당하고 SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT 요청 및 OutputBuffer를 더 큰 버퍼로 설정하여 WskControlSocket을 다시 호출할 수 있습니다.
  • 또는 OutputSize 매개 변수를 0으로 설정하고 OutputBuffer 를 NULL로 설정한 다음 WskControlSocket을 호출할 수 있습니다. 완료되면 WskControlSocket 함수는 OutputSizeReturned 매개 변수에서 출력 버퍼 크기(바이트)를 검색합니다. 그런 다음 적절한 크기의 버퍼를 할당하고 SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT 요청 및 OutputBuffer를 버퍼로 설정하여 WskControlSocket을 다시 호출할 수 있습니다.

참고SDK(SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT)를 사용하여 사용자 모드 애플리케이션에서 이 쿼리를 수행할 수도 있습니다.

이러한 유형의 요청에 대해 Winsock 클라이언트는 IRP에 대한 포인터와 완료 루틴에 대한 포인터를 지정해야 합니다. IRP는 더 높은 드라이버가 클라이언트에 전달하거나 클라이언트가 IRP를 할당하도록 선택할 수 있습니다. 완료 루틴을 지정하려면 클라이언트가 IoSetCompletionRoutine을 호출해야 합니다. 자세한 내용은 Winsock 커널 함수에서 IRP 사용을 참조하세요.

Winsock 클라이언트는 IRP가 WSK 하위 시스템에 의해 완료될 때까지 할당된 버퍼를 해제해서는 안 됩니다. WSK 하위 시스템이 IRP를 완료하면 완료 루틴을 호출하여 클라이언트에 알 수 있습니다. 해당 버퍼에 대한 참조는 완료 루틴의 Context 매개 변수에서 WSK 하위 시스템에 의해 클라이언트에 전달됩니다. 버퍼의 크기는 Irp-IoStatus.Information>에 저장됩니다.

클라이언트는 Irp-IoStatus.Status>를 확인하여 IRP의 상태 가져올 수 있습니다. Irp-> 요청이 성공하면 IoStatus.StatusSTATUS_SUCCESS 설정됩니다. 그렇지 않으면 호출에 성공하지 못한 경우 STATUS_INTEGER_OVERFLOW, STATUS_NOT_FOUND, STATUS_BUFFER_TOO_SMALL 또는 STATUS_ACCESS_DENIED 포함됩니다.

요구 사항

지원되는 최소 클라이언트

Windows 8

지원되는 최소 서버

Windows Server 2012

헤더

Mstcpip.h

Irql

PASSIVE_LEVEL

추가 정보

바인딩 또는 연결 리디렉션 사용

Winsock 커널 함수와 함께 IRP 사용

SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS

SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT(SDK)