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 |
NULL |
OutputSize |
OutputBuffer 매개 변수가 가리키는 버퍼의 크기(바이트)입니다. |
OutputBuffer |
허용되는 TCP 연결에 대한 리디렉션 레코드를 수신하는 버퍼에 대한 포인터입니다. 버퍼의 크기는 OutputSize 매개 변수에 지정됩니다. |
OutputSizeReturned |
OutputBuffer 매개 변수가 가리키는 버퍼에 복사되는 데이터 바이트 수를 수신하는 ULONG 형식 변수에 대한 포인터입니다. |
Irp |
IRP에 대한 포인터입니다. |
호출자는 다음 방법 중 하나로 이 쿼리를 수행할 수 있습니다.
- OutputBuffer를 약 1KB 크기의 큰 버퍼로 설정할 수 있습니다. 출력 버퍼 크기가 충분히 크지 않으면 WskControlSocket 은 STATUS_BUFFER_TOO_SMALL 반환하고 OutputSizeReturned 에는 버퍼의 필요한 크기가 포함됩니다. 그런 다음 더 큰 버퍼를 할당하고 SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 요청 및 OutputBuffer를 더 큰 버퍼로 설정하여 WskControlSocket을 다시 호출할 수 있습니다.
- 또는 OutputSize 매개 변수를 0으로 설정하고 OutputBuffer 를 NULL로 설정한 다음 WskControlSocket을 호출할 수 있습니다. 완료되면 WskControlSocket 함수는 OutputSizeReturned 매개 변수에서 출력 버퍼 크기(바이트)를 검색합니다. 그런 다음 적절한 크기의 버퍼를 할당하고 SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 요청 및 OutputBuffer를 버퍼로 설정하여 WskControlSocket을 다시 호출할 수 있습니다.
참고SDK(SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS)를 사용하여 사용자 모드 애플리케이션에서 이 쿼리를 수행할 수도 있습니다.
이러한 유형의 요청의 경우 Winsock 클라이언트는 IRP에 대한 포인터와 완료 루틴에 대한 포인터를 지정해야 합니다. IRP는 더 높은 드라이버가 클라이언트에 전달하거나 클라이언트가 IRP를 할당하도록 선택할 수 있습니다. 완료 루틴을 지정하려면 클라이언트가 IoSetCompletionRoutine을 호출해야 합니다. 자세한 내용은 Winsock 커널 함수에서 IRP 사용을 참조하세요.
Winsock 클라이언트는 IRP가 WSK 하위 시스템에 의해 완료될 때까지 할당된 버퍼를 해제해서는 안 됩니다. 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