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


структура ADDRINFOEX5 (ws2def.h)

Структура addrinfoex4 используется функцией GetAddrInfoEx для хранения сведений об адресе узла при запросе определенного сетевого интерфейса.

Синтаксис

typedef struct addrinfoex5 {
  int                ai_flags;
  int                ai_family;
  int                ai_socktype;
  int                ai_protocol;
  size_t             ai_addrlen;
  PWSTR              ai_canonname;
  struct sockaddr    *ai_addr;
  void               *ai_blob;
  size_t             ai_bloblen;
  GUID               *ai_provider;
  struct addrinfoex5 *ai_next;
  int                ai_version;
  PWSTR              ai_fqdn;
  int                ai_interfaceindex;
  HANDLE             ai_resolutionhandle;
  unsigned int       ai_ttl;
} ADDRINFOEX5, *PADDRINFOEX5, *LPADDRINFOEX5;

Члены

ai_flags

Флаги, указывающие параметры, используемые в функции GetAddrInfoEx.

Поддерживаемые значения для элемента ai_flags определены в Winsock2.h включить файл и могут быть сочетанием следующих параметров.

Ценность Значение
AI_PASSIVE
0x01
Адрес сокета будет использоваться в вызове функции привязки.
AI_CANONNAME
0x02
Каноническое имя возвращается в первом элементе ai_canonname.
AI_NUMERICHOST
0x04
Параметр nodename, переданный функции GetAddrInfoEx, должен быть числовой строкой.
AI_ALL
0x0100
Если этот бит задан, запрос выполняется для IPv6-адресов и IPv4-адресов с AI_V4MAPPED.

Этот параметр поддерживается в Windows Vista и более поздних версиях.

AI_ADDRCONFIG
0x0400
GetAddrInfoEx будет разрешаться только в том случае, если настроен глобальный адрес. Адрес обратного цикла IPv6 и IPv4 не считается допустимым глобальным адресом.

Этот параметр поддерживается в Windows Vista и более поздних версиях.

AI_V4MAPPED
0x0800
Если запрос GetAddrInfoEx для IPv6-адресов завершается сбоем, запрос службы имен выполняется для IPv4-адресов, и эти адреса преобразуются в формат IPv4-адресов, сопоставленных с IPv6.

Этот параметр поддерживается в Windows Vista и более поздних версиях.

AI_NON_AUTHORITATIVE
0x04000
Сведения об адресе являются неавторитетными результатами.

Если этот параметр задан в параметре pHintsGetAddrInfoEx, поставщик пространства имен NS_EMAIL возвращает как достоверные, так и неавторитетные результаты. Если этот параметр не задан, возвращаются только достоверные результаты.

Этот параметр поддерживается только в Windows Vista и более поздних версиях для пространства имен NS_EMAIL.

AI_SECURE
0x08000
Сведения об адресе — из безопасного канала.

Если задан AI_SECURE бит, поставщик пространства имен NS_EMAIL вернет результаты, полученные с повышенной безопасностью для минимизации возможных спуфингов.

Если этот параметр задан в параметре pHintsGetAddrInfoEx, поставщик пространства имен NS_EMAIL возвращает только результаты, полученные с повышенной безопасностью, чтобы свести к минимуму возможный спуфинг.

Этот параметр поддерживается только в Windows Vista и более поздних версиях для пространства имен NS_EMAIL.

AI_RETURN_PREFERRED_NAMES
0x010000
Сведения об адресе — это предпочитаемые имена для публикации с определенным пространством имен.

Если этот параметр задан в параметре pHintsGetAddrInfoEx, имя не должно быть указано в параметре pName, а поставщик пространства имен NS_EMAIL вернет предпочтительные имена для публикации.

Этот параметр поддерживается только в Windows Vista и более поздних версиях для пространства имен NS_EMAIL.

AI_FQDN
0x00020000
Полное доменное имя возвращается в первом элементе ai_fqdn.

Если этот параметр задан в параметре pHintsGetAddrInfoEx, а в параметре pName указано неструктурированное имя, полное доменное имя, которое будет возвращено в конечном итоге.

Этот параметр поддерживается в Windows 7, Windows Server 2008 R2 и более поздних версиях.

AI_FILESERVER
0x00040000
Указание поставщику пространства имен, которое запрашивается имя узла в сценарии общей папки. Поставщик пространства имен может игнорировать это указание.

Этот параметр поддерживается в Windows 7, Windows Server 2008 R2 и более поздних версиях.

