GetComputerNameExA 함수(sysinfoapi.h)

로컬 컴퓨터와 연결된 NetBIOS 또는 DNS 이름을 검색합니다. 이름은 시스템이 레지스트리에서 읽을 때 시스템 시작 시 설정됩니다.

구문

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

매개 변수

[in] NameType

검색할 이름의 형식입니다. 이 매개 변수는 COMPUTER_NAME_FORMAT 열거형 형식의 값입니다. 다음 표에서는 추가 정보를 제공합니다.

의미
ComputerNameDnsDomain
로컬 컴퓨터에 할당된 DNS 도메인의 이름입니다. 로컬 컴퓨터가 클러스터의 노드인 경우 lpBuffer 는 클러스터 가상 서버의 DNS 도메인 이름을 받습니다.
ComputerNameDnsFullyQualified
로컬 컴퓨터를 고유하게 식별하는 정규화된 DNS 이름입니다. 이 이름은 HostName.DomainName형식으로 DNS 호스트 이름과 DNS 도메인 이름을 결합한 것입니다. 로컬 컴퓨터가 클러스터의 노드인 경우 lpBuffer 는 클러스터 가상 서버의 정규화된 DNS 이름을 받습니다.
ComputerNameDnsHostname
로컬 컴퓨터의 DNS 호스트 이름입니다. 로컬 컴퓨터가 클러스터의 노드인 경우 lpBuffer 는 클러스터 가상 서버의 DNS 호스트 이름을 받습니다.
ComputerNameNetBIOS
로컬 컴퓨터의 NetBIOS 이름입니다. 로컬 컴퓨터가 클러스터의 노드인 경우 lpBuffer 는 클러스터 가상 서버의 NetBIOS 이름을 받습니다.
ComputerNamePhysicalDnsDomain
로컬 컴퓨터에 할당된 DNS 도메인의 이름입니다. 로컬 컴퓨터가 클러스터의 노드인 경우 lpBuffer 는 클러스터 가상 서버의 이름이 아닌 로컬 컴퓨터의 DNS 도메인 이름을 받습니다.
ComputerNamePhysicalDnsFullyQualified
컴퓨터를 고유하게 식별하는 정규화된 DNS 이름입니다. 로컬 컴퓨터가 클러스터의 노드인 경우 lpBuffer 는 클러스터 가상 서버의 이름이 아닌 로컬 컴퓨터의 정규화된 DNS 이름을 받습니다.

정규화된 DNS 이름은 HostName.DomainName형식으로 DNS 호스트 이름과 DNS 도메인 이름을 결합한 것입니다.

ComputerNamePhysicalDnsHostname
로컬 컴퓨터의 DNS 호스트 이름입니다. 로컬 컴퓨터가 클러스터의 노드인 경우 lpBuffer 는 클러스터 가상 서버의 이름이 아닌 로컬 컴퓨터의 DNS 호스트 이름을 받습니다.
ComputerNamePhysicalNetBIOS
로컬 컴퓨터의 NetBIOS 이름입니다. 로컬 컴퓨터가 클러스터의 노드인 경우 lpBuffer 는 클러스터 가상 서버의 이름이 아닌 로컬 컴퓨터의 NetBIOS 이름을 받습니다.

[out] lpBuffer

컴퓨터 이름 또는 클러스터 가상 서버 이름을 수신하는 버퍼에 대한 포인터입니다.

DNS에서 더 긴 이름을 허용하므로 이름의 길이가 MAX_COMPUTERNAME_LENGTH 문자보다 클 수 있습니다. 이 버퍼가 충분히 큰지 확인하려면 이 매개 변수를 NULL 로 설정하고 lpnSize 매개 변수에 반환된 필수 버퍼 크기를 사용합니다.

[in, out] nSize

입력에서 는 TCHAR에서 버퍼의 크기를 지정합니다. 출력 시 은 종료 null 문자를 포함하지 않고 대상 버퍼에 복사된 TCHAR 수를 받습니다.

버퍼가 너무 작으면 함수가 실패하고 GetLastError가 ERROR_MORE_DATA 반환합니다. 이 매개 변수는 종료 null 문자를 포함하여 필요한 버퍼의 크기를 받습니다.

lpBufferNULL인 경우 이 매개 변수는 0이어야 합니다.

반환 값

함수가 성공하면 반환 값은 0이 아닌 값입니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다. 가능한 값은 다음과 같습니다.

반환 코드 설명
ERROR_MORE_DATA
lpBuffer 버퍼가 너무 작습니다. lpnSize 매개 변수에는 이름을 받는 데 필요한 바이트 수가 포함됩니다.

설명

로컬 컴퓨터에 대해 그룹 정책이 설정되지 않은 경우 GetComputerNameEx 함수는 시스템 시작 시 설정된 NetBIOS 또는 DNS 이름을 검색합니다. 그룹 정책이 설정된 경우 함수는 그룹 정책에 의해 설정된 기본 도메인 이름을 반환합니다. SetComputerName 또는 SetComputerNameEx 함수의 이름 변경 내용은 사용자가 컴퓨터를 다시 시작할 때까지 적용되지 않습니다.

로컬 컴퓨터가 DNS 이름을 사용하도록 구성되지 않은 경우 GetComputerNameEx 는 DNS 정보를 반환하지 않습니다. 이 작업을 수행하도록 컴퓨터를 구성하려면 운영 체제 도움말에 설명된 단계를 수행하고 컴퓨터의 기본 DNS 접미사를 변경한 다음 컴퓨터를 다시 시작합니다.

로컬 컴퓨터가 클러스터의 노드인 경우 이 함수의 동작에 영향을 받을 수 있습니다. 자세한 내용은 ResUtilGetEnvironmentWithNetNameUseNetworkName을 참조하세요.

컴퓨터의 FQDN이 도메인의 FQDN과 일치하지 않는 다른 DNS 레이아웃을 사용하는 환경에서 작업하는 경우 대신 LsaQueryInformationPolicy 를 사용합니다.

이 함수를 사용하는 애플리케이션을 컴파일하려면 _WIN32_WINNT 매크로를 0x0500 이상으로 정의합니다. 자세한 내용은 Windows 헤더 사용을 참조하세요.

예제

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

참고

sysinfoapi.h 헤더는 GETComputerNameEx를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 sysinfoapi.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

COMPUTER_NAME_FORMAT

컴퓨터 이름

GetComputerName

ResUtilGetEnvironmentWithNetName

ResUtilSetResourceServiceEnvironment

ResUtilSetResourceServiceStartParameters

SetComputerName

SetComputerNameEx

시스템 정보 함수