WSAAddressToStringA 関数 (winsock2.h)

WSAAddressToString 関数は、sockaddr 構造体のすべてのコンポーネントを、人間が判読できるアドレスの文字列表現に変換します。

これは主に表示目的で使用することを目的としています。 呼び出し元が特定のプロバイダーによって翻訳を実行する必要がある場合は、lpProtocolInfo パラメーターに対応するWSAPROTOCOL_INFO構造体を指定する必要があります。

構文

INT WSAAPI WSAAddressToStringA(
  [in]           LPSOCKADDR          lpsaAddress,
  [in]           DWORD               dwAddressLength,
  [in, optional] LPWSAPROTOCOL_INFOA lpProtocolInfo,
  [in, out]      LPSTR               lpszAddressString,
  [in, out]      LPDWORD             lpdwAddressStringLength
);

パラメーター

[in] lpsaAddress

文字列に変換する sockaddr 構造体へのポインター。

[in] dwAddressLength

lpsaAddress パラメーターが指す sockaddr 構造体内のアドレスの長さ (バイト単位)。 dwAddressLength パラメーターのサイズは、プロトコルによって異なる場合があります。

[in, optional] lpProtocolInfo

特定のプロバイダーの WSAPROTOCOL_INFO 構造体へのポインター。 これがパラメーターが NULL の場合、呼び出しは lpsaAddress パラメーターに示されているアドレス ファミリをサポートする最初のプロトコルのプロバイダーにルーティングされます。

[in, out] lpszAddressString

人間が判読できるアドレス文字列を受け取るバッファーへのポインター。

[in, out] lpdwAddressStringLength

入力時に、このパラメーターは lpszAddressString パラメーターによって指されるバッファーの長さを指定します。 長さは ANSI 文字列の場合はバイト単位、Unicode 文字列の場合は WCHAR で表されます。 出力時に、このパラメーターは、lpszAddressString パラメーターによって指されるバッファーに実際にコピーされた NULL ターミネータを含む文字列の長さを返します。 指定したバッファーのサイズが十分でない場合、 関数は WSAEFAULT の特定のエラーで失敗し、このパラメーターは必要なサイズで更新されます。

戻り値

エラーが発生しない場合、 WSAAddressToString は 0 の値を返します。 それ以外の場合は、SOCKET_ERROR値が返され、 WSAGetLastError を呼び出すことによって特定のエラー番号を取得できます。

エラー コード 意味
WSAEFAULT
指定された lpcsAddresslpProtocolInfo、および lpszAddressString パラメーターは、プロセスのアドレス空間内のすべてではないメモリを指すか、 lpszAddressString パラメーターが指すバッファーが小さすぎます。 より大きなバッファーを渡します。
WSAEINVAL
無効なパラメーターが渡されました。 lpsaAddressdwAddressLength、または lpdwAddressStringLength パラメーターが NULL の場合、このエラーが返されます。 指定されたアドレスが有効なソケット アドレスではない場合、または指定されたアドレス ファミリをサポートするトランスポート プロバイダーがない場合も、このエラーが返されます。
WSAENOBUFS
バッファーに空き領域がありません。
WSANOTINITIALIZED
Winsock 2 DLL が初期化されていません。 アプリケーションは、Windows ソケット関数を呼び出す前に、まず WSAStartup を呼び出す必要があります。

注釈

WSAAddressToString 関数は、プロトコルに依存しないアドレスから文字列への変換を提供します。 WSAAddressToString 関数は、lpsaAddress パラメーターが指すソケット アドレス構造を受け取り、lpszAddressString パラメーターのソケット アドレスを表す NULL終わる文字列へのポインターを返します。 inet_ntoa関数は IPv4 アドレスでのみ機能しますが、WSAAddressToString 関数は、IPv6 アドレスを含むローカル コンピューター上の Winsock プロバイダーによってサポートされている任意のソケット アドレスで動作します。

lpsaAddress パラメーターが IPv4 ソケット アドレスを指している場合 (アドレス ファミリはAF_INET)、lpszAddressString パラメーターが指すバッファーで返されるアドレス文字列は、"192.168.16.0" のようにドット 10 進表記になります。たとえば、ドット付き 10 進数表記の IPv4 アドレスの例です。

lpsaAddress パラメーターが IPv6 ソケット アドレスを指している場合 (アドレス ファミリはAF_INET6)、lpszAddressString パラメーターによって指されるバッファーで返されるアドレス文字列はインターネット標準形式になります。 基本的な文字列表現は、コロンで区切られた 8 つの 16 進数で構成されます。 連続する 0 個の数値の文字列は、二重コロンに置き換えられます。 IPv6 アドレスの文字列表現には、1 つのダブルコロンしか使用できません。

lpszAddressString パラメーターが指すバッファーの長さが、ソケット アドレスの文字列表現を受け取るのに十分な大きさではない場合、WSAAddressToStringWSAEFAULT を返します。

WSAAddressToString 関数を使用した IPv6 アドレスのサポートは、Service Pack 1 (SP1) 以降の Windows XP で追加されました。 IPv6 アドレスをサポートするには、 WSAAddressToString 関数のローカル コンピューターにも IPv6 をインストールする必要があります。

Windows Phone 8:WSAAddressToStringW 関数は、Windows Phone 8 以降の Windows Phone ストア アプリでサポートされています。

Windows 8.1 および Windows Server 2012 R2: WSAAddressToStringW 関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストア アプリでサポートされています。

注意

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

要件

要件
サポートされている最小のクライアント Windows XP、Windows 8.1 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー winsock2.h
Library Ws2_32.lib
[DLL] Ws2_32.dll

こちらもご覧ください

InetNtop

InetPton

RtlIpv4AddressToString

RtlIpv4AddressToStringEx

RtlIpv4StringToAddress

RtlIpv4StringToAddressEx

RtlIpv6AddressToString

RtlIpv6AddressToStringEx

RtlIpv6StringToAddress

RtlIpv6StringToAddressEx

WSAPROTOCOL_INFO

WSAStartup

WSAStringToAddress

inet_addr

inet_ntoa

Sockaddr