Win32 API 日本語リファレンス
ホーム › Networking.WinSock › LPWSPADDRESSTOSTRING

LPWSPADDRESSTOSTRING

コールバック

シグネチャ

INT LPWSPADDRESSTOSTRING(
    SOCKADDR* lpsaAddress,
    DWORD dwAddressLength,
    WSAPROTOCOL_INFOW* lpProtocolInfo,
    LPWSTR lpszAddressString,
    DWORD* lpdwAddressStringLength,
    INT* lpErrno
);

パラメーター

フィールド型説明
lpsaAddressSOCKADDR*文字列に変換する sockaddr 構造体へのポインターです。
dwAddressLengthDWORDsockaddr のアドレスの長さ (バイト単位)。
lpProtocolInfoWSAPROTOCOL_INFOW*(必須) 変換を実行するプロバイダーに関連付けられた WSAProtocol_Info 構造体。
lpszAddressStringLPWSTR人間が読める形式のアドレス文字列を受け取るバッファー。
lpdwAddressStringLengthDWORD*AddressString バッファーの長さ (バイト単位)。実際にバッファーへコピーされた文字列の長さが返されます。指定されたバッファーが十分な大きさでない場合、この関数は WSAEFAULT という固有のエラーで失敗し、このパラメーターには必要なサイズ (バイト単位) が設定されます。
lpErrnoINT*エラーコードへのポインター。

公式ドキュメント

LPWSPAddressToString 関数は、 sockaddr 構造体のすべての要素を、人間が読める数値形式のアドレス文字列に変換します。これは主に表示目的で使用されます。

戻り値

エラーが発生しなかった場合、 LPWSPAddressToString は 0 を返します。それ以外の場合は SOCKET_ERROR を返し、固有のエラーコードは lpErrno から取得できます。

エラーコード 意味
WSAEFAULT
指定された AddressString バッファーが小さすぎます。より大きなバッファーを渡してください。
WSAEINVAL
指定されたアドレスが有効なソケットアドレスでないか、そのアドレスファミリーがプロバイダーでサポートされていないか、指定された lpProtocolInfo がプロバイダーでサポートされる WSAProtocol_Info 構造体を参照していませんでした。

解説(Remarks)

階層化サービスプロバイダーはこの関数の実装を提供しますが、プロトコルチェーン内の次の層の LPWSPAddressToString を呼び出す場合には、この関数のクライアントでもあります。lpProtocolInfo パラメーターについては、プロトコルチェーンの各層を通じて伝播される際に特別な考慮事項が適用されます。

プロトコルチェーン内の次の層がさらに別の層である場合、次の層の LPWSPAddressToString を呼び出すときに、この層は同じ未変更のチェーン情報を持つ同じ未変更の WSAProtocol_Info 構造体を参照する lpProtocolInfo パラメーターを次の層に渡す必要があります。ただし、次の層が基本プロトコル (つまりチェーンの最後の要素) である場合、この層は基本プロバイダーの LPWSPAddressToString を呼び出す際に置き換えを行います。この場合、lpProtocolInfo パラメーターは基本プロバイダーの WSAPROTOCOL_INFO 構造体を参照する必要があります。この方針の重要な利点の 1 つは、基本サービスプロバイダーがプロトコルチェーンを認識する必要がないことです。

これと同じ伝播方針は、 LPWSPDuplicateSocket、 WSPStartup、 LPWSPSocket、 LPWSPStringToAddress など、他の関数の階層化されたシーケンスを通じて WSAProtocol_Info 構造体を伝播する場合にも適用されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)