InetPtonW 関数 (ws2tcpip.h)

InetPton 関数は、標準テキスト プレゼンテーション フォームの IPv4 または IPv6 インターネット ネットワーク アドレスを数値バイナリ形式に変換します。 この関数の ANSI バージョンは inet_pton

構文

INT WSAAPI InetPtonW(
  [in]  INT    Family,
  [in]  PCWSTR pszAddrString,
  [out] PVOID  pAddrBuf
);

パラメーター

[in] Family

アドレス ファミリ。

アドレス ファミリに使用できる値は、 Ws2def.h ヘッダー ファイルで定義されます。 Ws2def.h ヘッダー ファイルは Winsock2.h に自動的に含まれるので、直接使用しないでください。 AF_ アドレス ファミリ定数とPF_ プロトコル ファミリ定数の値は同一であるため ( たとえば、AF_INETPF_INET)、どちらの定数も使用できます。

現在サポートされている値は 、AF_INETAF_INET6

意味
AF_INET
2
インターネット プロトコル バージョン 4 (IPv4) アドレス ファミリ。 このパラメーターを指定する場合、 pszAddrString パラメーターは IPv4 アドレスのテキスト表現を指す必要があり、 pAddrBuf パラメーターは IPv4 アドレスを表す IN_ADDR 構造体へのポインターを返します。
AF_INET6
23
インターネット プロトコル バージョン 6 (IPv6) アドレス ファミリ。 このパラメーターを指定する場合、 pszAddrString パラメーターは IPv6 アドレスのテキスト表現を指す必要があり、 pAddrBuf パラメーターは IPv6 アドレスを表す IN6_ADDR 構造体へのポインターを返します。

[in] pszAddrString

数値バイナリ形式に変換する IP アドレスのテキスト表現を含む NULL で終わる文字列へのポインター。

Family パラメーターがAF_INETされている場合、pszAddrString パラメーターは、標準のドット 10 進数表記の IPv4 アドレスのテキスト表現を指す必要があります。

Family パラメーターがAF_INET6されている場合、pszAddrString パラメーターは、標準表記で IPv6 アドレスのテキスト表現を指す必要があります。

[out] pAddrBuf

IP アドレスの数値バイナリ表現を格納するバッファーへのポインター。 IP アドレスは、ネットワークのバイト順で返されます。

Family パラメーターがAF_INETされている場合、このバッファーは、IN_ADDR構造体を保持するのに十分な大きさにする必要があります。

Family パラメーターがAF_INET6されている場合、このバッファーは、IN6_ADDR構造体を保持するのに十分な大きさにする必要があります。

戻り値

エラーが発生しない場合、 InetPton 関数は値 1 を返し、 pAddrBuf パラメーターが指すバッファーには、ネットワークのバイト順のバイナリ数値 IP アドレスが含まれます。

pAddrBuf パラメーターが有効な IPv4 ドット 10 進数文字列または有効な IPv6 アドレス文字列ではない文字列を指している場合、InetPton 関数は 0 の値を返します。 それ以外の場合は、-1 の値が返され、 を呼び出すことによって特定のエラー コードを取得できます。
拡張エラー情報の WSAGetLastError

関数にエラーがある場合、 WSAGetLastError によって返される拡張エラー コードには、次のいずれかの値を指定できます。

エラー コード 意味
WSAEAFNOSUPPORT
Family パラメーターで指定されたアドレス ファミリ はサポートされていません。 このエラーは、指定された Family パラメーターが AF_INET または AF_INET6されていない場合に返されます。
WSAEFAULT
pszAddrString パラメーターまたは pAddrBuf パラメーターが NULL であるか、ユーザー アドレス空間の一部ではありません。

注釈

InetPton 関数は、Windows Vista 以降でサポートされています。

InetPton 関数は、標準テキストプレゼンテーション フォームのインターネット ネットワーク アドレスを数値バイナリ形式にプロトコルに依存しない変換を提供します。 InetPton 関数は、pszAddrString パラメーターが指すインターネット アドレスのテキスト表現を受け取り、pAddrBuf パラメーターの数値バイナリ IP アドレスへのポインターを返します。 inet_addr関数は IPv4 アドレス文字列でのみ機能しますが、InetPton 関数は IPv4 または IPv6 アドレス文字列で動作します。

この関数の ANSI バージョンは、RFC 2553 で定義されている inet_pton 。 詳細については、 IETF Web サイトで利用可能な RFC 2553 を参照してください。

InetPton 関数では、IP アドレスを表すテキスト文字列を数値バイナリ IP アドレスに変換するために Windows ソケット DLL を読み込む必要はありません。

指定した Family パラメーターが AF_INETの場合、 pszAddrString パラメーターは、IPv4 アドレスのテキスト文字列をドット 10 進数表記で指す必要があります(ドット 10 進数表記の IPv4 アドレスの例である"192.168.16.0")。

指定された Family パラメーターが AF_INET6の場合、 pszAddrString パラメーターはインターネット標準形式の IPv6 アドレスのテキスト文字列を指す必要があります。 基本的な文字列表現は、コロンで区切られた 8 つの 16 進数で構成されます。 連続する 0 個の数値の文字列は、二重コロンに置き換えることができます。 IPv6 アドレスの文字列形式では、1 つの double-colon しか使用できません。 アドレスが IPv4 互換アドレスの場合、最後の 32 ビットは IPv4 スタイルのドットオクテット表記で表すことができます。

UNICODE または_UNICODEが定義されている場合、 InetPton は、この関数の Unicode バージョンである InetPtonW に定義されます。 pszAddrString パラメーターは、PCWSTR データ型に対して定義されます。

UNICODE または_UNICODEが定義されていない場合、 InetPton は、この関数の ANSI バージョンである InetPtonA に定義されます。 この関数の ANSI バージョンは、常に inet_pton として定義されます。 pszAddrString パラメーターは、PCSTR データ型に対して定義されます。

IN_ADDR構造体は Inaddr.h ヘッダー ファイルで定義されています。

IN6_ADDR構造体は、In6addr.h ヘッダー ファイルで定義されています。

Windows Vista 以降では、 RtlIpv4StringToAddress 関数と RtlIpv4StringToAddressEx 関数を使用して、インターネット標準のドット 10 進数表記の IPv4 アドレスのテキスト表現を 、IN_ADDR 構造体として表される数値バイナリ アドレスに変換できます。 Windows Vista 以降では、 RtlIpv6StringToAddress 関数と RtlIpv6StringToAddressEx 関数を使用して、IPv6 アドレスの文字列表現を 、IN6_ADDR 構造体として表される数値バイナリ IPv6 アドレスに変換できます。 RtlIpv6StringToAddressEx 関数は、標準表記でスコープ ID とポートを含めることができる IPv6 アドレスの文字列表現を数値バイナリ形式に変換するため、より柔軟です。

Windows 8.1およびWindows Server 2012 R2: InetPtonW 関数は、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

こちらもご覧ください

IN6_ADDR

IN_ADDR

InetNtop

RtlIpv4AddressToString

RtlIpv4AddressToStringEx

RtlIpv4StringToAddress

RtlIpv4StringToAddressEx

RtlIpv6AddressToString

RtlIpv6AddressToStringEx

RtlIpv6StringToAddress

RtlIpv6StringToAddressEx

inet_addr

inet_ntoa