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


Метод IUPnPAddressFamilyControl::SetAddressFamily (upnp.h)

Метод SetAddressFamily задает флаг семейства адресов объекта Device Finder, который использует этот флаг для фильтрации найденных устройств.

Приложение устанавливает флаг семейства адресов перед началом поиска. Приложение будет получать уведомления только об устройствах с IP-адресами указанного семейства адресов.

Синтаксис

HRESULT SetAddressFamily(
  [in] LONG dwFlags
);

Параметры

[in] dwFlags

Целое число (4-байтовое значение), указывающее семейство адресов, которое будет использоваться объектом Device Finder для фильтрации найденных устройств.

Допустимы следующие значения.

Значение Значение
UPNP_ADDRESSFAMILY_IPv4
IPv4 (IP версии 4)
UPNP_ADDRESSFAMILY_IPv6
IPv6 (IP версии 6)
UPNP_ADDRESSFAMILY_BOTH
IPv4 и IPv6

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение будет S_OK. В противном случае метод возвращает один из кодов com-ошибок, определенных в WinError.h.

Комментарии

Установка флага

Флаг семейства адресов должен быть установлен в соответствующее время, чтобы повлиять на поиск:

Фильтрация найденных устройств

Сценарий 1. Приложение контрольной точки устанавливает флаг семейства адресов на UPNP_ADDRESSFAMILY_IPV4, а затем начинает поиск:

  • Если средство поиска устройств обнаружит устройство с IPv6-адресом, средство поиска устройств не будет уведомлять приложение устройства. Если позже это же устройство получит IPv4-адрес, средство поиска устройств уведомит приложение устройства и предоставит адрес IPv4.
  • Если средство поиска устройств обнаруживает устройство с IPv4-адресом, средство поиска устройств уведомит приложение устройства и предоставит IPv4-адрес. Если позже то же устройство получит IPv6-адрес, средство поиска устройств не уведомит приложение о дополнительном адресе устройства.
  • Если средство поиска устройств обнаружит устройство с IPv4- и IPv6-адресами, оно уведомит приложение устройства, но предоставит только IPv4-адрес.
  • Если устройство, известное приложению, объявляет об изменении адреса, средство поиска устройств уведомит приложение об изменении только в том случае, если новый адрес является IPv4-адресом.
  • Если устройство, известное приложению, имеет IPv4- и IPv6-адреса, а средство поиска устройств получает сообщение "Прощай" с IPv6-адреса устройства, средство поиска устройств уведомит приложение, даже если приложение знает только об этом IPv4-адресе. Иными словами, если устройство, известное приложению, покидает сеть, Средство поиска устройств уведомит приложение независимо от адреса устройства.

Сценарий 2. Приложение устанавливает флаг семейства адресов на UPNP_ADDRESSFAMILY_IPV6, а затем начинает поиск:

  • Аналогичный набор правил применяется, как описано в сценарии 1, но для противоположного семейства адресов.

Сценарий 3. Приложение устанавливает флаг семейства адресов на UPNP_ADDRESSFAMILY_BOTH, а затем начинает поиск:

  • Если средство поиска устройств обнаруживает устройство с IPv4-адресом или IPv6-адресом, средство поиска устройств уведомит приложение устройства и предоставит адрес. Если позже одно и то же устройство получит адрес другого семейства адресов, поиск устройств не будет уведомлять приложение о дополнительном адресе устройства.
  • Если средство поиска устройств обнаружит устройство с IPv4- и IPv6-адресами, оно уведомит приложение устройства, но предоставит только один из адресов, выбранных случайным образом.
  • Если устройство, известное приложению, объявляет об изменении адреса, поиск устройств уведомит приложение об этом изменении.
  • Если устройство, известное приложению, покидает сеть, средство поиска устройств уведомит приложение.

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Ни одна версия не поддерживается
Целевая платформа Windows
Header upnp.h
DLL Upnp.dll

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

GetAddressFamily

IUPnPAddressFamilyControl