Функция GetComputerNameExA (sysinfoapi.h)
Извлекает netBIOS или DNS-имя, связанное с локальным компьютером. Имена устанавливаются при запуске системы, когда система считывает их из реестра.
Синтаксис
BOOL GetComputerNameExA(
[in] COMPUTER_NAME_FORMAT NameType,
[out] LPSTR lpBuffer,
[in, out] LPDWORD nSize
);
Параметры
[in] NameType
Тип извлекаемого имени. Этот параметр является значением из типа перечисления COMPUTER_NAME_FORMAT. В следующей таблице приведены дополнительные сведения.
[out] lpBuffer
Указатель на буфер, который получает имя компьютера или имя виртуального сервера кластера.
Длина имени может превышать MAX_COMPUTERNAME_LENGTH символов, так как DNS разрешает более длинные имена. Чтобы убедиться, что этот буфер достаточно велик, задайте этот параметр для null и используйте требуемый размер буфера, возвращаемый в параметре lpnSize lpnSize.
[in, out] nSize
При входных данных указывает размер буфера в TCHARs. В выходных данных получает количество TCHARs скопировано в целевой буфер, не включая завершающий символ null.
Если буфер слишком мал, функция завершается ошибкой и GetLastError возвращает ERROR_MORE_DATA. Этот параметр получает необходимый размер буфера, включая завершающий символ null.
Если lpBufferNULL, этот параметр должен быть равен нулю.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение является ненулевое значение.
Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError. Возможные значения включают следующие значения.
Возвращаемый код | Описание |
---|---|
|
Буфер lpBuffer слишком мал. Параметр lpnSize содержит количество байтов, необходимых для получения имени. |
Замечания
Если групповая политика не задана для локального компьютера, функция GetComputerNameEx извлекает имена NetBIOS или DNS, установленные при запуске системы. Если задана групповая политика, функция возвращает основное доменное имя, заданное групповой политикой. Изменения имен, внесенные функциями setComputerName или SetComputerNameEx, не вступают в силу, пока пользователь не перезагрузит компьютер.
Если локальный компьютер не настроен на использование DNS-имен, GetComputerNameEx не вернет dns-данные. Чтобы настроить компьютер для этого, выполните действия, описанные в справке операционной системы, и измените основной DNS-суффикс компьютера, а затем перезагрузите компьютер.
Поведение этой функции может быть затронуто, если локальный компьютер является узлом в кластере. Дополнительные сведения см. в разделе ResUtilGetEnvironmentWithNetName и UseNetworkName.
Если вы работаете с средами, используюющими разные макеты 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 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
целевая платформа | Виндоус |
заголовка | sysinfoapi.h (включая Windows.h) |
библиотеки |
Kernel32.lib |
DLL | Kernel32.dll |
См. также
ResUtilGetEnvironmentWithNetName
ResUtilSetResourceServiceEnvironment