Compartir a través de


Eventos de kernel de Winsock

El subsistema Winsock Kernel (WSK) puede notificar de forma asincrónica una aplicación WSK cuando se producen determinados eventos de socket, como cuando se han recibido nuevos datos en un socket o cuando se ha desconectado un socket. Para que una aplicación WSK reciba notificaciones asincrónicas de eventos de socket, la aplicación WSK debe implementar las funciones de devolución de llamada de eventos adecuadas y habilitar esas funciones de devolución de llamada de eventos en los sockets que crea.

Nota No se requiere una aplicación WSK para implementar o usar funciones de devolución de llamada de eventos. Una aplicación WSK puede realizar la mayoría de las operaciones de socket WSK llamando a las funciones de socket WSK adecuadas. La única característica de WSK que requiere el uso de funciones de devolución de llamada de eventos es el modo de aceptación condicional en sockets de escucha. Para obtener más información sobre las ventajas y desventajas entre el uso de funciones de WSK y el uso de funciones de devolución de llamada de eventos, vea Uso de funciones de kernel de Winsock frente a funciones de devolución de llamada de eventos.

Cada categoría de socket WSK admite un conjunto diferente de eventos de socket.

Sockets básicos

Los sockets básicos no admiten ningún evento de socket.

Sockets de escucha

Evento Función de devolución de llamada de eventos

Se ha aceptado una conexión entrante.

WskAcceptEvent

Ha llegado una solicitud de conexión entrante.

WskInspectEvent

Se ha quitado una solicitud de conexión entrante.

WskAbortEvent

* Solo se aplica a los sockets de escucha que tienen habilitado el modo de aceptación condicional. Para obtener más información sobre el uso del modo de aceptación condicional con sockets de escucha, vea Escuchar y aceptar conexiones entrantes.

Sockets de datagrama

Evento Función de devolución de llamada de eventos

Se han recibido uno o varios datagramas nuevos.

WskReceiveFromEvent

Sockets orientados a la conexión

Evento Función de devolución de llamada de eventos

Se han recibido nuevos datos.

WskReceiveEvent

El socket se ha desconectado.

WskDisconnectEvent

El tamaño ideal del trabajo pendiente de envío ha cambiado.

WskSendBacklogEvent

Cuando una aplicación WSK crea un socket, las funciones de devolución de llamada de eventos del socket se deshabilitan de forma predeterminada. Una aplicación WSK debe habilitar las funciones de devolución de llamada de eventos de un socket para que el subsistema WSK llame a las funciones de devolución de llamada de eventos del socket cuando se produzcan eventos de socket. Para obtener más información sobre cómo habilitar y deshabilitar las funciones de devolución de llamada de eventos de un socket, consulte Habilitación y deshabilitación de funciones de devolución de llamada de eventos.

Si una aplicación WSK registra una interfaz de extensión para un socket, la interfaz de extensión podría admitir eventos adicionales. Para obtener más información sobre cómo registrar una interfaz de extensión para un socket, consulte Registro de una interfaz de extensión.

El subsistema WSK también puede notificar a una aplicación WSK de eventos que no son específicos de un socket determinado. Para que una aplicación WSK reciba una notificación de estos eventos, la aplicación WSK debe implementar una función de devolución de llamada de eventos WskClientEvent . Actualmente no hay ningún evento definido que no sea específico de un socket determinado. La función de devolución de llamada de eventos WSKClientEvent de una aplicación WSK siempre está habilitada y no se puede deshabilitar.

Las funciones de devolución de llamada de eventos de una aplicación WSK no deben esperar a que se completen otras solicitudes de WSK en el contexto de las funciones de finalización de WSK o devolución de llamada de eventos. La devolución de llamada puede iniciar otras solicitudes de WSK suponiendo que no pasa demasiado tiempo en DISPATCH_LEVEL o agotar la pila del kernel, pero no debe esperar a su finalización incluso cuando se llama a la devolución de llamada en IRQL = PASSIVE_LEVEL.