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、recvfrom、WSARecv、WSARecvEx、WSARecvFromLPFN_WSARECVMSG (WSARecvMsg 之后立即调用 WSAImpersonateSocketPeer 函数,) 函数返回新的对等地址。

可以为单个套接字多次调用 WSAImpersonateSocketPeer 函数。

如果不满足以下条件,将返回错误。

  • 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

使用安全套接字扩展

WSAAccept

WSADeleteSocketPeerTargetName

WSAQuerySocketSecurity

WSARecv

WSARecvEx

WSARecvFrom

LPFN_WSARECVMSG (WSARecvMsg)

WSARevertImpersonation

WSASetSocketPeerTargetName

WSASetSocketSecurity

Windows 筛选平台

Windows 筛选平台 API 函数

Winsock 安全套接字扩展

accept

recv

recvfrom