Partager via


GetComputerNameExA, fonction (sysinfoapi.h)

Récupère un nom NetBIOS ou DNS associé à l’ordinateur local. Les noms sont établis au démarrage du système, lorsque le système les lit à partir du Registre.

Syntaxe

BOOL GetComputerNameExA(
  [in]      COMPUTER_NAME_FORMAT NameType,
  [out]     LPSTR                lpBuffer,
  [in, out] LPDWORD              nSize
);

Paramètres

[in] NameType

Type de nom à récupérer. Ce paramètre est une valeur du type d’énumération COMPUTER_NAME_FORMAT. Le tableau suivant fournit des informations supplémentaires.

Valeur Signification
ComputerNameDnsDomain
Nom du domaine DNS affecté à l’ordinateur local. Si l’ordinateur local est un nœud dans un cluster, lpBuffer reçoit le nom de domaine DNS du serveur virtuel du cluster.
ComputerNameDnsFullyQualified
Nom DNS complet qui identifie de manière unique l’ordinateur local. Ce nom est une combinaison du nom d’hôte DNS et du nom de domaine DNS, à l’aide du formulaire HostName.DomainName. Si l’ordinateur local est un nœud dans un cluster, lpBuffer reçoit le nom DNS complet du serveur virtuel du cluster.
ComputerNameDnsHostname
Nom d’hôte DNS de l’ordinateur local. Si l’ordinateur local est un nœud dans un cluster, lpBuffer reçoit le nom d’hôte DNS du serveur virtuel du cluster.
ComputerNameNetBIOS
Nom NetBIOS de l’ordinateur local. Si l’ordinateur local est un nœud dans un cluster, lpBuffer reçoit le nom NetBIOS du serveur virtuel du cluster.
ComputerNamePhysicalDnsDomain
Nom du domaine DNS affecté à l’ordinateur local. Si l’ordinateur local est un nœud dans un cluster, lpBuffer reçoit le nom de domaine DNS de l’ordinateur local, et non le nom du serveur virtuel du cluster.
ComputerNamePhysicalDnsFullyQualified
Nom DNS complet qui identifie de manière unique l’ordinateur. Si l’ordinateur local est un nœud dans un cluster, lpBuffer reçoit le nom DNS complet de l’ordinateur local, et non le nom du serveur virtuel du cluster.

Le nom DNS complet est une combinaison du nom d’hôte DNS et du nom de domaine DNS, à l’aide du formulaire Nom d’hôte.DomainName.

ComputerNamePhysicalDnsHostname
Nom d’hôte DNS de l’ordinateur local. Si l’ordinateur local est un nœud dans un cluster, lpBuffer reçoit le nom d’hôte DNS de l’ordinateur local, et non le nom du serveur virtuel du cluster.
ComputerNamePhysicalNetBIOS
Nom NetBIOS de l’ordinateur local. Si l’ordinateur local est un nœud dans un cluster, lpBuffer reçoit le nom NetBIOS de l’ordinateur local, et non le nom du serveur virtuel du cluster.

[out] lpBuffer

Pointeur vers une mémoire tampon qui reçoit le nom de l’ordinateur ou le nom du serveur virtuel du cluster.

La longueur du nom peut être supérieure à MAX_COMPUTERNAME_LENGTH caractères, car DNS autorise des noms plus longs. Pour vous assurer que cette mémoire tampon est suffisamment grande, définissez ce paramètre sur NULL et utilisez la taille de mémoire tampon requise retournée dans le paramètre lpnSize.

[in, out] nSize

Lors de l’entrée, spécifie la taille de la mémoire tampon, dans TCHAR. En sortie, reçoit le nombre de TCHAR copiés dans la mémoire tampon de destination, sans inclure la fin caractère de null.

Si la mémoire tampon est trop petite, la fonction échoue et GetLastError retourne ERROR_MORE_DATA. Ce paramètre reçoit la taille de la mémoire tampon requise, y compris la fin caractère null.

Si lpBuffer est NULL, ce paramètre doit être égal à zéro.

Valeur de retour

Si la fonction réussit, la valeur de retour est une valeur différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError. Les valeurs possibles sont les suivantes.

Retourner le code Description
ERROR_MORE_DATA
La mémoire tampon lpBuffer est trop petite. Le paramètre lpnSize contient le nombre d’octets requis pour recevoir le nom.

Remarques

Si la stratégie de groupe n’est pas définie pour l’ordinateur local, la fonction GetComputerNameEx récupère les noms NetBIOS ou DNS établis au démarrage du système. Si la stratégie de groupe est définie, la fonction retourne le nom de domaine principal défini par la stratégie de groupe. Les modifications apportées par les fonctions SetComputerName ou SetComputerNameEx ne prennent effet qu’à ce que l’utilisateur redémarre l’ordinateur.

Si l’ordinateur local n’est pas configuré pour utiliser des noms DNS, GetComputerNameEx ne retourne pas d’informations DNS. Pour configurer l’ordinateur pour ce faire, suivez les étapes décrites dans l’aide du système d’exploitation et modifiez le suffixe DNS principal de l’ordinateur, puis redémarrez l’ordinateur.

Le comportement de cette fonction peut être affecté si l’ordinateur local est un nœud dans un cluster. Pour plus d’informations, consultez ResUtilGetEnvironmentWithNetName et UseNetworkName.

Si vous travaillez avec des environnements qui utilisent différentes dispositions DNS, où le nom de domaine complet de l’ordinateur ne correspond pas au nom de domaine complet de son domaine, utilisez LsaQueryInformationPolicy à la place.

Pour compiler une application qui utilise cette fonction, définissez la macro _WIN32_WINNT en tant que 0x0500 ou version ultérieure. Pour plus d’informations, consultez Utilisation des en-têtes Windows.

Exemples

#define _WIN32_WINNT 0x0500

#include <windows.h>
#include <stdio.h>
#include <tchar.h>

void _tmain(void)
{
    TCHAR buffer[256] = TEXT("");
    TCHAR szDescription[8][32] = {TEXT("NetBIOS"), 
        TEXT("DNS hostname"), 
        TEXT("DNS domain"), 
        TEXT("DNS fully-qualified"), 
        TEXT("Physical NetBIOS"), 
        TEXT("Physical DNS hostname"), 
        TEXT("Physical DNS domain"), 
        TEXT("Physical DNS fully-qualified")};
    int cnf = 0;
    DWORD dwSize = _countof(buffer);
    
    for (cnf = 0; cnf < ComputerNameMax; cnf++)
    {
        if (!GetComputerNameEx((COMPUTER_NAME_FORMAT)cnf, buffer, &dwSize))
        {
            _tprintf(TEXT("GetComputerNameEx failed (%d)\n"), GetLastError());
            return;
        }
        else _tprintf(TEXT("%s: %s\n"), szDescription[cnf], buffer);

        dwSize = _countof(buffer);
        ZeroMemory(buffer, dwSize);
    }
}

Note

L’en-tête sysinfoapi.h définit GetComputerNameEx comme 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. Le mélange 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.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête sysinfoapi.h (include Windows.h)
bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

COMPUTER_NAME_FORMAT

noms d’ordinateurs

GetComputerName

ResUtilGetEnvironmentWithNetName

ResUtilSetResourceServiceEnvironment

ResUtilSetResourceServiceStartParameters

SetComputerName

SetComputerNameEx

fonctions d’information système