PFN_WSK_INSPECT_EVENT função de retorno de chamada (wsk.h)
A função de retorno de chamada de evento WskInspectEvent notifica um aplicativo WSK de que uma solicitação de conexão de entrada em um soquete de escuta que tem o modo de aceitação condicional habilitado foi recebida.
Sintaxe
PFN_WSK_INSPECT_EVENT PfnWskInspectEvent;
WSK_INSPECT_ACTION PfnWskInspectEvent(
[in, optional] PVOID SocketContext,
[in] PSOCKADDR LocalAddress,
[in] PSOCKADDR RemoteAddress,
[in, optional] PWSK_INSPECT_ID InspectID
)
{...}
Parâmetros
[in, optional] SocketContext
Um ponteiro para o contexto do soquete de escuta no qual a solicitação de conexão de entrada foi recebida. O aplicativo WSK forneceu esse ponteiro para o subsistema WSK quando chamou a função WskSocket para criar o soquete de escuta.
[in] LocalAddress
Um ponteiro para um buffer que contém o endereço de transporte local no qual a solicitação de conexão de entrada chegou. O buffer contém o tipo de estrutura SOCKADDR específico que corresponde à família de endereços especificada pelo aplicativo WSK ao criar o soquete de escuta.
[in] RemoteAddress
Um ponteiro para um buffer que contém o endereço de transporte remoto do qual a solicitação de conexão de entrada se originou. O buffer contém o tipo de estrutura SOCKADDR específico que corresponde à família de endereços especificada pelo aplicativo WSK ao criar o soquete de escuta.
[in, optional] InspectID
Um ponteiro para uma estrutura WSK_INSPECT_ID. O conteúdo da estrutura identifica a solicitação de conexão de entrada que está sendo inspecionada. Se esse ponteiro for NULL, o soquete de escuta não estará mais funcional e o aplicativo WSK deverá chamar a função WskCloseSocket para fechar o soquete de escuta o mais rápido possível.
Valor de retorno
A função de retorno de chamada de evento WskInspectEvent do aplicativo WSK pode retornar um dos seguintes valores de WSK_INSPECT_ACTION:
Código de retorno | Descrição |
---|---|
|
A solicitação de conexão de entrada é aceita. |
|
A solicitação de conexão de entrada é rejeitada. |
|
O aplicativo WSK não pôde determinar se a solicitação de conexão de entrada deve ser aceita ou rejeitada imediatamente. |
Observações
O subsistema WSK chama a função de retorno de chamada de evento WskInspectEvent de um aplicativo WSK em um soquete de escuta que tem o modo de aceitação condicional habilitado. Um aplicativo WSK pode habilitar o modo de aceitação condicional em um soquete de escuta habilitando a opção de soquete SO_CONDITIONAL_ACCEPT. Para obter mais informações sobre como aceitar condicionalmente conexões de entrada, consulte Escutando e aceitando conexões de entrada.
Se um aplicativo WSK retornar WskInspectAccept de seu WskInspectEvent função de retorno de chamada de evento, o subsistema WSK continuará a estabelecer a conexão de soquete. O subsistema WSK retorna o soquete para o aplicativo WSK concluindo uma chamada para a função WskAccept ou chamando o aplicativo WSK WskAcceptEvent função de retorno de chamada de evento se a função de retorno de chamada de evento estiver habilitada. Se a solicitação de conexão de entrada for descartada antes que a conexão do soquete seja totalmente estabelecida, o subsistema WSK chamará a função de retorno de chamada de evento WskAbortEvent do aplicativo WSK.
Se um aplicativo WSK retornar WskInspectReject de seu WskInspectEvent função de retorno de chamada de evento, a solicitação de conexão de entrada será descartada e a conexão do soquete não será estabelecida.
Se um aplicativo WSK retornar WskInspectPend de sua função WskInspectEvent de retorno de chamada de evento, o aplicativo deverá chamar a função WskInspectComplete depois de determinar se a solicitação de conexão de entrada deve ser aceita ou rejeitada (a menos que a solicitação de conexão de entrada seja anulada enquanto isso). O aplicativo WSK deve copiar o conteúdo da estrutura de WSK_INSPECT_ID que é apontado pelo parâmetro InspectID para sua própria estrutura de WSK_INSPECT_ID antes de retornar da função de retorno de chamada de evento WskInspectEvent. O aplicativo WSK passa um ponteiro para sua própria estrutura de WSK_INSPECT_ID para a função WskInspectComplete quando concluir a inspeção. O aplicativo WSK também usa essa estrutura para identificar a solicitação de conexão de entrada se a solicitação for anulada antes da inspeção ser concluída.
As estruturas de SOCKADDR que são apontadas pelos parâmetros LocalAddress e RemoteAddress são válidas apenas pela duração da chamada para a função de retorno de chamada de evento WskInspectEvent. Se um aplicativo WSK retornar WskInspectPend de seu WskInspectEvent função de retorno de chamada de evento e precisar desses endereços de transporte durante o restante da inspeção, ele deverá copiar o conteúdo dessas estruturas para suas próprias estruturas SOCKADDR antes de retornar da função de retorno de chamada de evento WskInspectEvent.
O subsistema WSK chama a função de retorno de chamada de evento WskInspectEvent de um aplicativo WSK no IRQL <= DISPATCH_LEVEL.
A função de retorno de chamada de evento WskInspectEvent de um aplicativo WSK não deve aguardar a conclusão de outras solicitações do WSK no contexto de funções de conclusão do WSK ou retorno de chamada de evento. O retorno de chamada pode iniciar outras solicitações do WSK (supondo que ele não gaste muito tempo no DISPATCH_LEVEL), mas não deve aguardar sua conclusão mesmo quando o retorno de chamada é chamado em IRQL = PASSIVE_LEVEL.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows. |
da Plataforma de Destino | Windows |
cabeçalho | wsk.h (inclua Wsk.h) |
IRQL | <= DISPATCH_LEVEL |