Partager via


mécanisme d’extension Provider-Specific

La fonction WSAIoctl permet 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 qu’elle 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. Cela s’effectue via la fonction WSAIoctl à l’aide du code de commande SIO_GET_EXTENSION_FUNCTION_POINTER. La mémoire tampon d’entrée dans 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 la fonction d’extension directement sans passer par le Ws2_32.dll.

Les identificateurs attribué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 besoin de 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 étant exportées directement à partir de la DLL Winsock, la fonction WSAIoctl n’est pas nécessaire pour charger ces extensions. Les nouvelles fonctions d’extension disponibles sur Windows Vista et versions ultérieures incluent les fonctions WSAPoll et WSASendMsg qui sont exportées à partir de Ws2_32.dll.