SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 제어 코드
SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 소켓 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_RECORDS |
수준 |
0 |
InputSize |
0 |
InputBuffer |
영 |
OutputSize |
OutputBuffer 매개 변수가 가리키는 버퍼의 크기(바이트)입니다. |
OutputBuffer |
허용되는 TCP 연결에 대한 리디렉션 레코드를 수신하는 버퍼에 대한 포인터입니다. 버퍼의 크기는 OutputSize 매개 변수에 지정됩니다. |
OutputSizeRe가 |
OutputBuffer 매개 변수가 가리키는 버퍼에 복사되는 데이터의 바이트 수를 수신하는 ULONG형식 변수에 대한 포인터입니다. |
Irp |
IRP에 대한 포인터입니다. |
호출자는 다음 방법 중 하나를 사용하여 이 쿼리를 수행할 수 있습니다.
- OutputBuffer 약 1KB 크기의 큰 버퍼로 설정할 수 있습니다. 출력 버퍼 크기가 충분히 크지 않으면 WskControlSocketSTATUS_BUFFER_TOO_SMALL 반환하고 OutputSizeReturned 버퍼의 필요한 크기를 포함합니다. 그런 다음 더 큰 버퍼를 할당하고 SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 요청 및 OutputBuffer 더 큰 버퍼로 설정하여 WskControlSocket 다시 호출할 있습니다.
- 또는 OutputSize 매개 변수를 0으로 설정하고 OutputBuffer를 NULL로 다음 WskControlSocket호출할 수 있습니다. 완료되면 WskControlSocket 함수는 outputSizeRe가 매개 변수로 전환된 출력 버퍼 크기를 바이트 단위로 검색합니다. 그런 다음 적절한 크기의 버퍼를 할당하고 SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 요청 및 OutputBuffer 버퍼로 설정하여 WskControlSocket 다시 호출할 있습니다.
참고 SDK(SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS)사용하여 사용자 모드 애플리케이션에서 이 쿼리를 수행할 수도 있습니다.
이러한 유형의 요청에 대해 Winsock 클라이언트는 IRP에 대한 포인터와 완료 루틴에 대한 포인터를 지정해야 합니다. IRP는 더 높은 드라이버에 의해 클라이언트에 전달되거나 클라이언트가 IRP를 할당하도록 선택할 수 있습니다. 완료 루틴을 지정하려면 클라이언트가 IoSetCompletionRoutine호출해야 합니다. 자세한 내용은 Winsock 커널 함수에서사용
WSK 하위 시스템에 의해 IRP가 완료될 때까지 Winsock 클라이언트는 할당된 버퍼를 해제하지 않아야 합니다. WSK 하위 시스템이 IRP를 완료하면 완료 루틴을 호출하여 클라이언트에 알깁니다. 해당 버퍼에 대한 참조는 완료 루틴의 Context 매개 변수에서 WSK 하위 시스템에 의해 클라이언트에 전달됩니다. 버퍼의 크기는 Irp->IoStatus.Information저장됩니다.
클라이언트는 Irp->IoStatus.Status 확인하여 IRP의 상태를 가져올 수 있습니다. Irp->IoStatus.Status 요청이 성공하면 STATUS_SUCCESS 설정됩니다. 그렇지 않으면 호출에 성공하지 못한 경우 STATUS_INTEGER_OVERFLOW, STATUS_NOT_FOUND, STATUS_BUFFER_TOO_SMALL또는 STATUS_ACCESS_DENIED 포함됩니다.
요구 사항
지원되는 최소 클라이언트 |
Windows 8 |
지원되는 최소 서버 |
Windows Server 2012 |
머리글 |
Mstcpip.h |
IRQL |
PASSIVE_LEVEL |
참고 항목
바인딩 또는 연결 리디렉션 사용하여
SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT