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.
INT WSAAPI WSAImpersonateSocketPeer(
[in] SOCKET Socket,
[in, optional] const sockaddr *PeerAddr,
[in] ULONG PeerAddrLen
);
[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 .
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 |
---|---|
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 . | |
La familia de direcciones especificada no se admite. | |
Un búfer pasado era demasiado pequeño. | |
El descriptor pasado en el parámetro Socket no es un socket válido. |
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.
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 |
Uso de extensiones de socket seguro
Plataforma de filtrado de Windows
Funciones de api de plataforma de filtrado de Windows