InetNtopW 関数 (ws2tcpip.h)
InetNtop 関数は、IPv4 または IPv6 インターネット ネットワーク アドレスをインターネット標準形式の文字列に変換します。 この関数の ANSI バージョンは inet_ntop。
構文
PCWSTR WSAAPI InetNtopW(
[in] INT Family,
[in] const VOID *pAddr,
[out] PWSTR pStringBuf,
[in] size_t StringBufSize
);
パラメーター
[in] Family
アドレス ファミリ。
アドレス ファミリに使用できる値は、 Ws2def.h ヘッダー ファイルで定義されます。 Ws2def.h ヘッダー ファイルは Winsock2.h に自動的に含まれるので、直接使用しないでください。 AF_ アドレス ファミリ定数とPF_ プロトコル ファミリ定数の値は同一であるため ( たとえば、AF_INET と PF_INET)、どちらの定数も使用できます。
現在サポートされている値は 、AF_INET と AF_INET6。
値 | 意味 |
---|---|
|
インターネット プロトコル バージョン 4 (IPv4) アドレス ファミリ。 このパラメーターを指定すると、この関数は IPv4 アドレス文字列を返します。 |
|
インターネット プロトコル バージョン 6 (IPv6) アドレス ファミリ。 このパラメーターを指定すると、この関数は IPv6 アドレス文字列を返します。 |
[in] pAddr
文字列に変換するネットワーク バイト内の IP アドレスへのポインター。
Family パラメーターがAF_INETされている場合、pAddr パラメーターは、変換する IPv4 アドレスを持つIN_ADDR構造体を指す必要があります。
Family パラメーターがAF_INET6されている場合、pAddr パラメーターは、変換する IPv6 アドレスを持つIN6_ADDR構造体を指す必要があります。
[out] pStringBuf
IP アドレスの NULL で終わる文字列表現を格納するバッファーへのポインター。
IPv4 アドレスの場合、このバッファーは少なくとも 16 文字を保持するのに十分な大きさにする必要があります。
IPv6 アドレスの場合、このバッファーは少なくとも 46 文字を保持するのに十分な大きさにする必要があります。
[in] StringBufSize
入力時に、 pStringBuf パラメーターが指すバッファーの長さ (文字数)。
戻り値
エラーが発生しない場合、 InetNtop 関数は、標準形式の IP アドレスの文字列表現を含むバッファーへのポインターを返します。
それ 以外の場合 は NULL の値が返され、 を呼び出すことによって特定のエラー コードを取得できます。
拡張エラー情報の WSAGetLastError。
関数が失敗した場合、 WSAGetLastError によって返される拡張エラー コードには、次のいずれかの値を指定できます。
エラー コード | 意味 |
---|---|
Family パラメーターで指定されたアドレス ファミリ はサポートされていません。 このエラーは、指定された Family パラメーターが AF_INET または AF_INET6されていない場合に返されます。 | |
|
無効なパラメーターが関数に渡されました。 このエラーは、pStringBuf で NULL ポインターが渡された場合、または StringBufSize パラメーターが 0 の場合に返されます。 このエラーは、 pStringBuf パラメーターが指すバッファーの長さが、IP アドレスの文字列表現を受け取るのに十分な大きさでない場合にも返されます。 |
注釈
InetNtop 関数は、Windows Vista 以降でサポートされています。
InetNtop 関数は、プロトコルに依存しないアドレスから文字列への変換を提供します。 InetNtop 関数は、pAddr パラメーターで指定されたインターネット アドレス構造を受け取り、IP アドレスを表す NULL で終わる文字列を返します。 inet_ntoa関数は IPv4 アドレスでのみ機能しますが、InetNtop 関数は IPv4 または IPv6 アドレスで動作します。
この関数の ANSI バージョンは、RFC 2553 で定義されている inet_ntop 。 詳細については、 IETF Web サイトで利用可能な RFC 2553 を参照してください。
InetNtop 関数では、文字列への IP アドレス変換を実行するために Windows ソケット DLL を読み込む必要はありません。
指定された Family パラメーターが AF_INET場合、 pAddr パラメーターは、変換する IPv4 アドレスを持つ IN_ADDR 構造体を指す必要があります。 pStringBuf パラメーターによって指されるバッファーで返されるアドレス文字列は、"192.168.16.0" のようにドット 10 進表記で表されます。これは、ドット 10 進表記の IPv4 アドレスの例です。
指定された Family パラメーターが AF_INET6場合、 pAddr パラメーターは、変換する IPv6 アドレスを持つ IN6_ADDR 構造体を指す必要があります。 pStringBuf パラメーターが指すバッファーで返されるアドレス文字列は、インターネット標準形式です。 基本的な文字列表現は、コロンで区切られた 8 つの 16 進数で構成されます。 連続する 0 個の数値の文字列は、二重コロンに置き換えられます。 IPv6 アドレスの文字列形式では、1 つの double-colon しか使用できません。 アドレスが IPv4 互換アドレスの場合、最後の 32 ビットは IPv4 スタイルのドットオクテット表記で表されます。
pStringBuf パラメーターが指すバッファーの長さが IP アドレスの文字列表現を受け取るのに十分な大きさでない場合、InetNtop はERROR_INVALID_PARAMETERを返します。
UNICODE または_UNICODEが定義されている場合、 InetNtop は、この関数の Unicode バージョンである InetNtopW に定義されます。 pStringBuf パラメーターは PSTR データ型に対して定義されます。
UNICODE または_UNICODEが定義されていない場合、 InetNtop は、この関数の ANSI バージョンである InetNtopA に定義されます。 この関数の ANSI バージョンは、常に inet_ntop として定義されます。 pStringBuf パラメーターは PWSTR データ型に対して定義されます。
IN_ADDR構造体は Inaddr.h ヘッダー ファイルで定義されています。
IN6_ADDR構造体は、In6addr.h ヘッダー ファイルで定義されています。
Windows Vista 以降では、 RtlIpv4AddressToString 関数と RtlIpv4AddressToStringEx 関数を使用して、 IN_ADDR 構造体として表される IPv4 アドレスを、インターネット標準のドット 10 進数表記で IPv4 アドレスの文字列表現に変換できます。 Windows Vista 以降では、 RtlIpv6AddressToString 関数と RtlIpv6AddressToStringEx 関数を使用して、 IN6_ADDR 構造体として表される IPv6 アドレスを IPv6 アドレスの文字列表現に変換できます。 RtlIpv6AddressToStringEx 関数は、IPv6 アドレス、スコープ ID、およびポートも標準形式の IPv6 文字列に変換するため、より柔軟です。
Windows 8.1およびWindows Server 2012 R2: InetNtopW 関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストア アプリでサポートされています。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8.1、 Windows Vista [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | ws2tcpip.h |
Library | Ws2_32.lib |
[DLL] | Ws2_32.dll |