mécanisme d’extension Provider-Specific
La fonctionWSAIoctlpermet aux fournisseurs de services d’offrir des extensions de fonctionnalités spécifiques au fournisseur. Ce mécanisme suppose, bien sûr, qu’une application est consciente d’une extension particulière et comprend à la fois la sémantique et la syntaxe impliquées. Ces informations sont généralement fournies par le fournisseur de services.
Pour appeler une fonction d’extension, l’application doit d’abord demander un pointeur vers la fonction souhaitée. Pour ce faire, utilisez la fonctionWSAIoctlà l’aide du code de commande SIO_GET_EXTENSION_FUNCTION_POINTER. La mémoire tampon d’entrée pour WSAIoctl contient un identificateur pour la fonction d’extension souhaitée, tandis que la mémoire tampon de sortie contient le pointeur de fonction lui-même. L’application peut ensuite appeler directement la fonction d’extension sans passer par le Ws2_32.dll.
Les identificateurs affectés aux fonctions d’extension sont des identificateurs globaux uniques (GUID) alloués par les fournisseurs de services. Les fournisseurs qui créent des fonctions d’extension sont invités à publier des détails complets sur la fonction, y compris la syntaxe du prototype de fonction. Cela permet aux fonctions d’extension courantes et populaires d’être proposées par plusieurs fournisseurs de services. Une application peut obtenir le pointeur de fonction et utiliser la fonction sans avoir à savoir quoi que ce soit sur le fournisseur de services particulier qui implémente la fonction.
Sur Windows Vista et versions ultérieures, les nouvelles extensions système Winsock sont exportées directement à partir de la DLL Winsock. Par conséquent, la fonction WSAIoctl n’est pas nécessaire pour charger ces extensions. Les nouvelles fonctions d’extension disponibles sur Windows Vista et ultérieurement incluent les fonctions WSAPoll et WSASendMsg exportées à partir de Ws2_32.dll.