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
コンピューター名またはクラスター仮想サーバー名を受け取るバッファーへのポインター。
DNS では長い名前が許可されるため、名前の長さはMAX_COMPUTERNAME_LENGTH文字より大きい場合があります。 このバッファーが十分な大きさになるようにするには、このパラメーターを NULL に設定し、 lpnSize パラメーターで返される必要なバッファー サイズを使用します。
[in, out] nSize
入力時に、バッファーのサイズを TCHAR で指定します。 出力時に、 は宛先バッファーにコピーされた TCHAR の 数を受け取ります。終端の null 文字は含まれません。
バッファーが小さすぎると、関数は失敗し、 GetLastError は ERROR_MORE_DATAを返します。 このパラメーターは、終端の null 文字を含め、必要なバッファーのサイズを受け取ります。
lpBuffer が NULL の場合、このパラメーターは 0 である必要があります。
戻り値
関数が成功した場合、戻り値は 0 以外の値になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。 使用可能な値は次のとおりです。
リターン コード | 説明 |
---|---|
|
lpBuffer バッファーが小さすぎます。 lpnSize パラメーターには、名前を受け取るために必要なバイト数が含まれています。 |
注釈
ローカル コンピューターにグループ ポリシーが設定されていない場合、 GetComputerNameEx 関数は、システムの起動時に確立された NetBIOS または DNS 名を取得します。 グループ ポリシーが設定されている場合、この関数はグループ ポリシーによって設定されたプライマリ ドメイン名を返します。 SetComputerName 関数または SetComputerNameEx 関数によって行われた名前の変更は、ユーザーがコンピューターを再起動するまで有効になりません。
ローカル コンピューターが DNS 名を使用するように構成されていない場合、 GetComputerNameEx は DNS 情報を返しません。 これを実行するようにコンピューターを構成するには、オペレーティング システムのヘルプに記載されている手順に従って、コンピューターのプライマリ DNS サフィックスを変更してから、コンピューターを再起動します。
ローカル コンピューターがクラスター内のノードである場合、この関数の動作が影響を受ける可能性があります。 詳細については、「 ResUtilGetEnvironmentWithNetName 」および「 UseNetworkName」を参照してください。
コンピューターの 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);
}
}
Note
sysinfoapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetComputerNameEx を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | sysinfoapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |
関連項目
ResUtilGetEnvironmentWithNetName
ResUtilSetResourceServiceEnvironment