Compartilhar via


função de retorno de chamada PFN_WSK_INSPECT_EVENT (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 de 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.

Retornar valor

A função de retorno de chamada de evento WskInspectEvent de um aplicativo WSK pode retornar um dos seguintes valores WSK_INSPECT_ACTION:

Código de retorno Descrição
WskInspectAccept
A solicitação de conexão de entrada é aceita.
WskInspectReject
A solicitação de conexão de entrada é rejeitada.
WskInspectPend
O aplicativo WSK não pôde determinar se a solicitação de conexão de entrada deve ser aceita ou rejeitada imediatamente.

Comentários

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 Connections de entrada.

Se um aplicativo WSK retornar WskInspectAccept de sua função de retorno de chamada de evento WskInspectEvent , 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 a função de retorno de chamada de evento WskAcceptEvent do aplicativo WSK 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 de 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 sua função de retorno de chamada de evento WskInspectEvent , a solicitação de conexão de entrada será descartada e a conexão de soquete não será estabelecida.

Se um aplicativo WSK retornar WskInspectPend de sua função de retorno de chamada de evento WskInspectEvent , 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 WSK_INSPECT_ID apontado pelo parâmetro InspectID para sua própria estrutura 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 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 conclusão da inspeção.

As estruturas SOCKADDR apontadas pelos parâmetros LocalAddress e RemoteAddress são válidas apenas durante a chamada para a função de retorno de chamada de evento WskInspectEvent . Se um aplicativo WSK retornar WskInspectPend de sua função de retorno de chamada de evento WskInspectEvent 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 evento WskInspectEvent .

O subsistema WSK chama a função de retorno de chamada de evento WskInspectEvent de um aplicativo WSK em 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 das funções de retorno de chamada de evento ou de conclusão do WSK. O retorno de chamada pode iniciar outras solicitações do WSK (supondo que ele não gaste muito tempo em DISPATCH_LEVEL), mas não deve aguardar a conclusão mesmo quando o retorno de chamada é chamado em IRQL = PASSIVE_LEVEL.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Windows
Cabeçalho wsk.h (inclua Wsk.h)
IRQL <= DISPATCH_LEVEL

Confira também

SOCKADDR

WSK_CLIENT_LISTEN_DISPATCH

WSK_INSPECT_ID

WskAbortEvent

WskAccept

WskAcceptEvent

WskCloseSocket

WskControlSocket

WskInspectComplete

WskSocket