SO_WSK_EVENT_CALLBACK
La opción de socket SO_WSK_EVENT_CALLBACK permite que una aplicación WSK habilite y deshabilite las funciones de devolución de llamada de eventos de un socket. Esta opción de socket solo se aplica a sockets de escucha, sockets de datagramas, sockets orientados a la conexión y sockets básicos que han registrado una interfaz de extensión para la que se define al menos una función de devolución de llamada de evento.
Si una aplicación WSK usa esta opción de socket para habilitar o deshabilitar las funciones de devolución de llamada de eventos en un socket de escucha o en un socket de datagrama, debe hacerlo después de que el socket se haya enlazado a una dirección de transporte local.
Si una aplicación WSK usa esta opción de socket para habilitar o deshabilitar las funciones de devolución de llamada de eventos en un socket orientado a la conexión, debe hacerlo después de que el socket se haya conectado a una dirección de transporte remota.
Para habilitar o deshabilitar las funciones de devolución de llamada de eventos en un socket, una aplicación WSK llama a la función WskControlSocket con los parámetros siguientes.
Parámetro | Value |
---|---|
RequestType |
WskSetOption |
ControlCode |
SO_WSK_EVENT_CALLBACK |
Level |
SOL_SOCKET |
InputSize |
sizeof(WSK_EVENT_CALLBACK_CONTROL) |
InputBuffer |
Puntero a una estructura de WSK_EVENT_CALLBACK_CONTROL |
OutputSize |
0 |
OutputBuffer |
NULL |
OutputSizeReturned |
NULL |
Una aplicación WSK no especifica un puntero a un IRP al llamar a la función WskControlSocket para habilitar las funciones de devolución de llamada de eventos en un socket.
Una aplicación WSK puede especificar opcionalmente un puntero a un IRP al llamar a la función WskControlSocket para deshabilitar una función de devolución de llamada de eventos en un socket.
Cuando una aplicación WSK llama a WskControlSocket para deshabilitar una función de devolución de llamada de eventos, el subsistema WSK se comporta de la siguiente manera:
Si no hay llamadas en curso a la función de devolución de llamada de evento que se está deshabilitando cuando la aplicación WSK llama a la función WskControlSocket , la función de devolución de llamada de evento está deshabilitada y la función WskControlSocket devuelve STATUS_SUCCESS. Si la aplicación WSK especifica un IRP, el IRP se completa con el estado correcto.
Si hay llamadas en curso a la función de devolución de llamada de evento que se está deshabilitando cuando la aplicación WSK llama a la función WskControlSocket y la aplicación WSK especificó un IRP, la función WskControlSocket devuelve STATUS_PENDING. El subsistema WSK deshabilita la función de devolución de llamada de eventos y completa el IRP después de que se hayan devuelto todas las llamadas en curso a la función de devolución de llamada de evento.
Si hay llamadas en curso a la función de devolución de llamada de evento que se está deshabilitando cuando la aplicación WSK llama a la función WskControlSocket y la aplicación WSK no especificó un IRP, la función WskControlSocket devuelve STATUS_EVENT_PENDING. El subsistema WSK deshabilita la función de devolución de llamada de eventos después de que se hayan devuelto todas las llamadas en curso a la función de devolución de llamada de evento.
Al habilitar o deshabilitar cualquiera de las funciones de devolución de llamada de eventos WSK estándar, una aplicación WSK establece el miembro NpiId de la estructura de WSK_EVENT_CALLBACK_CONTROL en un puntero al identificador de interfaz de programación de red (NPI) de WSK, NPI_WSK_INTERFACE_ID.
Al habilitar o deshabilitar las funciones de devolución de llamada para una interfaz de extensión, una aplicación de WSK establece el miembro NpiId de la estructura de WSK_EVENT_CALLBACK_CONTROL en un puntero al identificador NPI de esa interfaz de extensión.
Al habilitar funciones de devolución de llamada de eventos, una aplicación WSK puede habilitar simultáneamente cualquier combinación de las funciones de devolución de llamada de eventos válidas para una categoría determinada de socket WSK. La aplicación WSK habilita simultáneamente estas combinaciones estableciendo el miembro EventMask de la estructura de WSK_EVENT_CALLBACK_CONTROL en un OR bit a bit de las marcas de evento para todas las funciones de devolución de llamada de eventos que se están habilitando.
Al deshabilitar las funciones de devolución de llamada de eventos, una aplicación WSK debe deshabilitar cada función de devolución de llamada de eventos de forma independiente. Una aplicación WSK deshabilita de forma independiente una función de devolución de llamada de eventos estableciendo el miembro EventMask de la estructura de WSK_EVENT_CALLBACK_CONTROL en un OR bit a bit de la marca de evento para la función de devolución de llamada de evento que se está deshabilitando y la marca WSK_EVENT_DISABLE.
En la tabla siguiente se muestran las marcas de eventos válidas para un socket de escucha.
Marca de evento | Función de devolución de llamada de eventos |
---|---|
WSK_EVENT_ACCEPT |
En la tabla siguiente se muestran las marcas de evento válidas para un socket de datagrama.
Marca de evento | Función de devolución de llamada de eventos |
---|---|
WSK_EVENT_RECEIVE_FROM |
En la tabla siguiente se muestran las marcas de evento válidas para un socket orientado a la conexión.
Marca de evento | Función de devolución de llamada de eventos |
---|---|
WSK_EVENT_DISCONNECT |
|
WSK_EVENT_RECEIVE |
|
WSK_EVENT_SEND_BACKLOG |
Un socket de escucha puede habilitar automáticamente funciones de devolución de llamada de eventos en sockets orientados a la conexión que acepta el socket de escucha. Una aplicación WSK habilita automáticamente estas funciones de devolución de llamada habilitando las funciones de devolución de llamada de eventos de socket orientadas a la conexión en el socket de escucha. Las funciones de devolución de llamada de eventos se habilitan automáticamente en un socket orientado a la conexión aceptado solo si el socket es aceptado por la función de devolución de llamada de eventos WskAcceptEvent del socket de escucha. Si la función WskAccept acepta el socket orientado a la conexión, las funciones de devolución de llamada de eventos del socket aceptado no se habilitan automáticamente.
Una vez habilitadas las funciones de devolución de llamada de eventos orientadas a la conexión en un socket de escucha, no se pueden deshabilitar en el socket de escucha. Si la función de devolución de llamada de eventos WskAcceptEvent está deshabilitada y, a continuación, se vuelve a habilitar en un socket de escucha, todas las funciones de devolución de llamada de eventos orientadas a la conexión habilitadas originalmente en ese socket de escucha seguirán aplicándose a todos los sockets orientados a la conexión aceptados por la función de devolución de llamada de eventos WskAcceptEvent .
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.
Requisitos
Versión |
Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows. |
Encabezado |
Wsk.h (incluya Wsk.h) |