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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de