Uso delle funzioni del kernel Winsock e delle funzioni di callback degli eventi
Per determinate operazioni socket, un'applicazione WSK (Winsock Kernel) può chiamare una delle funzioni WSK del socket per eseguire l'operazione o implementare e abilitare una funzione di callback di eventi sul socket che il sottosistema WSK chiama quando si verifica l'evento associato all'operazione. Ad esempio, quando si ricevono dati su un socket orientato alla connessione, un'applicazione WSK può effettuare chiamate alla funzione WskReceive del socket oppure implementare e abilitare una funzione di callback di eventi WskReceiveEvent sul socket. I requisiti di un'applicazione WSK determinano il metodo che l'applicazione deve usare. Per informazioni su come usare entrambi i metodi, vedere la documentazione di WSK.
Gli elenchi seguenti riepilogano alcuni punti chiave per ogni metodo.
Uso delle funzioni del kernel Winsock
L'applicazione WSK determina le operazioni socket, ovvero i controlli dell'applicazione WSK quando si verificano le operazioni del socket. Ciò potrebbe semplificare la sincronizzazione richiesta dall'applicazione WSK.
L'applicazione WSK fornisce i runtime di integrazione alle funzioni socket. Questi runtime di integrazione vengono accodati dal sottosistema WSK fino al completamento dell'operazione socket. Per altre informazioni sull'uso dei runtime di integrazione con le funzioni WSK, vedere Using IRPs with Winsock Kernel Functions .For more information about using IRPs with WSK functions, see Using IRPs with Winsock Kernel Functions.
L'applicazione WSK può eseguire operazioni socket di blocco attendendo il completamento dell'IRP per ogni operazione dal sottosistema WSK.
L'applicazione WSK potrebbe dover mantenere in coda più operazioni socket in alcune situazioni per garantire il trasferimento di dati ad alte prestazioni sui socket orientati alla connessione, per impedire l'eliminazione di datagrammi in ingresso nei socket di datagrammi o per impedire l'eliminazione delle connessioni in ingresso nei socket in ascolto.
L'applicazione WSK fornisce i buffer di dati per le operazioni di trasferimento dei dati. In questo modo si riduce il numero di volte in cui è necessario copiare i dati. Tuttavia, se un'applicazione WSK mantiene in coda più operazioni di trasferimento dei dati, l'applicazione deve fornire buffer di dati al sottosistema WSK per ogni operazione di trasferimento dei dati in coda. Di conseguenza, l'applicazione WSK potrebbe richiedere risorse di memoria aggiuntive.
Uso delle funzioni di callback degli eventi
Il sottosistema WSK gestisce le operazioni socket, ovvero il sottosistema WSK notifica all'applicazione WSK degli eventi del socket chiamando le funzioni di callback degli eventi del socket. L'applicazione WSK potrebbe richiedere una sincronizzazione più complessa per gestire la natura asincrona delle funzioni di callback degli eventi.
L'applicazione WSK non usa i runtime di integrazione per le operazioni del socket.
L'applicazione WSK non deve accodare le operazioni socket. Il sottosistema WSK chiama le funzioni di callback degli eventi dell'applicazione WSK non appena si verificano gli eventi del socket. Se l'applicazione WSK può rimanere al passo con la frequenza con cui vengono chiamate le funzioni di callback degli eventi di un socket, l'uso delle funzioni di callback degli eventi potrebbe offrire le prestazioni più elevate e la minima probabilità di eliminare datagrammi o connessioni in ingresso.
Il sottosistema WSK fornisce i buffer di dati per le operazioni di trasferimento dei dati. L'applicazione WSK deve rilasciare immediatamente questi buffer di dati nel sottosistema WSK o entro un periodo di tempo ragionevole, in modo che il sottosistema WSK non esaurisca le risorse di memoria. Di conseguenza, l'applicazione WSK potrebbe dover copiare i dati dai buffer di dati di proprietà del sottosistema WSK nei propri buffer di dati.
Nota Gli elenchi precedenti non sono necessariamente esaustivi. Quando si sceglie quale metodo è la scelta migliore per una determinata applicazione WSK, potrebbero essere presenti altri punti da considerare.