次の方法で共有


RtlIpv6StringToAddressA 関数 (ip2string.h)

RtlIpv6StringToAddress 関数は、IPv6 アドレスの文字列形式をバイナリ IPv6 アドレスに変換します。

構文

NTSYSAPI NTSTATUS RtlIpv6StringToAddressA(
  [in]  PCSTR    S,
  [out] PCSTR    *Terminator,
  [out] in6_addr *Addr
);

パラメーター

[in] S

NULLIPv6 アドレスの終端文字列表現を含むバッファーへのポインター。

[out] Terminator

変換された文字列を終了した文字へのポインターを受け取るパラメーター。 これは、呼び出し元が文字列から詳細情報を抽出するために使用できます。

[out] Addr

IPv6 アドレスのバイナリ表現を格納するポインター。

戻り値

関数が成功した場合、戻り値は STATUS_SUCCESS

関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。

リターン コード 形容
STATUS_INVALID_PARAMETER
無効なパラメーターが関数に渡されました。 このエラーは、S パラメーターが指す文字列に IPv6 アドレスの適切な文字列表現が含まれていない場合に返されます。

このエラー コードは Ntstatus.h ヘッダー ファイルで定義されています。

その他の
FormatMessage を使用して、返されたエラーのメッセージ文字列を取得します。

備考

RtlIpv6StringToAddress 関数を使用して、IPv6 アドレスの文字列形式をネットワーク順 (左から右に並べ替えられたバイト数) で返される IPv6 アドレスに変換します。

RtlIpv6StringToAddress は、文字列から IP アドレスへの変換を実行するために Windows ソケットで提供される関数にアクセスするために Windows ソケット DLL を読み込む必要がない便利な関数です。

S パラメーターが指す文字列は、IPv6 アドレス文字列の形式で表す必要があります。 IPv6 アドレスの基本的な文字列表現は、コロンで区切られた 8 つの 16 進数で構成されます。 連続する 0 個の数値の文字列は、二重コロンで置き換えることができます。 IPv6 アドレスの文字列表現には、1 つのダブルコロンしか存在できません。 アドレスが IPv4 互換アドレス、IPv4 マップ IPv6 アドレス、または ISATAP アドレスである場合、最後の 32 ビットは IPv4 スタイルのドットオクテット表記で表されます。 詳細については、IETF によって公開 RFC 5942 のセクション 5 を参照してください。

成功した場合、Terminator パラメーターは、変換された文字列を終了した文字を指します。 これにより、アプリケーションは、RtlIpv6StringToAddress 関数に、IP アドレスと追加情報を含む文字列を渡し、残りの情報を解析できます。

無効な IPv6 アドレス (:::: など) の一部は、有効な IPv6 アドレスで始まる点に注意してください。 RtlIpv6StringToAddress 関数は、IPv6 アドレスの有効な部分を二重コロン (::) として解析した状態で成功を返します。 ターミネータは、次に 3 番目のコロンを指します。 渡された文字列全体が有効な IPv6 アドレスであることを検証するには、ターミネータが正しい文字を指していることを確認する必要があります。 S パラメーターに IPv6 アドレスのみが含まれている場合、ターミネータは文字列の末尾にある NULL 文字を指す必要があります。
 
UNICODE または_UNICODEが定義されている場合、RtlIpv6StringToAddress は、この関数の Unicode バージョンである RtlIpv6StringToAddressWを するように定義されます。 S パラメーターと Terminator パラメーターは、PCWSTR データ型に定義されます。

UNICODE と_UNICODEの両方が定義されていない場合、RtlIpv6StringToAddress は、この関数の ANSI バージョンである RtlIpv6StringToAddressAを するように定義されます。 S パラメーターと Terminator パラメーターは、PCSTR データ型に定義されます。

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

RtlIpv6StringToAddress 関数を含むインポート ライブラリは、Windows Vista 用にリリースされた Microsoft Windows ソフトウェア開発キット (SDK) には含まれていません。 RtlIpv6StringToAddress 関数は、Windows Driver Kit (WDK) に含まれる Ntdll.lib インポート ライブラリに含まれています。 アプリケーションでは、GetModuleHandle を使用し、GetProcAddress 関数を して、Ntdll.dll から関数ポインターを取得し、この関数を呼び出すこともできます。

手記

ip2string.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして RtlIpv6StringToAddress を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2008 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー ip2string.h (Mstcpip.h、Ip2string.h を含む)
ライブラリ ntdll.lib
DLL ntdll.dll

関連項目

GetModuleHandle を する

GetProcAddress の

IN6_ADDR

InetNtop を する

InetPton

LoadLibrary

RtlIpv4AddressToString を する

RtlIpv4AddressToStringEx の

RtlIpv4StringToAddress の

RtlIpv4StringToAddressEx の

RtlIpv6AddressToString を する

RtlIpv6AddressToStringEx を する

RtlIpv6StringToAddressEx の

inet_addr

inet_ntoa