GetAddressByNameW, fonction (nspapi.h)
[GetAddressByName n’est plus disponible pour une utilisation à partir de Windows Sockets 2. Utilisez plutôt les fonctions détaillées dans Résolution de noms indépendantes du protocole.]
La fonction GetAddressByName interroge un espace de noms, ou un ensemble d’espaces de noms par défaut, pour récupérer les informations d’adresse réseau d’un service réseau spécifié. Ce processus est appelé résolution de noms de service. Un service réseau peut également utiliser la fonction pour obtenir des informations d’adresse locale qu’il peut utiliser avec la fonction de liaison .
Syntaxe
INT GetAddressByNameW(
[in] DWORD dwNameSpace,
[in] LPGUID lpServiceType,
[in, optional] LPWSTR lpServiceName,
[in, optional] LPINT lpiProtocols,
[in] DWORD dwResolution,
[in, optional] LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
[out] LPVOID lpCsaddrBuffer,
[in, out] LPDWORD lpdwBufferLength,
[in, out] LPWSTR lpAliasBuffer,
[in, out] LPDWORD lpdwAliasBufferLength
);
Paramètres
[in] dwNameSpace
Espace de noms, ou ensemble d’espaces de noms par défaut, que le système d’exploitation doit interroger pour obtenir des informations d’adresse réseau.
Utilisez l’une des constantes suivantes pour spécifier un espace de noms.
La plupart des appels à GetAddressByName doivent utiliser la valeur spéciale NS_DEFAULT. Cela permet à un client de s’en sortir sans savoir quels espaces de noms sont disponibles sur internetwork. L’administrateur système détermine l’accès à l’espace de noms. Les espaces de noms peuvent aller et venir sans que le client ait à connaître les modifications.
[in] lpServiceType
Pointeur vers un identificateur global unique (GUID) qui spécifie le type du service réseau. Le fichier d’en-tête Svcguid.h inclut des définitions de plusieurs types de services GUID et des macros pour les utiliser.
Le fichier d’en-tête Svcguid.h n’est pas automatiquement inclus par le fichier d’en-tête Winsock2.h.
[in, optional] lpServiceName
Pointeur vers une chaîne à terminaison zéro qui représente de façon unique le nom du service. Par exemple, « MY SNA SERVER ».
Définir lpServiceName sur NULL revient à définir dwResolution sur RES_SERVICE. La fonction fonctionne dans son deuxième mode, en obtenant l’adresse locale à laquelle un service du type spécifié doit être lié. La fonction stocke l’adresse locale dans le membre LocalAddr des structures CSADDR_INFO stockées dans *lpCsaddrBuffer.
Si dwResolution est défini sur RES_SERVICE, la fonction ignore le paramètre lpServiceName .
Si dwNameSpace a la valeur NS_DNS, *lpServiceName est le nom de l’hôte.
[in, optional] lpiProtocols
Pointeur vers un tableau à terminaison zéro d’identificateurs de protocole. La fonction limite une tentative de résolution de noms aux fournisseurs d’espaces de noms qui proposent ces protocoles. Cela permet à l’appelant de limiter l’étendue de la recherche.
Si lpiProtocols a la valeur NULL, la fonction récupère des informations sur tous les protocoles disponibles.
[in] dwResolution
Ensemble d’indicateurs de bits qui spécifient des aspects du processus de résolution de noms de service. Les indicateurs de bits suivants sont définis.
[in, optional] lpServiceAsyncInfo
Réservé pour une utilisation ultérieure ; doit avoir la valeur NULL.
[out] lpCsaddrBuffer
Pointeur vers une mémoire tampon pour recevoir une ou plusieurs structures de données CSADDR_INFO . Le nombre de structures écrites dans la mémoire tampon dépend de la quantité d’informations trouvées dans la tentative de résolution. Vous devez supposer que plusieurs structures seront écrites, bien que dans de nombreux cas, il n’y en ait qu’une seule.
[in, out] lpdwBufferLength
Pointeur vers une variable qui, lors de l’entrée, spécifie la taille, en octets, de la mémoire tampon pointée par lpCsaddrBuffer.
Lors de la sortie, cette variable contient le nombre total d’octets requis pour stocker le tableau de structures CSADDR_INFO . Si cette valeur est inférieure ou égale à la valeur d’entrée de *lpdwBufferLength et que la fonction réussit, il s’agit du nombre d’octets réellement stockés dans la mémoire tampon. Si cette valeur est supérieure à la valeur d’entrée de *lpdwBufferLength, la mémoire tampon était trop petite et la valeur de sortie de *lpdwBufferLength est la taille de mémoire tampon minimale requise.
[in, out] lpAliasBuffer
Pointeur vers une mémoire tampon pour recevoir des informations d’alias pour le service réseau.
Si un espace de noms prend en charge les alias, la fonction stocke un tableau de chaînes de noms sans fin dans la mémoire tampon pointée par lpAliasBuffer. Il existe un double terminateur zéro à la fin de la liste. Le prénom du tableau est le nom principal du service. Les noms qui suivent sont des alias. DNS est un exemple d’espace de noms qui prend en charge les alias.
Si un espace de noms ne prend pas en charge les alias, il stocke une double marque de fin zéro dans la mémoire tampon.
Ce paramètre est facultatif et peut être défini sur NULL.
[in, out] lpdwAliasBufferLength
Pointeur vers une variable qui, lors de l’entrée, spécifie la taille, en éléments (caractères) de la mémoire tampon pointée par lpAliasBuffer.
Lors de la sortie, cette variable contient le nombre total d’éléments (caractères) requis pour stocker le tableau de chaînes de noms. Si cette valeur est inférieure ou égale à la valeur d’entrée de *lpdwAliasBufferLength et que la fonction réussit, il s’agit du nombre d’éléments réellement stockés dans la mémoire tampon. Si cette valeur est supérieure à la valeur d’entrée de *lpdwAliasBufferLength, la mémoire tampon était trop petite et la valeur de sortie de *lpdwAliasBufferLength est la taille de mémoire tampon minimale requise.
Si lpAliasBuffer a la valeur NULL, lpdwAliasBufferLength n’a aucun sens et peut également être NULL.
Valeur retournée
Si la fonction réussit, la valeur de retour correspond au nombre de structures de données CSADDR_INFO écrites dans la mémoire tampon pointée par lpCsaddrBuffer.
Si la fonction échoue, la valeur de retour est SOCKET_ERROR( –1). Pour obtenir des informations d’erreur étendues, appelez GetLastError, qui retourne la valeur d’erreur étendue suivante.
Code d'erreur | Signification |
---|---|
|
La mémoire tampon pointée par lpCsaddrBuffer était trop petite pour recevoir toutes les structures CSADDR_INFO pertinentes. Appelez la fonction avec une mémoire tampon au moins aussi grande que la valeur retournée dans *lpdwBufferLength. |
Notes
Cette fonction est une version plus puissante de la fonction gethostbyname . La fonction GetAddressByName fonctionne avec plusieurs services de noms.
La fonction GetAddressByName permet à un client d’obtenir une adresse Windows Sockets pour un service réseau. Le client spécifie le service d’intérêt par son type de service et son nom de service.
De nombreux services de noms prennent en charge un préfixe ou un suffixe par défaut que le fournisseur de services de noms prend en compte lors de la résolution des noms de service. Par exemple, dans l’espace de noms DNS, si un domaine est nommé « nt.microsoft.com » et que « ftp millikan » est fourni en tant qu’entrée, le logiciel DNS ne parvient pas à résoudre « millikan », mais résout correctement « millikan.nt.microsoft.com ».
Notez que la fonction GetAddressByName peut rechercher une adresse de service de deux manières : dans un espace de noms particulier ou dans un ensemble d’espaces de noms par défaut. À l’aide d’un espace de noms par défaut, un administrateur peut spécifier que certains espaces de noms seront recherchés pour les adresses de service uniquement s’ils sont spécifiés par leur nom. Un administrateur ou un espace de noms : le programme d’installation peut également contrôler l’ordre des recherches d’espace de noms.
Notes
L’en-tête nspapi.h définit GetAddressByName en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Spécifications
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | nspapi.h |
Bibliothèque | Mswsock.lib |
DLL | Mswsock.dll |