Поделиться через


Функция 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.

Ниже перечислены некоторые возможные коды ошибок.

Код ошибки Значение
WSAEAFNOSUPPORT
Указанное семейство адресов не поддерживается.
WSAEFAULT
Система обнаружила недопустимый указатель адреса при попытке использовать аргумент указателя вызова. Эта ошибка возвращается, если параметр PeerTargetName был указателем NULL .
WSAEINVAL
Передан недопустимый параметр. Эта ошибка возвращается, если сокет, переданный в параметре Socket , не был создан с семейством адресов AF_INET или AF_INET6 и типом сокета SOCK_DGRAM или SOCK_STREAM. Эта ошибка также возвращается для сокета без подключения, если IP-адрес и порт равны нулю в элементе PeerAddress структуры SOCKET_PEER_TARGET_NAME , на которую указывает параметр PeerTargetName .
WSAEISCONN
Сокет подключен. Эта функция не разрешена с подключенным сокетом, независимо от того, является ли сокет ориентированным на подключение или без подключения.
WSAEMSGSIZE
Переданный буфер был слишком мал.
WSAENOTSOCK
Дескриптор, передаваемый в параметре 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

См. также раздел

SOCKET_PEER_TARGET_NAME

Использование расширений безопасных сокетов

WSADeleteSocketPeerTargetName

WSAImpersonateSocketPeer

WSAQuerySocketSecurity

WSARevertImpersonation

WSASetSocketSecurity

Платформа фильтрации Windows

Функции API платформы фильтрации Windows

Расширения Winsock Secure Socket