Функция 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 должна вызываться после установки соединения. Для серверного приложения, используюющего сокеты, ориентированные на подключение, следует вызывать WSAImpersonateSocketPeer после возврата функции accept, AcceptEx или WSAAccept .
Для сокетов без подключения приложение должно вызывать функцию WSAImpersonateSocketPeer сразу после возврата,recvfrom, WSARecv, WSARecvEx, WSARecvFrom или LPFN_WSARECVMSG (WSARecvMsg) для нового однорангового адреса.
Функцию WSAImpersonateSocketPeer можно вызывать несколько раз для одного сокета.
Если не выполняются следующие условия, будет возвращена ошибка.
- Семейство адресов параметра Socket должно быть AF_INET или AF_INET6.
- Тип сокета должен быть SOCK_STREAM или SOCK_DGRAM.
Чтобы завершить олицетворение, необходимо вызвать функцию WSARevertImpersonation .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | ws2tcpip.h |
Библиотека | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |
См. также раздел
Использование расширений secure socket
Функции API платформы фильтрации Windows