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 présentée sous la forme Nom d'hôte.Nom de domaine. 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 présentée sous la forme Nom d'hôte.Nom de domaine.

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 les 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, en TCHAR. À la sortie, reçoit le nombre de TCHAR copiés dans la mémoire tampon de destination, sans inclure le caractère null de fin.

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 le caractère null de fin.

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

Valeur retournée

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étaillées sur l’erreur, appelez GetLastError. Les valeurs possibles sont les suivantes.

Code de retour 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 stratégie de groupe. Les modifications de nom apportées par les fonctions SetComputerName ou SetComputerNameEx ne prennent pas effet tant que l’utilisateur n’a pas redémarré 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, 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 des dispositions DNS différentes, où le nom de domaine complet de l’ordinateur ne correspond pas au nom de domaine complet de l’ordinateur, utilisez plutôt LsaQueryInformationPolicy .

Pour compiler une application qui utilise cette fonction, définissez la macro _WIN32_WINNT comme 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);
    }
}

Notes

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

Configuration requise

Condition requise Valeur
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 sysinfoapi.h (inclure 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