次の方法で共有


WSAImpersonateSocketPeer 関数 (ws2tcpip.h)

WSAImpersonateSocketPeer 関数は、アプリケーション レベルの承認を実行するために、ソケット ピアに対応するセキュリティ プリンシパルを偽装するために使用されます。

構文

INT WSAAPI WSAImpersonateSocketPeer(
  [in]           SOCKET         Socket,
  [in, optional] const sockaddr *PeerAddr,
  [in]           ULONG          PeerAddrLen
);

パラメーター

[in] Socket

アプリケーション ソケットを識別します。

[in, optional] PeerAddr

偽装するピアの IP アドレス。 接続指向ソケットの場合、接続されたソケットはピアを一意に識別します。 この場合、このパラメーターは無視されます。

[in] PeerAddrLen

PeerAddress パラメーターのサイズ (バイト単位)。

戻り値

関数が成功した場合、戻り値は 0 になります。 それ以外の場合は、 SOCKET_ERROR の値が返され、 WSAGetLastError を呼び出すことによって特定のエラー コードを取得できます。

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

エラー コード 意味
WSAEFAULT
システムは、呼び出しのポインター引数を使用しようとしたときに、無効なアドレス ポインターを検出しました。 このエラーは、 PeerAddr パラメーターが NULL ポインターである場合に返されます。
WSAEAFNOSUPPORT
指定されたアドレス ファミリはサポートされていません。
WSAEMSGSIZE
渡されたバッファーが小さすぎます。
WSAENOTSOCK
Socket パラメーターで渡された記述子が有効なソケットではありません。

注釈

WSAImpersonateSocketPeer 関数は、アプリケーション レベルの承認を実行するために、ソケット ピアに対応するセキュリティ プリンシパルを偽装する機能をアプリケーションに提供します。 ピア ユーザー (偽装) トークンを使用できる場合は、偽装に使用されます。それ以外の場合は、ピア コンピューター トークンが使用されます。 WSAImpersonateSocketPeer 関数は、ブロックする、重複しないソケットに対してのみ呼び出すことができます。 承認チェックを実行した後、アプリケーションは WSARevertImpersonation 関数を呼び出して偽装を終了する必要があります。

接続指向ソケットの場合は、接続が確立された後に WSAImpersonateSocketPeer 関数を呼び出す必要があります。 接続指向ソケットを使用するサーバー アプリケーションの場合、acceptAcceptEx、または WSAAccept 関数が戻った後に WSAImpersonateSocketPeer を呼び出す必要があります。

コネクションレス ソケットの場合、アプリケーションは、recv、recvfromWSARecv、WSARecvEx、WSARecvFrom、または LPFN_WSARECVMSG (WSARecvMsg) 関数が新しいピア アドレスを返した直後に WSAImpersonateSocketPeer 関数を呼び出す必要があります。

WSAImpersonateSocketPeer 関数は、1 つのソケットに対して複数回呼び出すことができます。

次の条件が満たされない場合は、エラーが返されます。

  • Socket パラメーターのアドレス ファミリは、AF_INETまたはAF_INET6である必要があります。
  • ソケットの種類は、SOCK_STREAMまたはSOCK_DGRAMである必要があります。

偽装を終了するには、 WSARevertImpersonation 関数を呼び出す必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ws2tcpip.h
Library Fwpuclnt.lib
[DLL] Fwpuclnt.dll

こちらもご覧ください

AcceptEx

Secure Socket Extensions の使用

WSAAccept

WSADeleteSocketPeerTargetName

WSAQuerySocketSecurity

WSARecv

WSARecvEx

WSARecvFrom

LPFN_WSARECVMSG (WSARecvMsg)

WSARevertImpersonation

WSASetSocketPeerTargetName

WSASetSocketSecurity

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

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

Winsock Secure Socket Extensions

accept

Recv

recvfrom