WSASetSocketPeerTargetName 関数 (ws2tcpip.h)
WSASetSocketPeerTargetName 関数を使用して、ピア IP アドレスに対応するピア ターゲット名 (SPN) を指定します。 このターゲット名は、認証する必要があるピアを安全に識別するために、クライアント アプリケーションによって指定されることを意図しています。
構文
INT WSAAPI WSASetSocketPeerTargetName(
[in] SOCKET Socket,
[in] const SOCKET_PEER_TARGET_NAME *PeerTargetName,
[in] ULONG PeerTargetNameLen,
[in, optional] LPWSAOVERLAPPED Overlapped,
[in, optional] LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
);
パラメーター
[in] Socket
ピア ターゲット名が割り当てられているソケットを識別する記述子。
[in] PeerTargetName
ピア ターゲット名を定義する SOCKET_PEER_TARGET_NAME 構造体へのポインター。
[in] PeerTargetNameLen
PeerTargetName パラメーターのサイズ (バイト単位)。
[in, optional] Overlapped
WSAOVERLAPPED 構造体へのポインター。 このパラメーターは、重複しないソケットでは無視されます。
[in, optional] CompletionRoutine
操作が完了したときに呼び出される完了ルーチンへのポインター。 このパラメーターは、重複しないソケットでは無視されます。
戻り値
関数が成功した場合の戻り値は 0 です。 それ以外の場合は、 SOCKET_ERROR の値が返され、 WSAGetLastError を呼び出すことによって特定のエラー コードを取得できます。
考えられるエラー コードの一覧を次に示します。
エラー コード | 意味 |
---|---|
指定されたアドレス ファミリはサポートされていません。 | |
システムは、呼び出しのポインター引数を使用しようとしたときに、無効なアドレス ポインターを検出しました。 このエラーは、 PeerTargetName パラメーターが NULL ポインターの場合に返されます。 | |
無効なパラメーターが渡されました。 このエラーは、Socket パラメーターで渡されたソケットが、AF_INETまたはAF_INET6のアドレス ファミリとSOCK_DGRAMまたはSOCK_STREAMのソケットの種類で作成されなかった場合に返されます。 このエラーは、PeerTargetName パラメーターが指すSOCKET_PEER_TARGET_NAME構造体の PeerAddress メンバーの IP アドレスとポートが 0 の場合にも、コネクションレス ソケットに対して返されます。 | |
ソケットが接続されています。 この関数は、ソケットが接続方向であるかコネクションレスであるかに関係なく、接続されたソケットでは許可されません。 | |
渡されたバッファーが小さすぎます。 | |
Socket パラメーターで渡された記述子が有効なソケットではありません。 |
解説
WSASetSocketPeerTargetName 関数は、ピア セキュリティ プリンシパルに対応するターゲット名を指定するメソッドを提供します。 この関数は、認証する必要があるピアを識別するためにクライアント アプリケーションによって使用されることを意図しています。 信頼された中間者攻撃を防ぐために、クライアント アプリケーションでピア ターゲット名を指定する必要があります。 コネクションレス ソケットの場合、アプリケーションは WSASetSocketPeerTargetName 関数を複数回呼び出して、異なるピア IP アドレスに異なるターゲット名を指定できます。
この関数を使用すると、dwIoControlCode パラメーターを SIO_SET_PEER_TARGET_NAME に設定して WSAIoctl 関数を呼び出す必要が簡単になります。
接続指向ソケットの場合、WSAConnect の前に WSASetSocketPeerTargetName 関数を呼び出す必要があります。 コネクションレス ソケットの場合、この関数は WSAConnect の前、またはピア アドレスに送信される最初の WSASendTo 呼び出しの前に呼び出す必要があります。
次の条件が満たされない場合は、エラーが返されます。
- Socket パラメーターのアドレス ファミリは、AF_INETまたはAF_INET6である必要があります。
- ソケットの種類は、SOCK_STREAMまたはSOCK_DGRAMである必要があります。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | ws2tcpip.h |
Library | Fwpuclnt.lib |
[DLL] | Fwpuclnt.dll |