Метод IUPnPAddressFamilyControl::SetAddressFamily (upnp.h)
Метод SetAddressFamily задает флаг семейства адресов объекта Device Finder, который использует этот флаг для фильтрации найденных устройств.
Приложение устанавливает флаг семейства адресов перед началом поиска. Приложение будет получать уведомления только об устройствах с IP-адресами указанного семейства адресов.
Синтаксис
HRESULT SetAddressFamily(
[in] LONG dwFlags
);
Параметры
[in] dwFlags
Целое число (4-байтовое значение), указывающее семейство адресов, которое будет использоваться объектом Device Finder для фильтрации найденных устройств.
Допустимы следующие значения.
Значение | Значение |
---|---|
|
IPv4 (IP версии 4) |
|
IPv6 (IP версии 6) |
|
IPv4 и IPv6 |
Возвращаемое значение
Если метод выполнен успешно, возвращаемое значение будет S_OK. В противном случае метод возвращает один из кодов com-ошибок, определенных в WinError.h.
Комментарии
Установка флага
Флаг семейства адресов должен быть установлен в соответствующее время, чтобы повлиять на поиск:
- Для асинхронного поиска установите флаг семейства адресов перед вызовом метода IUPnPDeviceFinder::CreateAsyncFind .
- Для синхронного поиска установите флаг семейства адресов перед вызовом метода IUPnPDeviceFinder::FindByUDN или IUPnPDeviceFinder::FindByType .
Фильтрация найденных устройств
Сценарий 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 |