estructura SOCK_NOTIFY_REGISTRATION (winsock2.h)

Representa la información proporcionada a la función ProcessSocketNotifications .

Para obtener más información y ejemplos de código, consulta Notificaciones de estado de socket winsock.

Sintaxis

typedef struct SOCK_NOTIFY_REGISTRATION {
  SOCKET socket;
  PVOID  completionKey;
  UINT16 eventFilter;
  UINT8  operation;
  UINT8  triggerFlags;
  DWORD  registrationResult;
} SOCK_NOTIFY_REGISTRATION;

Miembros

socket

Tipo: SOCKET

Identificador de un socket Winsock abierto por cualquiera de las funciones WSASocket, socket, WSAAccept, accept o WSADuplicateSocket . Solo se admiten sockets de proveedor de Microsoft Winsock .

completionKey

Tipo: PVOID

Valor que se va a usar en el parámetro dwCompletionKey de la función PostQueuedCompletionStatus cuando se envían notificaciones en nombre del socket. Este parámetro se usa al crear el registro. Para cambiar la clave de finalización, quite el registro y vuelva a registrarla.

eventFilter

Tipo: UINT16

Un conjunto de marcas que indica las notificaciones que se solicitan. Debe ser uno o varios de los valores siguientes (definidos en WinSock2.h).

SOCK_NOTIFY_REGISTER_EVENT_NONE. No se deben emitir notificaciones. SOCK_NOTIFY_REGISTER_EVENT_IN. Se debe emitir una notificación cuando los datos se pueden leer sin bloqueo. SOCK_NOTIFY_REGISTER_EVENT_OUT. Se debe emitir una notificación cuando los datos se pueden escribir sin bloqueo. SOCK_NOTIFY_REGISTER_EVENT_HANGUP. Se debe emitir una notificación cuando se desconectó o anuló una conexión orientada a flujos. SOCK_NOTIFY_REGISTER_EVENTS_ALL. Tiene el valor (SOCK_NOTIFY_REGISTER_EVENT_IN | SOCK_NOTIFY_REGISTER_EVENT_OUT | SOCK_NOTIFY_REGISTER_EVENT_HANGUP).

operation

Tipo: UINT8

Indica la operación que se va a realizar en un registro. Como máximo, se puede realizar una operación a la vez. Estos valores se definen en WinSock2.h.

SOCK_NOTIFY_OP_NONE. No se debe realizar ninguna operación de registro. Úselo si la aplicación llama a ProcessSocketNotifications y solo está interesado en recibir notificaciones. SOCK_NOTIFY_OP_ENABLE. Habilita el registro. Las notificaciones no se deben volver a habilitar hasta que se reciba la notificación SOCK_NOTIFY_EVENT_DISABLE . SOCK_NOTIFY_OP_DISABLE. Deshabilita el registro, pero no destruye las estructuras de datos subyacentes. Tenga en cuenta que esto no quita el registro, simplemente suprime la puesta en cola de nuevas notificaciones. Es posible que las notificaciones que ya se hayan puesto en cola se sigan entregando hasta que se reciba el evento de SOCK_NOTIFY_EVENT_DISABLE . SOCK_NOTIFY_OP_REMOVE. Quita una notificación registrada anteriormente. Se pueden quitar las notificaciones habilitadas y deshabilitadas. Se emite la notificación SOCK_NOTIFY_EVENT_REMOVE , con la garantía de que no se emitirán más notificaciones después para esa clave de finalización a menos que se vuelva a registrar.

triggerFlags

Tipo: UINT8

Un conjunto de marcas que indica el comportamiento del desencadenador (definido en WinSock2.h).

SOCK_NOTIFY_TRIGGER_ONESHOT. El registro se deshabilitará (no se quitará) tras la entrega de la siguiente notificación. SOCK_NOTIFY_TRIGGER_PERSISTENT. El registro permanecerá activo hasta que se deshabilite o quite explícitamente. SOCK_NOTIFY_TRIGGER_LEVEL. El registro es para las notificaciones desencadenadas por el nivel. No es compatible con edge-triggered. Se debe proporcionar uno de los bordes o de nivel desencadenados. SOCK_NOTIFY_TRIGGER_EDGE. El registro es para las notificaciones desencadenadas por el perímetro. No es compatible con el nivel desencadenado. Se debe proporcionar uno de los bordes o de nivel desencadenados.

Las notificaciones solo se proporcionan cuando el registro está habilitado. Las notificaciones no se ponen en cola mientras el registro está deshabilitado. A medida que las notificaciones se ponen en cola para un socket determinado, se fusionan en una sola notificación. Por lo tanto, se pueden describir varios eventos mediante una sola máscara de eventos para el socket.

Dado que el registro está habilitado, las notificaciones desencadenadas por el nivel se proporcionan siempre que se mantengan las condiciones deseadas.

Dado que el registro está habilitado, las notificaciones desencadenadas por el perímetro se proporcionan siempre que una condición cambie de no mantener en espera. La condición debe cambiar mientras el registro está habilitado para que se pone en cola una notificación. Por lo tanto, después del registro, el búfer de recepción del socket debe purgarse completamente para asegurarse de que se recibe una notificación.

registrationResult

Tipo: DWORD

Después de una llamada correcta a ProcessSocketNotifications, registrationResult contiene un código que indica el éxito o error del registro. Un valor de ERROR_SUCCESS indica que el registro se realizó correctamente.

Requisitos

Requisito Value
Cliente mínimo compatible compilación 20348 de Windows 10
Servidor mínimo compatible compilación 20348 de Windows 10
Encabezado winsock2.h

Consulte también