Función WSAImpersonateSocketPeer (ws2tcpip.h)

La función WSAImpersonateSocketPeer se usa para suplantar la entidad de seguridad correspondiente a un socket del mismo nivel para realizar la autorización de nivel de aplicación.

Sintaxis

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

Parámetros

[in] Socket

Identifica el socket de aplicación.

[in, optional] PeerAddr

Dirección IP del elemento del mismo nivel que se va a suplantar. En el caso de los sockets orientados a la conexión, el socket conectado identifica de forma única un elemento del mismo nivel. En este caso, este parámetro se omite.

[in] PeerAddrLen

Tamaño, en bytes, del parámetro PeerAddress .

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es 0. De lo contrario, se devuelve un valor de SOCKET_ERROR y se puede recuperar un código de error específico mediante una llamada a WSAGetLastError.

A continuación se enumeran algunos códigos de error posibles.

Código de error Significado
WSAEFAULT
El sistema detectó un puntero de dirección no válido al intentar usar un argumento de puntero de una llamada. Este error se devuelve si el parámetro PeerAddr era un puntero NULL .
WSAEAFNOSUPPORT
La familia de direcciones especificada no se admite.
WSAEMSGSIZE
Un búfer pasado era demasiado pequeño.
WSAENOTSOCK
El descriptor pasado en el parámetro Socket no es un socket válido.

Comentarios

La función WSAImpersonateSocketPeer proporciona a una aplicación la capacidad de suplantar la entidad de seguridad correspondiente a un socket del mismo nivel para realizar la autorización de nivel de aplicación. Si el token de usuario del mismo nivel (suplantación) está disponible, se usará para la suplantación; de lo contrario, se usará el token del equipo del mismo nivel. Solo se puede llamar a la función WSAImpersonateSocketPeer para bloquear sockets no superpuestos. Después de realizar las comprobaciones de autorización, una aplicación debe llamar a la función WSARevertImpersonation para finalizar la suplantación.

En el caso de los sockets orientados a la conexión, se debe llamar a la función WSAImpersonateSocketPeer después de establecer una conexión. Para una aplicación de servidor mediante sockets orientados a la conexión, se debe llamar a WSAImpersonateSocketPeer después de que se devuelva la función accept, AcceptEx o WSAAccept .

Para sockets sin conexión, la aplicación debe llamar a la función WSAImpersonateSocketPeer inmediatamente después de la función recv, recvfrom, WSARecv, WSARecvEx, WSARecvFrom o LPFN_WSARECVMSG (WSARecvMsg) devuelve para una nueva dirección del mismo nivel.

La función WSAImpersonateSocketPeer se puede llamar varias veces para un único socket.

Si no se cumplen las condiciones siguientes, se devolverá un error.

  • La familia de direcciones del parámetro Socket debe ser AF_INET o AF_INET6.
  • El tipo de socket debe ser SOCK_STREAM o SOCK_DGRAM.

Se debe llamar a la función WSARevertImpersonation para finalizar la suplantación.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ws2tcpip.h
Library Fwpuclnt.lib
Archivo DLL Fwpuclnt.dll

Consulte también

AcceptEx

Uso de extensiones de socket seguro

WSAAccept

WSADeleteSocketPeerTargetName

WSAQuerySocketSecurity

WSARecv

WSARecvEx

WSARecvFrom

LPFN_WSARECVMSG (WSARecvMsg)

WSARevertImpersonation

WSASetSocketPeerTargetName

WSASetSocketSecurity

Plataforma de filtrado de Windows

Funciones de api de plataforma de filtrado de Windows

Extensiones de socket seguro winsock

accept

recv

recvfrom