структура 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_canonname. |
|
Параметр nodename, переданный функции GetAddrInfoEx, должен быть числовой строкой. |
|
Если этот бит задан, запрос выполняется для IPv6-адресов и IPv4-адресов с AI_V4MAPPED.
Этот параметр поддерживается в Windows Vista и более поздних версиях. |
|
GetAddrInfoEx будет разрешаться только в том случае, если настроен глобальный адрес. Адрес обратного цикла IPv6 и IPv4 не считается допустимым глобальным адресом.
Этот параметр поддерживается в Windows Vista и более поздних версиях. |
|
Если запрос GetAddrInfoEx для IPv6-адресов завершается сбоем, запрос службы имен выполняется для IPv4-адресов, и эти адреса преобразуются в формат IPv4-адресов, сопоставленных с IPv6.
Этот параметр поддерживается в Windows Vista и более поздних версиях. |
|
Сведения об адресе являются неавторитетными результатами.
Если этот параметр задан в параметре pHintsGetAddrInfoEx, поставщик пространства имен NS_EMAIL возвращает как достоверные, так и неавторитетные результаты. Если этот параметр не задан, возвращаются только достоверные результаты. Этот параметр поддерживается только в Windows Vista и более поздних версиях для пространства имен NS_EMAIL. |
|
Сведения об адресе — из безопасного канала.
Если задан AI_SECURE бит, поставщик пространства имен NS_EMAIL вернет результаты, полученные с повышенной безопасностью для минимизации возможных спуфингов. Если этот параметр задан в параметре pHintsGetAddrInfoEx, поставщик пространства имен NS_EMAIL возвращает только результаты, полученные с повышенной безопасностью, чтобы свести к минимуму возможный спуфинг. Этот параметр поддерживается только в Windows Vista и более поздних версиях для пространства имен NS_EMAIL. |
|
Сведения об адресе — это предпочитаемые имена для публикации с определенным пространством имен.
Если этот параметр задан в параметре pHintsGetAddrInfoEx, имя не должно быть указано в параметре pName, а поставщик пространства имен NS_EMAIL вернет предпочтительные имена для публикации. Этот параметр поддерживается только в Windows Vista и более поздних версиях для пространства имен NS_EMAIL. |
|
Полное доменное имя возвращается в первом элементе ai_fqdn.
Если этот параметр задан в параметре pHintsGetAddrInfoEx, а в параметре pName указано неструктурированное имя, полное доменное имя, которое будет возвращено в конечном итоге. Этот параметр поддерживается в Windows 7, Windows Server 2008 R2 и более поздних версиях. |
|
Указание поставщику пространства имен, которое запрашивается имя узла в сценарии общей папки. Поставщик пространства имен может игнорировать это указание.
Этот параметр поддерживается в Windows 7, Windows Server 2008 R2 и более поздних версиях. |
|
Отключите автоматическую кодировку международного доменного имени с помощью Punycode в функциях разрешения имен, вызываемых функцией GetAddrInfoEx.
Этот параметр поддерживается в Windows 8, Windows Server 2012 и более поздних версиях. |
|
Указывает, что текущий объект расширен: то есть addrinfoex2 или больше.
Этот параметр поддерживается в Windows 8.1, Windows Server 2012 R2 и более поздних версиях. |
|
Дескриптор разрешения возвращается в элементе ai_resolutionhandle.
Этот параметр поддерживается в Windows 10, Windows Server 2016 и более поздних версиях. |
|
Количество секунд, для которых допустима запись DNS. Если этот флаг присутствует, GetAddrInfoEx. параметрppResult возвращает список структур addrinfoex5, где элемент ai_ttl будет содержать отдельный TTL записи DNS. |
ai_family
Семейство адресов.
Возможные значения семейства адресов определяются в файле заголовка Ws2def.h. Обратите внимание, что файл заголовка ws2def.h
В настоящее время поддерживаются значения AF_INET или AF_INET6, которые являются форматами семейства адресов Интернета для IPv4 и IPv6. Другие варианты семейства адресов (AF_NETBIOS для использования с NetBIOS, например), поддерживаются, если установлен поставщик служб сокетов Windows для семейства адресов. Обратите внимание, что значения для семейства адресов AF_ и констант семейства протоколов PF_ идентичны (например, AF_INET и PF_INET), поэтому можно использовать любую константу.
В таблице ниже перечислены распространенные значения семейства адресов, хотя возможны многие другие значения.
ai_socktype
Тип сокета. Возможные значения для типа сокета определяются в файле Winsock2.h включить файл.
В следующей таблице перечислены возможные значения типа сокета, поддерживаемого для сокетов Windows 2:
Ценность | Значение |
---|---|
|
Предоставляет последовательные, надежные, двусторонние потоки байтов на основе подключения с механизмом передачи данных OOB. Использует протокол TCP для семейства адресов Интернета (AF_INET или AF_INET6). Если элемент ai_familyAF_IRDA, SOCK_STREAM является единственным поддерживаемым типом сокета. |
|
Поддерживает диаграммы данных, которые являются ненадежными, ненадежными буферами фиксированной (обычно небольшой) максимальной длины. Использует протокол пользовательской диаграммы данных (UDP) для семейства адресов Интернета (AF_INET или AF_INET6). |
|
Предоставляет необработанный сокет, позволяющий приложению управлять следующим заголовком протокола верхнего уровня. Чтобы управлять заголовком IPv4, необходимо задать параметр сокета IP_HDRINCL на сокете. Чтобы управлять заголовком IPv6, необходимо задать параметр сокета IPV6_HDRINCL на сокете. |
|
Предоставляет надежную диаграмму данных сообщений. Примером этого типа является реализация многоадресной многоадресной рассылки (PGM) прагматичной многоадресной рассылки в Windows, часто называемая надежным многоадресным программированием. |
|
Предоставляет псевдопотоковый пакет на основе диаграмм данных. |
В Windows Sockets 2 появились новые типы сокетов. Приложение может динамически обнаруживать атрибуты каждого доступного транспортного протокола с помощью функции WSAEnumProtocols. Поэтому приложение может определить возможный тип сокета и параметры протокола для семейства адресов и использовать эти сведения при указании этого параметра. Определения типов сокетов в Winsock2.h и Ws2def.h файлы заголовков будут периодически обновляться как новые типы сокетов, семейства адресов и протоколы.
В Сокетах Windows 1.1 единственными возможными типами сокетов являются SOCK_DATAGRAM и SOCK_STREAM.
ai_protocol
Тип протокола. Возможные параметры зависят от указанного семейства адресов и типа сокета. Возможные значения для
В пакете SDK для Windows SDK, выпущенном для Windows Vista и более поздних версий, организация файлов заголовков изменилась, и этот элемент может быть одним из значений из типа перечисления IPPROTO IPPROTO, определенного в файле заголовка Ws2def.h. Обратите внимание, что файл заголовка ws2def.h
Если для ai_protocolзадано значение 0, вызывающий объект не хочет указать протокол, и поставщик услуг выберет ai_protocol для использования. Для протоколов, отличных от IPv4 и IPv6, задайте для ai_protocol значение нулю.
В следующей таблице перечислены распространенные значения элемента ai_protocol, хотя можно использовать множество других значений.
Если элемент 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 |
См. также
addrinfoW