estructura RIO_NOTIFICATION_COMPLETION (mswsock.h)
La estructura de RIO_NOTIFICATION_COMPLETION especifica el método para que se use la finalización de E/S con una función RIONotify para enviar o recibir datos de red con las extensiones de E/S registradas de Winsock.
Sintaxis
typedef struct _RIO_NOTIFICATION_COMPLETION {
RIO_NOTIFICATION_COMPLETION_TYPE Type;
union {
struct {
HANDLE EventHandle;
BOOL NotifyReset;
} Event;
struct {
HANDLE IocpHandle;
PVOID CompletionKey;
PVOID Overlapped;
} Iocp;
};
} RIO_NOTIFICATION_COMPLETION, *PRIO_NOTIFICATION_COMPLETION;
Miembros
Type
Tipo de finalización que se va a usar con la función RIONotify al enviar o recibir datos.
Event
Event.EventHandle
Identificador del evento que se va a establecer después de una solicitud RIONotify completada.
Este valor es válido cuando el miembro Type se establece en RIO_EVENT_COMPLETION.
Event.NotifyReset
Valor booleano que hace que se restablezca el evento asociado cuando se llama a la función RIONotify . Un valor distinto de cero hace que se restablezca el evento asociado.
Este valor es válido cuando el miembro Type se establece en RIO_EVENT_COMPLETION.
Iocp
Iocp.IocpHandle
Identificador del puerto de finalización de E/S que se va a usar para poner en cola una finalización de la solicitud RIONotify .
Este valor es válido cuando el miembro Type se establece en RIO_IOCP_COMPLETION.
Iocp.CompletionKey
Valor que se va a usar para el parámetro lpCompletionKey devuelto por la función GetQueuedCompletionStatus o GetQueuedCompletionStatusEx al poner en cola una solicitud RIONotify .
Este valor es válido cuando el miembro Type se establece en RIO_IOCP_COMPLETION.
Iocp.Overlapped
Puntero a la estructura SUPERPUESTA que se va a usar al poner en cola una finalización de la solicitud RIONotify . Este miembro debe apuntar a una estructura SUPERPUESTA válida.
Este valor es válido cuando el miembro Type se establece en RIO_IOCP_COMPLETION.
Comentarios
La estructura RIO_NOTIFICATION_COMPLETION se usa para especificar el comportamiento de la función RIONotify utilizada con las extensiones de E/S registradas de Winsock.
La estructura RIO_NOTIFICATION_COMPLETION se pasa a la función RIOCreateCompletionQueue cuando se crea un RIO_CQ . Si una aplicación no llama a la función RIONotify para una cola de finalización, la cola de finalización se puede crear sin un objeto RIO_NOTIFICATION_COMPLETION .
Para las colas de finalización mediante un evento, el miembro Type de la estructura RIO_NOTIFICATION_COMPLETION se establece en RIO_EVENT_COMPLETION. El miembro Event.EventHandle de la estructura de RIO_NOTIFICATION_COMPLETION debe contener el identificador de un evento creado por la función WSACreateEvent o CreateEvent . Para recibir la finalización de RIONotify , la aplicación debe esperar en el identificador de eventos especificado mediante WSAWaitForMultipleEvents o una rutina de espera similar. Si la aplicación planea restablecer y reutilizar el evento, la aplicación puede reducir la sobrecarga estableciendo el miembro Event.NotifyReset de la estructura de RIO_NOTIFICATION_COMPLETION en un valor distinto de cero. Esto hace que la función RIONotify restablezca el evento cuando se produce la notificación. Esto mitiga la necesidad de llamar a la función WSAResetEvent para restablecer el evento entre las llamadas a la función RIONotify .
Para las colas de finalización mediante un puerto de finalización de E/S, el miembro Type de la estructura de RIO_NOTIFICATION_COMPLETION se establece en RIO_IOCP_COMPLETION. El miembro Iocp.IocpHandle de la estructura de RIO_NOTIFICATION_COMPLETION debe contener el identificador de un puerto de finalización de E/S creado por la función CreateIoCompletionPort . Para recibir la finalización de RIONotify , la aplicación debe llamar a la función GetQueuedCompletionStatus o GetQueuedCompletionStatusEx . La aplicación debe proporcionar un objeto SUPERPUESTO dedicado para la cola de finalización y también puede usar el miembro Iocp.CompletionKey para distinguir las solicitudes RIONotify en la cola de finalización de otras finalizaciones de E/S, incluidas las finalizaciones RIONotify para otras colas de finalización.
Una aplicación que usa grupos de subprocesos puede usar objetos de espera del grupo de subprocesos para obtener finalizaciones RIONotify a través de su grupo de subprocesos. En ese caso, la llamada a la función SetThreadpoolWait debe seguir inmediatamente la llamada a RIONotify. Si se llama a la función SetThreadpoolWait antes de RIONotify y la aplicación se basa en RIONotify para borrar el objeto de evento, esto puede provocar ejecuciones falsas de la devolución de llamada del objeto de espera.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2012 [solo aplicaciones de escritorio] |
Encabezado | mswsock.h |