RIO_NOTIFICATION_COMPLETION struttura (mswsock.h)
La struttura RIO_NOTIFICATION_COMPLETION specifica il metodo per il completamento di I/O da usare con una funzione RIONotify per l'invio o la ricezione di dati di rete con le estensioni di I/O registrate Winsock.
Sintassi
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;
Members
Type
Tipo di completamento da usare con la funzione RIONotify durante l'invio o la ricezione di dati.
Event
Event.EventHandle
Handle per l'evento da impostare seguendo una richiesta RIONotify completata.
Questo valore è valido quando il membro Type è impostato su RIO_EVENT_COMPLETION.
Event.NotifyReset
Valore booleano che causa la reimpostazione dell'evento associato quando viene chiamata la funzione RIONotify . Un valore diverso da zero causa la reimpostazione dell'evento associato.
Questo valore è valido quando il membro Type è impostato su RIO_EVENT_COMPLETION.
Iocp
Iocp.IocpHandle
Handle per la porta di completamento di I/O da usare per accodare un completamento della richiesta RIONotify .
Questo valore è valido quando il membro Type è impostato su RIO_IOCP_COMPLETION.
Iocp.CompletionKey
Valore da usare per il parametro lpCompletionKey restituito dalla funzione GetQueuedCompletionStatus o GetQueuedCompletionStatusEx durante l'accodamento di una richiesta RIONotify.
Questo valore è valido quando il membro Type è impostato su RIO_IOCP_COMPLETION.
Iocp.Overlapped
Puntatore alla struttura OVERLAPPED da usare durante l'accodamento di un completamento della richiesta RIONotify . Questo membro deve puntare a una struttura OVERLAPPED valida.
Questo valore è valido quando il membro Type è impostato su RIO_IOCP_COMPLETION.
Commenti
La struttura RIO_NOTIFICATION_COMPLETION viene usata per specificare il comportamento della funzione RIONotify usata con le estensioni di I/O registrate winsock.
La struttura RIO_NOTIFICATION_COMPLETION viene passata alla funzione RIOCreateCompletionQueue quando viene creata una RIO_CQ . Se un'applicazione non chiama la funzione RIONotify per una coda di completamento, la coda di completamento può essere creata senza un oggetto RIO_NOTIFICATION_COMPLETION .
Per le code di completamento usando un evento, il membro Type della struttura RIO_NOTIFICATION_COMPLETION è impostato su RIO_EVENT_COMPLETION. Il membro EventHandle della struttura RIO_NOTIFICATION_COMPLETION deve contenere l'handle per un evento creato dalla funzione WSACreateEvent o CreateEvent . Per ricevere il completamento di RIONotify , l'applicazione deve attendere l'handle di eventi specificato usando WSAWaitForMultipleEvents o una routine di attesa simile. Se l'applicazione prevede di reimpostare e riutilizzare l'evento, l'applicazione può ridurre il sovraccarico impostando il membro Event.NotifyReset della struttura RIO_NOTIFICATION_COMPLETION su un valore diverso da zero. In questo modo l'evento viene reimpostato dalla funzione RIONotify quando si verifica la notifica. Ciò riduce la necessità di chiamare la funzione WSAResetEvent per reimpostare l'evento tra le chiamate alla funzione RIONotify .
Per le code di completamento usando una porta di completamento di I/O, il membro Type della struttura RIO_NOTIFICATION_COMPLETION è impostato su RIO_IOCP_COMPLETION. Il membro Iocp.IocpHandle della struttura RIO_NOTIFICATION_COMPLETION deve contenere l'handle per una porta di completamento di I/O creata dalla funzione CreateIoCompletionPort . Per ricevere il completamento RIONotify, l'applicazione deve chiamare la funzione GetQueuedCompletionStatus o GetQueuedCompletionStatusEx. L'applicazione deve fornire un oggetto OVERLAPPED dedicato per la coda di completamento e può anche usare il membro Iocp.CompletionKey per distinguere le richieste RIONotify nella coda di completamento da altri completamento di I/O, inclusi i completamento RIONotify per altre code di completamento.
Un'applicazione che usa pool di thread può usare oggetti di attesa del pool di thread per ottenere i completamento RIONotify tramite il pool di thread. In tal caso, la chiamata alla funzione SetThreadpoolWait deve immediatamente seguire la chiamata a RIONotify. Se la funzione SetThreadpoolWait viene chiamata prima di RIONotify e l'applicazione si basa su RIONotify per cancellare l'oggetto evento, ciò può causare esecuzioni spurie del callback dell'oggetto wait.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 [solo app desktop] |
Server minimo supportato | Windows Server 2012 [solo app desktop] |
Intestazione | mswsock.h |