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 を呼び出すことによって特定のエラー コードを取得できます。

考えられるエラー コードの一覧を次に示します。

エラー コード 意味
WSAEAFNOSUPPORT
指定されたアドレス ファミリはサポートされていません。
WSAEFAULT
システムは、呼び出しのポインター引数を使用しようとしたときに、無効なアドレス ポインターを検出しました。 このエラーは、 PeerTargetName パラメーターが NULL ポインターの場合に返されます。
WSAEINVAL
無効なパラメーターが渡されました。 このエラーは、Socket パラメーターで渡されたソケットが、AF_INETまたはAF_INET6のアドレス ファミリとSOCK_DGRAMまたはSOCK_STREAMのソケットの種類で作成されなかった場合返されます。 このエラーは、PeerTargetName パラメーターが指すSOCKET_PEER_TARGET_NAME構造体の PeerAddress メンバーの IP アドレスとポートが 0 の場合にも、コネクションレス ソケットに対して返されます。
WSAEISCONN
ソケットが接続されています。 この関数は、ソケットが接続方向であるかコネクションレスであるかに関係なく、接続されたソケットでは許可されません。
WSAEMSGSIZE
渡されたバッファーが小さすぎます。
WSAENOTSOCK
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

関連項目

SOCKET_PEER_TARGET_NAME

Secure Socket Extensions の使用

WSADeleteSocketPeerTargetName

WSAImpersonateSocketPeer

WSAQuerySocketSecurity

WSARevertImpersonation

WSASetSocketSecurity

Windows フィルタリング プラットフォーム

Windows フィルタリング プラットフォーム API 関数

Winsock Secure Socket Extensions