código de controle SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT
A operação de controle de E/S do soquete SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT permite que um cliente Winsock recupere o contexto de redirecionamento de um registro de redirecionamento para uma conexão redirecionada.
Um registro de redirecionamento do WFP é um buffer de dados opacos que o WFP deve definir em uma conexão de proxy de saída para que a conexão redirecionada e a conexão original estejam logicamente relacionadas.
Observação A consulta SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS só poderá ser usada se a conexão tiver sido redirecionada na camada FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 ou FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 por um cliente WFP.
Para obter mais informações sobre o redirecionamento, consulte Usando ode Redirecionamento de Associação ou Conexão.
Para consultar o contexto de redirecionamento de um registro de redirecionamento, um cliente Winsock chama a função WskControlSocket com os parâmetros a seguir.
Parâmetro | Valor |
---|---|
RequestType |
WskIoctl |
do ControlCode |
SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT |
de nível de |
0 |
InputSize |
0 |
InputBuffer |
ZERO |
OutputSize |
O tamanho, em bytes, do buffer apontado pelo parâmetro OutputBuffer. |
OutputBuffer |
Um ponteiro para o buffer que recebe o contexto de redirecionamento para o registro de redirecionamento para a conexão TCP aceita. O tamanho do buffer é especificado no parâmetro OutputSize. |
OutputSizeReturned |
Um ponteiro para uma variável ULONGque recebe o número de bytes de dados copiados para o buffer que é apontado pelo parâmetro outputbuffer. |
Irp |
Um ponteiro para um IRP. |
O chamador pode executar essa consulta de qualquer uma das seguintes maneiras:
- Ele pode definir o OutputBuffer para um buffer grande de aproximadamente 1 KB de tamanho. Se o tamanho do buffer de saída não for grande o suficiente, WskControlSocket retornará STATUS_BUFFER_TOO_SMALL e OutputSizeReturned conterá o tamanho necessário do buffer. Em seguida, um buffer maior pode ser alocado e WskControlSocket chamado novamente com a solicitação SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT e OutputBuffer definido como o buffer maior.
- Ou pode definir o parâmetro OutputSize como 0 e o OutputBuffer como NULL e, em seguida, chamar WskControlSocket. Após a conclusão, a função WskControlSocket recupera o tamanho do buffer de saída, em bytes, no parâmetro OutputSizeReturned. Um buffer de tamanho apropriado pode ser alocado e WskControlSocket chamado novamente com a solicitação SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT e OutputBuffer definidos como o buffer.
Observação Também é possível executar essa consulta em um aplicativo no modo de usuário usando SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT (SDK).
Para esse tipo de solicitação, o cliente Winsock deve especificar um ponteiro para um IRP e um ponteiro para sua rotina de conclusão. O IRP pode ser passado para o cliente por um driver superior ou o cliente pode optar por alocar o IRP. Para especificar a rotina de conclusão, o cliente deve chamar IoSetCompletionRoutine. Para obter mais detalhes, consulte Usando IRPs com funções de kernel winsock.
O cliente Winsock não deve liberar o buffer alocado até que o IRP seja concluído pelo subsistema WSK. Quando o subsistema WSK conclui o IRP, ele notifica o cliente invocando a rotina de conclusão. Uma referência a esse buffer é passada para o cliente pelo subsistema WSK no parâmetro contexto de da rotina de conclusão. O tamanho do buffer é armazenado em Irp->IoStatus.Information.
O cliente pode obter o status do IRP verificando Irp->IoStatus.Status. Irp->IoStatus.Status será definido como STATUS_SUCCESS se a solicitação for bem-sucedida. Caso contrário, ele conterá STATUS_INTEGER_OVERFLOW, STATUS_NOT_FOUND, STATUS_BUFFER_TOO_SMALLou STATUS_ACCESS_DENIED se a chamada não for bem-sucedida.
Requisitos
Cliente mínimo com suporte |
Windows 8 |
Servidor mínimo com suporte |
Windows Server 2012 |
Cabeçalho |
Mstcpip.h |
IRQL |
PASSIVE_LEVEL |
Consulte também
usando o de redirecionamento de associação ou conexão
usando IRPs com funções de kernel winsock