Funzione GetComputerNameExA (sysinfoapi.h)

Recupera un nome NetBIOS o DNS associato al computer locale. I nomi vengono stabiliti all'avvio del sistema, quando il sistema li legge dal Registro di sistema.

Sintassi

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

Parametri

[in] NameType

Tipo di nome da recuperare. Questo parametro è un valore dal tipo di enumerazione COMPUTER_NAME_FORMAT. La tabella seguente fornisce informazioni aggiuntive.

Valore Significato
ComputerNameDnsDomain
Nome di dominio DNS assegnato al computer locale. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome di dominio DNS del server virtuale del cluster.
ComputerNameDnsFullyQualified
Nome DNS completo che identifica in modo univoco il computer locale. Questo nome è una combinazione del nome host DNS e del nome di dominio DNS nel formato NomeHost.NomeDominio. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome DNS completo del server virtuale del cluster.
ComputerNameDnsHostname
Nome host DNS del computer locale. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome host DNS del server virtuale del cluster.
ComputerNameNetBIOS
Nome del NetBIOS del computer locale. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome NetBIOS del server virtuale del cluster.
ComputerNamePhysicalDnsDomain
Nome di dominio DNS assegnato al computer locale. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome di dominio DNS del computer locale, non il nome del server virtuale del cluster.
ComputerNamePhysicalDnsFullyQualified
Nome DNS completo che identifica in modo univoco il computer. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome DNS completo del computer locale, non il nome del server virtuale del cluster.

Il nome DNS completo è una combinazione del nome host DNS e del nome di dominio DNS nel formato NomeHost.NomeDominio.

ComputerNamePhysicalDnsHostname
Nome host DNS del computer locale. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome host DNS del computer locale, non il nome del server virtuale del cluster.
ComputerNamePhysicalNetBIOS
Nome del NetBIOS del computer locale. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome NetBIOS del computer locale, non il nome del server virtuale del cluster.

[out] lpBuffer

Puntatore a un buffer che riceve il nome del computer o il nome del server virtuale del cluster.

La lunghezza del nome può essere maggiore di MAX_COMPUTERNAME_LENGTH caratteri perché DNS consente nomi più lunghi. Per assicurarsi che questo buffer sia sufficientemente grande, impostare questo parametro su NULL e usare le dimensioni del buffer necessarie restituite nel parametro lpnSize .

[in, out] nSize

In input specifica le dimensioni del buffer, in TCHARs. Nell'output riceve il numero di TCHAR copiati nel buffer di destinazione, non incluso il carattere Null di terminazione.

Se il buffer è troppo piccolo, la funzione ha esito negativo e GetLastError restituisce ERROR_MORE_DATA. Questo parametro riceve le dimensioni del buffer richiesto, incluso il carattere Null terminante.

Se lpBuffer è NULL, questo parametro deve essere zero.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un valore diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError. Di seguito sono indicati alcuni valori possibili.

Codice restituito Descrizione
ERROR_MORE_DATA
Il buffer lpBuffer è troppo piccolo. Il parametro lpnSize contiene il numero di byte necessari per ricevere il nome.

Commenti

Se i criteri di gruppo non sono impostati per il computer locale, la funzione GetComputerNameEx recupera i nomi NetBIOS o DNS stabiliti all'avvio del sistema. Se i criteri di gruppo sono impostati, la funzione restituisce il nome di dominio primario impostato da criteri di gruppo. Le modifiche del nome apportate dalle funzioni SetComputerName o SetComputerNameEx non vengono applicate fino al riavvio del computer.

Se il computer locale non è configurato per l'uso dei nomi DNS, GetComputerNameEx non restituirà le informazioni DNS. Per configurare il computer a tale scopo, seguire i passaggi descritti nella Guida del sistema operativo e modificare il suffisso DNS primario del computer, quindi riavviare il computer.

Il comportamento di questa funzione può essere interessato se il computer locale è un nodo in un cluster. Per altre informazioni, vedere ResUtilGetEnvironmentWithNetName e UseNetworkName.

Se si utilizzano ambienti che usano layout DNS diversi, in cui il nome di dominio completo del computer non corrisponde al nome di dominio completo del dominio, usare invece LsaQueryInformationPolicy .

Per compilare un'applicazione che usa questa funzione, definire la macro _WIN32_WINNT come 0x0500 o versione successiva. Per altre informazioni, vedere Uso delle intestazioni di Windows.

Esempi

#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);
    }
}

Nota

L'intestazione sysinfoapi.h definisce GetComputerNameEx come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione sysinfoapi.h (includere Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

COMPUTER_NAME_FORMAT

Nomi computer

GetComputerName

ResUtilGetEnvironmentWithNetName

ResUtilSetResourceServiceEnvironment

ResUtilSetResourceServiceStartParameters

SetComputerName

SetComputerNameEx

Funzioni di informazioni di sistema