Compartilhar via


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
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.

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

Consulte também

SOCKADDR

WSK_CLIENT_LISTEN_DISPATCH

WSK_INSPECT_ID

WskAbortEvent

WskAccept

WskAcceptEvent

WskCloseSocket

WskControlSocket

WskInspectComplete

WskSocket