AI_DISABLE_IDN_ENCODING
0x00080000
Отключите автоматическую кодировку международного доменного имени с помощью Punycode в функциях разрешения имен, вызываемых функцией GetAddrInfoEx.

Этот параметр поддерживается в Windows 8, Windows Server 2012 и более поздних версиях.

AI_EXTENDED
0x80000000
Указывает, что текущий объект расширен: то есть addrinfoex2 или больше.

Этот параметр поддерживается в Windows 8.1, Windows Server 2012 R2 и более поздних версиях.

AI_RESOLUTION_HANDLE
0x40000000
Дескриптор разрешения возвращается в элементе ai_resolutionhandle.

Этот параметр поддерживается в Windows 10, Windows Server 2016 и более поздних версиях.

AI_RETURN_TTL
0x0080
Количество секунд, для которых допустима запись DNS. Если этот флаг присутствует, GetAddrInfoEx. параметрppResult возвращает список структур addrinfoex5, где элемент ai_ttl будет содержать отдельный TTL записи DNS.

ai_family

Семейство адресов.

Возможные значения семейства адресов определяются в файле заголовка Ws2def.h. Обратите внимание, что файл заголовка ws2def.h Ws2def.h автоматически включается в Winsock2.hи никогда не следует использовать напрямую.

В настоящее время поддерживаются значения AF_INET или AF_INET6, которые являются форматами семейства адресов Интернета для IPv4 и IPv6. Другие варианты семейства адресов (AF_NETBIOS для использования с NetBIOS, например), поддерживаются, если установлен поставщик служб сокетов Windows для семейства адресов. Обратите внимание, что значения для семейства адресов AF_ и констант семейства протоколов PF_ идентичны (например, AF_INET и PF_INET), поэтому можно использовать любую константу.

В таблице ниже перечислены распространенные значения семейства адресов, хотя возможны многие другие значения.

Ценность Значение
AF_UNSPEC
0
Семейство адресов не указано.
AF_INET
2
Семейство адресов протокола Интернета версии 4 (IPv4).
AF_NETBIOS
17
Семейство адресов NetBIOS. Это семейство адресов поддерживается только в том случае, если установлен поставщик сокетов Windows для NetBIOS.
AF_INET6
23
Семейство адресов протокола Интернета версии 6 (IPv6).
AF_IRDA
26
Семейство адресов связи с инфракрасным данными (IrDA). Это семейство адресов поддерживается только в том случае, если на компьютере установлен инфракрасный порт и драйвер.
AF_BTH
32
Семейство адресов Bluetooth. Это семейство адресов поддерживается только в том случае, если установлен адаптер Bluetooth.

ai_socktype

Тип сокета. Возможные значения для типа сокета определяются в файле Winsock2.h включить файл.

В следующей таблице перечислены возможные значения типа сокета, поддерживаемого для сокетов Windows 2:

Ценность Значение
SOCK_STREAM
1
Предоставляет последовательные, надежные, двусторонние потоки байтов на основе подключения с механизмом передачи данных OOB. Использует протокол TCP для семейства адресов Интернета (AF_INET или AF_INET6). Если элемент ai_familyAF_IRDA, SOCK_STREAM является единственным поддерживаемым типом сокета.
SOCK_DGRAM
2
Поддерживает диаграммы данных, которые являются ненадежными, ненадежными буферами фиксированной (обычно небольшой) максимальной длины. Использует протокол пользовательской диаграммы данных (UDP) для семейства адресов Интернета (AF_INET или AF_INET6).
SOCK_RAW
3
Предоставляет необработанный сокет, позволяющий приложению управлять следующим заголовком протокола верхнего уровня. Чтобы управлять заголовком IPv4, необходимо задать параметр сокета IP_HDRINCL на сокете. Чтобы управлять заголовком IPv6, необходимо задать параметр сокета IPV6_HDRINCL на сокете.
SOCK_RDM
4
Предоставляет надежную диаграмму данных сообщений. Примером этого типа является реализация многоадресной многоадресной рассылки (PGM) прагматичной многоадресной рассылки в Windows, часто называемая надежным многоадресным программированием.
SOCK_SEQPACKET
5
Предоставляет псевдопотоковый пакет на основе диаграмм данных.
 

В Windows Sockets 2 появились новые типы сокетов. Приложение может динамически обнаруживать атрибуты каждого доступного транспортного протокола с помощью функции WSAEnumProtocols. Поэтому приложение может определить возможный тип сокета и параметры протокола для семейства адресов и использовать эти сведения при указании этого параметра. Определения типов сокетов в Winsock2.h и Ws2def.h файлы заголовков будут периодически обновляться как новые типы сокетов, семейства адресов и протоколы.

