Функция WSASetSocketPeerTargetName (ws2tcpip.h)
Функция WSASetSocketPeerTargetName используется для указания имени целевого объекта однорангового узла (SPN), соответствующего IP-адресу однорангового узла. Это целевое имя предназначено для указания клиентскими приложениями для безопасной идентификации однорангового узла, который должен пройти проверку подлинности.
Синтаксис
INT WSAAPI WSASetSocketPeerTargetName(
[in] SOCKET Socket,
[in] const SOCKET_PEER_TARGET_NAME *PeerTargetName,
[in] ULONG PeerTargetNameLen,
[in, optional] LPWSAOVERLAPPED Overlapped,
[in, optional] LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
);
Параметры
[in] Socket
Дескриптор, определяющий сокет, которому назначается целевое имя однорангового узла.
[in] PeerTargetName
Указатель на структуру SOCKET_PEER_TARGET_NAME , которая определяет имя целевого объекта однорангового узла.
[in] PeerTargetNameLen
Размер параметра PeerTargetName в байтах.
[in, optional] Overlapped
Указатель на структуру WSAOVERLAPPED . Этот параметр игнорируется для неперекрывающихся сокетов.
[in, optional] CompletionRoutine
Указатель на подпрограмму завершения, вызываемую при завершении операции. Этот параметр игнорируется для неперекрывающихся сокетов.
Возвращаемое значение
Если вызов функции заканчивается удачно, возвращается нулевое значение. В противном случае возвращается значение SOCKET_ERROR , а определенный код ошибки можно получить, вызвав WSAGetLastError.
Ниже перечислены некоторые возможные коды ошибок.
Код ошибки | Значение |
---|---|
Указанное семейство адресов не поддерживается. | |
Система обнаружила недопустимый указатель адреса при попытке использовать аргумент указателя вызова. Эта ошибка возвращается, если параметр PeerTargetName был указателем NULL . | |
Передан недопустимый параметр. Эта ошибка возвращается, если сокет, переданный в параметре Socket , не был создан с семейством адресов AF_INET или AF_INET6 и типом сокета SOCK_DGRAM или SOCK_STREAM. Эта ошибка также возвращается для сокета без подключения, если IP-адрес и порт равны нулю в элементе PeerAddress структуры SOCKET_PEER_TARGET_NAME , на которую указывает параметр PeerTargetName . | |
Сокет подключен. Эта функция не разрешена с подключенным сокетом, независимо от того, является ли сокет ориентированным на подключение или без подключения. | |
Переданный буфер был слишком мал. | |
Дескриптор, передаваемый в параметре Socket , не является допустимым сокетом. |
Комментарии
Функция WSASetSocketPeerTargetName предоставляет метод для указания целевого имени, соответствующего одноранговому субъекту безопасности. Эта функция предназначена для использования клиентским приложением для идентификации однорангового узла, который должен пройти проверку подлинности. Клиентское приложение должно указать имя целевого объекта однорангового узла, чтобы предотвратить атаки доверенного человека в середине. Для сокетов без подключения приложение может несколько раз вызывать функцию WSASetSocketPeerTargetName , чтобы указать разные целевые имена для разных ОДНОранговых IP-адресов.
Эта функция упрощает вызов функции WSAIoctl с параметром dwIoControlCode , имеющим значение SIO_SET_PEER_TARGET_NAME.
Для сокетов, ориентированных на подключение, перед WSAConnect необходимо вызвать функцию WSASetSocketPeerTargetName. Для сокетов без подключения эта функция должна вызываться перед WSAConnect или перед первым вызовом WSASendTo , направленным на адрес однорангового узла.
Если не выполняются следующие условия, будет возвращена ошибка.
- Семейство адресов параметра Socket должно быть AF_INET или AF_INET6.
- Тип сокета должен быть SOCK_STREAM или SOCK_DGRAM.
Требования
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | ws2tcpip.h |
Библиотека | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |
См. также раздел
Использование расширений безопасных сокетов