Utilisation des fonctions de noyau Winsock et des fonctions de rappel d’événements
Pour certaines opérations de socket, une application WSK (Winsock Kernel) peut appeler l’une des fonctions WSK du socket pour effectuer l’opération ou implémenter et activer une fonction de rappel d’événements sur le socket que le sous-système WSK appelle lorsque l’événement associé à l’opération se produit. Par exemple, lors de la réception de données sur un socket orienté connexion, une application WSK peut soit appeler la fonction WskReceive du socket, soit implémenter et activer une fonction de rappel d’événement WskReceiveEvent sur le socket. Les exigences d’une application WSK dictent la méthode que l’application doit utiliser. Des exemples d’utilisation des deux méthodes sont fournis dans la documentation WSK.
Les listes suivantes résument quelques points clés pour chaque méthode.
Utilisation des fonctions du noyau Winsock
L’application WSK pilote les opérations de socket, ce qui signifie que l’application WSK contrôle quand les opérations de socket se produisent. Cela peut simplifier la synchronisation requise par l’application WSK.
L’application WSK fournit des IIP aux fonctions de socket. Ces IRP sont mis en file d’attente par le sous-système WSK jusqu’à ce que l’opération de socket se termine. Pour plus d’informations sur l’utilisation des irps avec des fonctions WSK, consultez Utilisation des irps avec les fonctions du noyau Winsock.
L’application WSK peut effectuer des opérations de socket de blocage en attendant que l’IRP de chaque opération soit terminée par le sous-système WSK.
L’application WSK peut avoir besoin de conserver plusieurs opérations de socket mises en file d’attente dans certaines situations afin de garantir un transfert de données hautes performances sur des sockets orientés connexion, d’empêcher la suppression des datagrammes entrants sur les sockets de datagrammes ou d’empêcher les connexions entrantes d’être supprimées sur les sockets d’écoute.
L’application WSK fournit les mémoires tampons de données pour les opérations de transfert de données. Cela réduit le nombre de fois où les données peuvent avoir besoin d’être copiées. Toutefois, si une application WSK conserve plusieurs opérations de transfert de données en file d’attente, l’application doit fournir des mémoires tampons de données au sous-système WSK pour chaque opération de transfert de données en file d’attente. Par conséquent, l’application WSK peut nécessiter des ressources de mémoire supplémentaires.
Utilisation des fonctions de rappel d’événements
Le sous-système WSK pilote les opérations de socket, ce qui signifie que le sous-système WSK avertit l’application WSK des événements du socket en appelant les fonctions de rappel d’événements du socket. L’application WSK peut nécessiter une synchronisation plus complexe pour gérer la nature asynchrone des fonctions de rappel d’événements.
L’application WSK n’utilise pas d’irps pour les opérations de socket.
L’application WSK n’a pas besoin de mettre en file d’attente les opérations de socket. Le sous-système WSK appelle les fonctions de rappel d’événements de l’application WSK dès que les événements du socket se produisent. Si l’application WSK peut suivre le rythme d’appel des fonctions de rappel d’événements d’un socket, l’utilisation des fonctions de rappel d’événements peut fournir les performances les plus élevées et le moins de chances de supprimer des datagrammes ou des connexions entrantes.
Le sous-système WSK fournit les mémoires tampons de données pour les opérations de transfert de données. L’application WSK doit libérer ces mémoires tampons de données dans le sous-système WSK immédiatement ou dans un délai raisonnable, afin que le sous-système WSK ne soit pas à court de ressources de mémoire. Par conséquent, l’application WSK peut avoir besoin de copier les données des mémoires tampons de données appartenant au sous-système WSK dans ses propres mémoires tampons de données.
Note Les listes ci-dessus ne sont pas nécessairement exhaustives. Il peut y avoir d’autres points à prendre en compte lors du choix de la méthode qui convient le mieux à une application WSK particulière.