Compartir a través de


Función GetComputerNameExA (sysinfoapi.h)

Recupera un nombre NetBIOS o DNS asociado al equipo local. Los nombres se establecen en el inicio del sistema, cuando el sistema los lee del registro.

Sintaxis

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

Parámetros

[in] NameType

Tipo de nombre que se va a recuperar. Este parámetro es un valor del tipo de enumeración COMPUTER_NAME_FORMAT. En la tabla siguiente se proporciona información adicional.

Valor Significado
ComputerNameDnsDomain
Nombre del dominio DNS asignado al equipo local. Si el equipo local es un nodo de un clúster, lpBuffer recibe el nombre de dominio DNS del servidor virtual del clúster.
computerNameDnsFullyQualified
Nombre DNS completo que identifica de forma única el equipo local. Este nombre es una combinación del nombre de host DNS y el nombre de dominio DNS mediante el formulario nombre de host.DomainName. Si el equipo local es un nodo de un clúster, lpBuffer recibe el nombre DNS completo del servidor virtual del clúster.
computerNameDnsHostname
Nombre de host DNS del equipo local. Si el equipo local es un nodo de un clúster, lpBuffer recibe el nombre de host DNS del servidor virtual del clúster.
computerNameNetBIOS
Nombre NetBIOS del equipo local. Si el equipo local es un nodo de un clúster, lpBuffer recibe el nombre NetBIOS del servidor virtual del clúster.
ComputerNamePhysicalDnsDomain
Nombre del dominio DNS asignado al equipo local. Si el equipo local es un nodo de un clúster, lpBuffer recibe el nombre de dominio DNS del equipo local, no el nombre del servidor virtual del clúster.
ComputerNamePhysicalDnsFullyQualified
Nombre DNS completo que identifica de forma única el equipo. Si el equipo local es un nodo de un clúster, lpBuffer recibe el nombre DNS completo del equipo local, no el nombre del servidor virtual del clúster.

El nombre DNS completo es una combinación del nombre de host DNS y el nombre de dominio DNS, mediante el formulario nombre de host.DomainName.

ComputerNamePhysicalDnsHostname
Nombre de host DNS del equipo local. Si el equipo local es un nodo de un clúster, lpBuffer recibe el nombre de host DNS del equipo local, no el nombre del servidor virtual del clúster.
computerNamePhysicalNetBIOS
Nombre NetBIOS del equipo local. Si el equipo local es un nodo de un clúster, lpBuffer recibe el nombre NetBIOS del equipo local, no el nombre del servidor virtual del clúster.

[out] lpBuffer

Puntero a un búfer que recibe el nombre del equipo o el nombre del servidor virtual del clúster.

La longitud del nombre puede ser mayor que MAX_COMPUTERNAME_LENGTH caracteres porque DNS permite nombres más largos. Para asegurarse de que este búfer es lo suficientemente grande, establezca este parámetro en NULL y use el tamaño de búfer necesario devuelto en el parámetro lpnSize.

[in, out] nSize

En la entrada, especifica el tamaño del búfer, en TCHAR. En la salida, recibe el número de TCHAR copiados en el búfer de destino, no incluida la terminación carácter null.

Si el búfer es demasiado pequeño, se produce un error en la función y GetLastError devuelve ERROR_MORE_DATA. Este parámetro recibe el tamaño del búfer necesario, incluida la terminación carácter null.

Si lpBuffer es NULL, este parámetro debe ser cero.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un valor distinto de cero.

Si se produce un error en la función, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError. Entre los valores posibles se incluyen los siguientes.

Código devuelto Descripción
ERROR_MORE_DATA
El búfer lpBuffer es demasiado pequeño. El parámetro lpnSize contiene el número de bytes necesarios para recibir el nombre.

Observaciones

Si no se establece la directiva de grupo para el equipo local, la función GetComputerNameEx recupera los nombres NetBIOS o DNS establecidos al inicio del sistema. Si se establece la directiva de grupo, la función devuelve el nombre de dominio principal establecido por directiva de grupo. Los cambios de nombre realizados por las funciones SetComputerName o SetComputerNameEx no surten efecto hasta que el usuario reinicie el equipo.

Si el equipo local no está configurado para usar nombres DNS, GetComputerNameEx no devolverá información de DNS. Para configurar el equipo para ello, siga los pasos descritos en la ayuda del sistema operativo y cambie el sufijo DNS principal del equipo y reinicie el equipo.

El comportamiento de esta función puede verse afectado si el equipo local es un nodo de un clúster. Para obtener más información, vea ResUtilGetEnvironmentWithNetName y UseNetworkName.

Si está trabajando con entornos que usan diseños DNS diferentes, donde el FQDN del equipo no coincide con el FQDN de su dominio, use LsaQueryInformationPolicy en su lugar.

Para compilar una aplicación que use esta función, defina la macro _WIN32_WINNT como 0x0500 o posterior. Para obtener más información, vea Using the Windows Headers.

Ejemplos

#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

El encabezado sysinfoapi.h define GetComputerNameEx como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de sysinfoapi.h (incluya Windows.h)
biblioteca de Kernel32.lib
DLL de Kernel32.dll

Consulte también

COMPUTER_NAME_FORMAT

nombres de equipo

GetComputerName

ResUtilGetEnvironmentWithNetName

ResUtilSetResourceServiceEnvironment

ResUtilSetResourceServiceStartParameters

SetComputerName

SetComputerNameEx

funciones de información del sistema