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 を呼び出すことによって特定のエラー コードを取得できます。
考えられるエラー コードの一覧を次に示します。
エラー コード | 意味 |
---|---|
システムは、呼び出しのポインター引数を使用しようとしたときに、無効なアドレス ポインターを検出しました。 このエラーは、 PeerAddr パラメーターが NULL ポインターである場合に返されます。 | |
指定されたアドレス ファミリはサポートされていません。 | |
渡されたバッファーが小さすぎます。 | |
Socket パラメーターで渡された記述子が有効なソケットではありません。 |
注釈
WSAImpersonateSocketPeer 関数は、アプリケーション レベルの承認を実行するために、ソケット ピアに対応するセキュリティ プリンシパルを偽装する機能をアプリケーションに提供します。 ピア ユーザー (偽装) トークンを使用できる場合は、偽装に使用されます。それ以外の場合は、ピア コンピューター トークンが使用されます。 WSAImpersonateSocketPeer 関数は、ブロックする、重複しないソケットに対してのみ呼び出すことができます。 承認チェックを実行した後、アプリケーションは WSARevertImpersonation 関数を呼び出して偽装を終了する必要があります。
接続指向ソケットの場合は、接続が確立された後に WSAImpersonateSocketPeer 関数を呼び出す必要があります。 接続指向ソケットを使用するサーバー アプリケーションの場合、accept、AcceptEx、または WSAAccept 関数が戻った後に WSAImpersonateSocketPeer を呼び出す必要があります。
コネクションレス ソケットの場合、アプリケーションは、recv、recvfrom、WSARecv、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 |
こちらもご覧ください
Windows フィルタリング プラットフォーム API 関数