Fournisseurs de services d’espace de noms
Un fournisseur d’espaces de noms implémente un mappage d’interface entre le SPI de l’espace de noms Winsock et l’interface programmatique native d’un service de noms existant tel que DNS, X.500 ou NetWare Directory Services (NDS). Bien qu’un fournisseur d’espaces de noms prenne en charge exactement un espace de noms, il est possible d’installer plusieurs fournisseurs pour un espace de noms donné. Il est également possible pour une SEULE DLL de créer un instance de plusieurs fournisseurs d’espaces de noms. À mesure que les fournisseurs d’espaces de noms sont installés, un catalogue de structures WSANAMESPACE_INFO est tenu à jour. Une application peut utiliser WSAEnumNameSpaceProviders pour découvrir quels espaces de noms sont pris en charge sur un ordinateur.
Sur Windows Vista et versions ultérieures, une structure WSANAMESPACE_INFOEX améliorée et une fonction WSAEnumNameSpaceProvidersEx sont fournies.
Sur les plateformes 64 bits, des fonctions WSCEnumNameSpaceProviders32 et WSCEnumNameSpaceProvidersEx32 similaires sont fournies pour énumérer le catalogue 32 bits.
Pour plus d’informations, consultez Exigences du fournisseur de services d’espace de noms Winsock .
Fournisseurs de services GetXbyY hérités
Windows Sockets 2 prend entièrement en charge les fonctionnalités de résolution de noms spécifiques à TCP/IP que l’on trouve dans les sockets Windows version 1.1. Pour ce faire, il inclut l’ensemble de fonctions GetXbyY dans le SPI. Toutefois, le traitement de cet ensemble de fonctions est quelque peu différent du reste des fonctions SPI. Les fonctions GetXbyY qui apparaissent dans le SPI sont préfacées avec GETXBYYSP_ et sont résumées dans le tableau suivant.
Fonctions de style Berkeley
Nom de la fonction SPI | Description |
---|---|
GETXBYYSP_gethostbyaddr | Fournit une structure d’hôte pour l’adresse hôte spécifiée. |
GETXBYYSP_gethostbyname | Fournit une structure d’hostent pour le nom d’hôte spécifié. |
GETXBYYSP_getprotobyname | Fournit une structure protoente pour le nom de protocole spécifié. |
GETXBYYSP_getprotobynumber | Fournit une structure protoente pour le numéro de protocole spécifié. |
GETXBYYSP_getservbyname | Fournit une structure de service pour le service nam.e spécifié |
GETXBYYSP_getservbyport | Fournit une structure de service pour le service au port spécifié. |
GETXBYYSP_gethostname | Retourne le nom d’hôte standard de l’ordinateur local. |
Fonctions de style asynchrone
Nom de la fonction SPI | Description |
---|---|
GETXBYYSP_WSAAsyncGetHostByAddr | Fournit une structure d’hôte pour l’adresse hôte spécifiée. |
GETXBYYSP_WSAAsyncGetHostByName | Fournit une structure d’hostent pour le nom d’hôte spécifié. |
GETXBYYSP_WSAAsyncGetProtoByName | Fournit une structure protoente pour le nom de protocole spécifié. |
GETXBYYSP_WSAAsyncGetProtoByNumber | Fournit une structure protoente pour le numéro de protocole spécifié. |
GETXBYYSP_WSAAsyncGetServByName | Fournit une structure de service pour le nom de service spécifié. |
GETXBYYSP_WSAAsyncGetServByPort | Fournit une structure de service pour le service au port spécifié. |
GETXBYYSP_WSACancelAsyncRequest | Annule une opération GetXbyY asynchrone. |
La syntaxe et la sémantique de ces fonctions GetXbyY dans le SPI sont exactement les mêmes que celles documentées dans la spécification de l’API et ne sont donc pas répétées ici.
La DLL Windows Sockets 2 permet exactement à un fournisseur de services d’offrir ces services. Par conséquent, il n’est pas nécessaire d’inclure des pointeurs vers ces fonctions dans la table de procédure reçue des fournisseurs de services au démarrage. Dans les environnements Windows, le chemin d’accès à la DLL qui implémente ces fonctions est récupéré à partir de la valeur trouvée dans le chemin d’accès au Registre suivant. Cette entrée de Registre n’existe pas par défaut :
HKEY_LOCAL_MACHINE\Système\Currentcontrolset\Services\WinSock2\Paramètres\GetXByYLibraryPath
Built-In fournisseur de services GetXbyY par défaut
Un fournisseur de services GetXbyY par défaut est intégré aux composants d’exécution standard des sockets Windows 2. Ce fournisseur par défaut implémente toutes les fonctions ci-dessus. Il n’est donc pas nécessaire que ces fonctions soient implémentées par un fournisseur d’espace de noms. Toutefois, un fournisseur d’espaces de noms est libre de fournir tout ou partie de ces fonctions (et donc de remplacer les valeurs par défaut) en stockant simplement la chaîne qui est le chemin d’accès à la DLL qui implémente ces fonctions dans la clé de Registre indiquée. Toutes les fonctions GetXbyY non exportées par la DLL du fournisseur nommé seront fournies via les valeurs par défaut intégrées. Notez toutefois que si un fournisseur choisit de fournir l’une des versions asynchrones des fonctions GetXbyY , il doit fournir toutes les fonctions asynchrones afin que l’opération d’annulation fonctionne correctement.
L’implémentation actuelle du fournisseur de services GetXbyY par défaut réside dans le Wsock32.dll. Selon la façon dont les paramètres TCP/IP ont été établis via Panneau de configuration, la résolution de noms se produit à l’aide de fichiers DNS ou d’hôtes locaux. Lorsque DNS est utilisé, le fournisseur de services GetXbyY par défaut utilise des appels d’API Windows Sockets 1.1 standard pour communiquer avec le serveur DNS. Ces transactions se produisent à l’aide de la pile TCP/IP configurée comme pile TCP/IP par défaut. Deux cas particuliers méritent cependant une mention spéciale.
L’implémentation par défaut de GETXBYYSP_gethostname obtient le nom d’hôte local à partir du Registre. Cela correspond au nom attribué à « Poste de travail ». L’implémentation par défaut de GETXBYYSP_gethostbyname et GETXBYYSP_WSAAsyncGetHostByName compare toujours le nom d’hôte fourni avec le nom d’hôte local. Si elles correspondent, l’implémentation par défaut utilise une interface privée pour sonder la pile TCP/IP Microsoft afin de découvrir son adresse IP locale. Ainsi, pour être totalement indépendant de la pile TCP/IP Microsoft, un fournisseur d’espace de noms doit implémenter à la fois GETXBYYSP_gethostbyname et GETXBYYSP_WSAAsyncGetHostByName.