次の方法で共有


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-terminated 文字列 へのポインターを返します。 inet_ntoa 関数は IPv4 アドレスでのみ機能しますが、WSAAddressToString 関数は、IPv6 アドレスを含むローカル コンピューター上の Winsock プロバイダーでサポートされている任意のソケット アドレスで動作します。

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

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

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

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 を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP、Windows 8.1 [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winsock2.h
ライブラリ 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 を する