Compartir a través de


PFN_WSK_INSPECT_EVENT función de devolución de llamada (wsk.h)

La función de devolución de llamada de eventos WskInspectEvent notifica a una aplicación WSK que se ha recibido una solicitud de conexión entrante en un socket de escucha que tiene habilitado el modo de aceptación condicional.

Sintaxis

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

Puntero al contexto de socket para el socket de escucha en el que se recibió la solicitud de conexión entrante. La aplicación WSK proporcionó este puntero al subsistema WSK cuando llamó a la función WskSocket para crear el socket de escucha.

[in] LocalAddress

Puntero a un búfer que contiene la dirección de transporte local en la que llegó la solicitud de conexión entrante. El búfer contiene el tipo de estructura SOCKADDR específico que corresponde a la familia de direcciones que la aplicación WSK especificó al crear el socket de escucha.

[in] RemoteAddress

Puntero a un búfer que contiene la dirección de transporte remota desde la que se originó la solicitud de conexión entrante. El búfer contiene el tipo de estructura SOCKADDR específico que corresponde a la familia de direcciones que la aplicación WSK especificó al crear el socket de escucha.

[in, optional] InspectID

Puntero a una estructura de WSK_INSPECT_ID . El contenido de la estructura identifica la solicitud de conexión entrante que se está inspeccionando. Si este puntero es NULL, el socket de escucha ya no es funcional y la aplicación WSK debe llamar a la función WskCloseSocket para cerrar el socket de escucha lo antes posible.

Valor devuelto

La función de devolución de llamada de eventos WSKInspectEvent de una aplicación WSK puede devolver uno de los siguientes valores de WSK_INSPECT_ACTION:

Código devuelto Descripción
WskInspectAccept
Se acepta la solicitud de conexión entrante.
WskInspectReject
Se rechaza la solicitud de conexión entrante.
WskInspectPend
La aplicación WSK no pudo determinar si la solicitud de conexión entrante debe aceptarse o rechazarse inmediatamente.

Comentarios

El subsistema WSK llama a la función de devolución de llamada de eventos WSKInspectEvent de una aplicación WSK en un socket de escucha que tiene habilitado el modo de aceptación condicional. Una aplicación WSK puede habilitar el modo de aceptación condicional en un socket de escucha habilitando la opción de socket SO_CONDITIONAL_ACCEPT . Para obtener más información sobre cómo aceptar condicionalmente las conexiones entrantes, consulte Escucha y aceptación de Connections entrantes.

Si una aplicación WSK devuelve WskInspectAccept de su función de devolución de llamada de eventos WskInspectEvent , el subsistema WSK continúa estableciendo la conexión de socket. El subsistema WSK devuelve el socket a la aplicación WSK completando una llamada a la función WskAccept , o llamando a la función de devolución de llamada de eventos WSKAcceptEvent de la aplicación WSK si la función de devolución de llamada de evento está habilitada. Si la solicitud de conexión entrante se quita antes de que la conexión de socket esté totalmente establecida, el subsistema WSK llama a la función de devolución de llamada de eventos WSKAbortEvent de la aplicación WSK.

Si una aplicación WSK devuelve WskInspectReject de su función de devolución de llamada de eventos WskInspectEvent , la solicitud de conexión entrante se quita y no se establece la conexión de socket.

Si una aplicación WSK devuelve WskInspectPend de su función de devolución de llamada de eventos WskInspectEvent , la aplicación debe llamar a la función WskInspectComplete después de determinar si se debe aceptar o rechazar la solicitud de conexión entrante (a menos que se anule la solicitud de conexión entrante mientras tanto). La aplicación WSK debe copiar el contenido de la estructura WSK_INSPECT_ID a la que apunta el parámetro InspectID a su propia estructura de WSK_INSPECT_ID antes de volver de la función de devolución de llamada de eventos WskInspectEvent . La aplicación WSK pasa un puntero a su propia estructura de WSK_INSPECT_ID a la función WskInspectComplete cuando completa la inspección. La aplicación WSK también usa esta estructura para identificar la solicitud de conexión entrante si la solicitud se anula antes de que se complete la inspección.

Las estructuras SOCKADDR a las que apuntan los parámetros LocalAddress y RemoteAddress son válidas solo durante la llamada a la función de devolución de llamada de evento WskInspectEvent . Si una aplicación WSK devuelve WskInspectPend de su función de devolución de llamada de eventos WskInspectEvent y necesita estas direcciones de transporte durante el resto de la inspección, debe copiar el contenido de estas estructuras en sus propias estructuras SOCKADDR antes de volver de la función de devolución de llamada de eventos WskInspectEvent .

El subsistema WSK llama a la función de devolución de llamada de eventos WSKInspectEvent de una aplicación WSK en IRQL <= DISPATCH_LEVEL.

La función de devolución de llamada de eventos WSKInspectEvent de una aplicación WSK no debe esperar a que se completen otras solicitudes de WSK en el contexto de funciones de devolución de llamada de eventos o finalización de WSK. La devolución de llamada puede iniciar otras solicitudes de WSK (suponiendo que no pasa demasiado tiempo en DISPATCH_LEVEL), pero no debe esperar a su finalización incluso cuando se llama a la devolución de llamada en IRQL = PASSIVE_LEVEL.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Windows
Encabezado wsk.h (incluya Wsk.h)
IRQL <= DISPATCH_LEVEL

Consulte también

SOCKADDR

WSK_CLIENT_LISTEN_DISPATCH

WSK_INSPECT_ID

WskAbortEvent

WskAccept

WskAcceptEvent

WskCloseSocket

WskControlSocket

WskInspectComplete

WskSocket