В Сокетах Windows 1.1 единственными возможными типами сокетов являются SOCK_DATAGRAM и SOCK_STREAM.

ai_protocol

Тип протокола. Возможные параметры зависят от указанного семейства адресов и типа сокета. Возможные значения для ai_protocol определены в Winsock2.h и файлах заголовков Wsrm.h Wsrm.h.

В пакете SDK для Windows SDK, выпущенном для Windows Vista и более поздних версий, организация файлов заголовков изменилась, и этот элемент может быть одним из значений из типа перечисления IPPROTO IPPROTO, определенного в файле заголовка Ws2def.h. Обратите внимание, что файл заголовка ws2def.h Ws2def.h автоматически включается в Winsock2.hи никогда не следует использовать напрямую.

Если для ai_protocolзадано значение 0, вызывающий объект не хочет указать протокол, и поставщик услуг выберет ai_protocol для использования. Для протоколов, отличных от IPv4 и IPv6, задайте для ai_protocol значение нулю.

В следующей таблице перечислены распространенные значения элемента ai_protocol, хотя можно использовать множество других значений.

Ценность Значение
IPPROTO_TCP
6
Протокол управления передачей (TCP). Это возможное значение, если элемент ai_familyAF_INET или AF_INET6, а элемент ai_socktypeSOCK_STREAM.
IPPROTO_UDP
17
Протокол пользовательской диаграммы данных (UDP). Это возможное значение, если элемент ai_familyAF_INET или AF_INET6, а параметр типаSOCK_DGRAM.
IPPROTO_RM
113
Протокол PGM для надежной многоадресной рассылки. Это возможное значение, если элемент ai_familyAF_INET, а элемент ai_socktypeSOCK_RDM. В пакете SDK для Windows, выпущенном для Windows Vista и более поздних версий, это значение также называется IPPROTO_PGM.
 

Если элемент ai_familyAF_IRDA, ai_protocol должен быть равен 0.

ai_addrlen

Длина буфера в байтах, на который указывает элемент ai_addr.

ai_canonname

Каноническое имя узла.

ai_addr

Указатель на структуру sockaddr. Элемент ai_addr в каждом возвращенном addrinfoex4 указывает на структуру адресов с заполненным сокетом. Длина в байтах каждого возвращаемого addrinfoex4 структура указывается в элементе ai_addrlen.

ai_blob

Указатель на данные, используемые для возврата сведений о пространстве имен для конкретного поставщика, связанных с именем за пределами списка адресов. Длина буфера в байтах, на который указывает ai_blob, должна быть указана в элементе ai_bloblen.

ai_bloblen

Длина элемента ai_blob в байтах.

ai_provider

Указатель на GUID определенного поставщика пространства имен.

ai_next

Указатель на следующую структуру в связанном списке. Этот параметр имеет значение NULL в последней addrinfoex4 структуре связанного списка.

ai_version

Номер версии этой структуры. Значение, используемое в настоящее время для этой версии структуры, равно 4.

ai_fqdn

Полное доменное имя узла.

ai_interfaceindex

Индекс интерфейса, определенный IP_ADAPTER_ADDRESSES.свойство IfIndex, возвращенное в GetAdaptersAddresses.

ai_resolutionhandle

Обработка указания на полное доменное имя узла.

ai_ttl

Количество секунд, для которых допустима эта запись DNS.

Замечания

Структура ADDRINFOEX5 используется функцией GetAddrInfoExW для хранения сведений об адресе узла при установке AI_EXTENDED или AI_RETURN_TTL битов в элементе ai_flags, передаваемом через параметр GetAddrInfoExWподсказки.

Структура ADDRINFOEX5 является расширением структуры ADDRINFOEX4. Помимо всех полей из структуры ADDRINFOEX4, он также содержит в элементе ai_ttl отдельный DNS TTL для каждого возвращаемого IP-адреса.

Если AI_RETURN_TTL бит задан в элементе ai_flags, переданном через параметр GetAddrInfoExподсказки, параметр GetAddrInfoExWppResult возвращает список структур ADDRINFOEX5. Каждый узел в этом списке будет содержаться в элементе ai_ttl отдельный срок жизни DNS для IP-адреса, присутствующих в элементе sockaddr.

Примеры

См. пример кода в разделе структуры ADDRINFOEX4.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Сборка Windows 10 20348
минимальный поддерживаемый сервер Сборка Windows 10 20348
заголовка ws2def.h

См. также

GetAddrInfoEx

addrinfo

addrinfoW

addrinfoex

addrinfoex3