GetAddressByNameA 関数 (nspapi.h)
[GetAddressByName は、Windows ソケット 2 の時点で使用できなくなりました。 代わりに、Protocol-Independent 名前解決に関する記事で詳しく説明されている関数を使用してください。
GetAddressByName 関数は、名前空間または既定の名前空間のセットを照会して、指定されたネットワーク サービスのネットワーク アドレス情報を取得します。 このプロセスは、サービス名解決と呼ばれます。 ネットワーク サービスでは、この関数を使用して、バインド 関数で使用できるローカル アドレス情報を取得することもできます。
構文
INT GetAddressByNameA(
[in] DWORD dwNameSpace,
[in] LPGUID lpServiceType,
[in, optional] LPSTR lpServiceName,
[in, optional] LPINT lpiProtocols,
[in] DWORD dwResolution,
[in, optional] LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
[out] LPVOID lpCsaddrBuffer,
[in, out] LPDWORD lpdwBufferLength,
[in, out] LPSTR lpAliasBuffer,
[in, out] LPDWORD lpdwAliasBufferLength
);
パラメーター
[in] dwNameSpace
オペレーティング システムがネットワーク アドレス情報を照会する名前空間または既定の名前空間のセット。
名前空間を指定するには、次のいずれかの定数を使用します。
GetAddressByName
[in] lpServiceType
ネットワーク サービスの種類を指定するグローバル一意識別子 (GUID) へのポインター。 Svcguid.h ヘッダー ファイルには、いくつかの GUID サービスの種類の定義と、それらを操作するためのマクロが含まれています。
Svcguid.h ヘッダー ファイルは、Winsock2.h ヘッダー ファイルに自動的には含まれません。
[in, optional] lpServiceName
サービス名を一意に表す、0 で終わる文字列へのポインター。 たとえば、"MY SNA SERVER" などです。
lpServiceName
dwResolution
dwNameSpace
[in, optional] lpiProtocols
プロトコル識別子の 0 で終わる配列へのポインター。 この関数は、名前解決の試行を、これらのプロトコルを提供する名前空間プロバイダーに制限します。 これにより、呼び出し元は検索の範囲を制限できます。
[in] dwResolution
サービス名解決プロセスの側面を指定するビット フラグのセット。 次のビット フラグが定義されています。
[in, optional] lpServiceAsyncInfo
将来の使用のために予約されています。は NULL
[out] lpCsaddrBuffer
1 つ以上の CSADDR_INFO データ構造を受け取るバッファーへのポインター。 バッファーに書き込まれる構造体の数は、解決試行で見つかった情報の量によって異なります。 多くの場合は 1 つだけですが、複数の構造体が書き込まれると想定する必要があります。
[in, out] lpdwBufferLength
入力時に、lpCsaddrBufferが指すバッファーのサイズをバイト単位で指定する変数へのポインター
出力時に、この変数には、CSADDR_INFO 構造体の配列を格納するために必要な合計バイト数が含まれます。 この値が *lpdwBufferLengthの入力値以下であり、関数が成功した場合、これはバッファーに実際に格納されているバイト数です。 この値が *lpdwBufferLengthの入力値より大きい場合、バッファーは小さすぎ、出力値 *lpdwBufferLength は最小のバッファー サイズです。
[in, out] lpAliasBuffer
ネットワーク サービスのエイリアス情報を受信するバッファーへのポインター。
名前空間でエイリアスがサポートされている場合、この関数は、lpAliasBufferが指すバッファーに、0 で終わる名前文字列の配列
名前空間がエイリアスをサポートしていない場合は、2 つのゼロ ターミネータがバッファーに格納されます。
このパラメーターは省略可能で、NULL
[in, out] lpdwAliasBufferLength
入力時に、lpAliasBufferが指すバッファーのサイズを要素 (文字) で指定する変数へのポインター
出力時に、この変数には、名前文字列の配列を格納するために必要な要素 (文字) の合計数が含まれます。 この値が入力値 *lpdwAliasBufferLength以下であり、関数が成功した場合、これはバッファーに実際に格納されている要素の数です。 この値が *lpdwAliasBufferLengthの入力値より大きい場合、バッファーは小さすぎ、出力値 *lpdwAliasBufferLength は最小のバッファー サイズです。
lpAliasBuffer が NULL
戻り値
関数が成功した場合、戻り値は、lpCsaddrBufferが指すバッファーに書き込まれた CSADDR_INFO データ構造体の数です。
関数が失敗した場合、戻り値は SOCKET_ERROR( -1) になります。 拡張エラー情報を取得するには、GetLastErrorを呼び出します。これは、次の拡張エラー値を返します。
エラー コード | 意味 |
---|---|
|
lpCsaddrBuffer が指すバッファーが小さすぎて、関連するすべての CSADDR_INFO 構造体を受信できませんでした。 *lpdwBufferLengthで返される値と同じ大きさのバッファーを使用して関数を呼び出します。 |
備考
この関数は、gethostbyname 関数のより強力なバージョンです。 GetAddressByName 関数は、複数のネーム サービスで動作します。
GetAddressByName 関数を使用すると、クライアントはネットワーク サービスの Windows ソケット アドレスを取得できます。 クライアントは、目的のサービスをサービスの種類とサービス名で指定します。
多くの名前サービスでは、名前サービス プロバイダーがサービス名を解決するときに考慮する既定のプレフィックスまたはサフィックスがサポートされています。 たとえば、DNS 名前空間では、ドメインに "nt.microsoft.com" という名前が付けられ、"ftp millikan" が入力として指定されている場合、DNS ソフトウェアは "ミリカン" を解決できませんが、"millikan.nt.microsoft.com" を正常に解決します。
GetAddressByName 関数は、特定の名前空間内または既定の名前空間のセット内の 2 つの方法でサービス アドレスを検索できることに注意してください。 管理者は、既定の名前空間を使用して、名前で指定されている場合にのみ、特定の名前空間でサービス アドレスを検索することを指定できます。 管理者または名前空間 - セットアップ プログラムでは、名前空間検索の順序を制御することもできます。
手記
nspapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetAddressByName を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | nspapi.h |
ライブラリ | Mswsock.lib |
DLL | Mswsock.dll |
関連項目
getaddrinfo を
gethostbyname を