struttura ADDRINFOEX6 (ws2def.h)
La struttura addrinfoex4
Sintassi
typedef struct addrinfoex6 {
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;
unsigned int ai_numservers;
ADDRINFO_DNS_SERVER *ai_servers;
ULONG64 ai_responseflags;
} ADDRINFOEX6, *PADDRINFOEX6;
Membri
ai_flags
Flag che indicano le opzioni usate nella funzione GetAddrInfoEx
I valori supportati per il membro ai_flags sono definiti nel Winsock2.h file di inclusione e possono essere una combinazione delle opzioni seguenti.
Valore | Significato |
---|---|
|
L'indirizzo del socket verrà usato in una chiamata alla funzione binding. |
|
Il nome canonico viene restituito nel primo membro ai_canonname. |
|
Il parametro nodename |
|
Se questo bit è impostato, viene effettuata una richiesta per gli indirizzi IPv6 e gli indirizzi IPv4 con AI_V4MAPPED.
Questa opzione è supportata in Windows Vista e versioni successive. |
|
Il GetAddrInfoEx risolverà solo se è configurato un indirizzo globale. L'indirizzo di loopback IPv6 e IPv4 non è considerato un indirizzo globale valido.
Questa opzione è supportata in Windows Vista e versioni successive. |
|
Se la GetAddrInfoEx richiesta di un indirizzo IPv6 ha esito negativo, viene effettuata una richiesta di servizio dei nomi per gli indirizzi IPv4 e questi indirizzi vengono convertiti in formato indirizzo IPv4 mappato a IPv6.
Questa opzione è supportata in Windows Vista e versioni successive. |
|
Le informazioni sull'indirizzo provengono da risultati non autorevoli.
Quando questa opzione è impostata nel parametro pHints di GetAddrInfoEx, il provider dello spazio dei nomi NS_EMAIL restituisce risultati autorevoli e non autorevoli. Se questa opzione non è impostata, vengono restituiti solo i risultati autorevoli. Questa opzione è supportata solo in Windows Vista e versioni successive per lo spazio dei nomi NS_EMAIL. |
|
Le informazioni sull'indirizzo provengono da un canale sicuro.
Se il bit AI_SECURE è impostato, il provider dello spazio dei nomi NS_EMAIL restituirà i risultati ottenuti con sicurezza avanzata per ridurre al minimo i possibili spoofing. Quando questa opzione è impostata nel parametro Questa opzione è supportata solo in Windows Vista e versioni successive per lo spazio dei nomi NS_EMAIL. |
|
Le informazioni sull'indirizzo sono relative a nomi preferiti per la pubblicazione con uno spazio dei nomi specifico.
Quando questa opzione è impostata nel parametro Questa opzione è supportata solo in Windows Vista e versioni successive per lo spazio dei nomi NS_EMAIL. |
|
Il nome di dominio completo viene restituito nel primo membro ai_fqdn.
Quando questa opzione viene impostata nel parametro Questa opzione è supportata in Windows 7, Windows Server 2008 R2 e versioni successive. |
|
Suggerimento al provider dello spazio dei nomi su cui viene eseguita la query sul nome host sottoposto a query in uno scenario di condivisione file. Il provider dello spazio dei nomi può ignorare questo hint.
Questa opzione è supportata in Windows 7, Windows Server 2008 R2 e versioni successive. |
|
Disabilitare la codifica automatica del nome di dominio internazionale usando Punycode nelle funzioni di risoluzione dei nomi chiamate dalla funzione GetAddrInfoEx.
Questa opzione è supportata in Windows 8, Windows Server 2012 e versioni successive. |
|
Indica che l'oggetto corrente è esteso, ovvero un addrinfoex2 o versione successiva.
Questa opzione è supportata in Windows 8.1, Windows Server 2012 R2 e versioni successive. |
|
Nel membro ai_resolutionhandle viene restituito un handle di risoluzione.
Questa opzione è supportata in Windows 10, Windows Server 2016 e versioni successive. |
|
Numero di secondi per cui il record DNS è valido. Se questo flag è presente, GetAddrInfoEx.parametro ppResult restituirà un elenco di strutture addrinfoex5, in cui il membro ai_ttl conterrà il singolo TTL del record DNS. |
|
Per impostazione predefinita, i server specificati nel membro ai_servers vengono usati come fallback ai server DNS di sistema. Se questa opzione è specificata, la query DNS userà i server personalizzati specificati in ai_server esclusivamente. |
|
Richiede informazioni aggiuntive sui risultati DNS. Se questo flag è presente, il parametro GetAddrInfoExppResult restituirà un elenco di strutture addrinfoex6, in cui il membro ai_responseflags conterrà informazioni sull'origine dei risultati DNS. |
ai_family
Famiglia di indirizzi.
I valori possibili per la famiglia di indirizzi sono definiti nel file di intestazione Ws2def. h. Si noti che il file di intestazione
I valori attualmente supportati sono AF_INET o AF_INET6, che sono i formati della famiglia di indirizzi Internet per IPv4 e IPv6. Altre opzioni per la famiglia di indirizzi (AF_NETBIOS da usare con NetBIOS, ad esempio) sono supportate se è installato un provider di servizi Windows Sockets per la famiglia di indirizzi. Si noti che i valori per la famiglia di indirizzi AF_ e le costanti della famiglia di protocolli di PF_ sono identiche (ad esempio, AF_INET e PF_INET), in modo che sia possibile usare entrambe le costanti.
La tabella seguente elenca i valori comuni per la famiglia di indirizzi, anche se sono possibili molti altri valori.
ai_socktype
Tipo di socket. I valori possibili per il tipo di socket sono definiti nel file di inclusione Winsock2. h.
La tabella seguente elenca i valori possibili per il tipo di socket supportato per Windows Sockets 2:
Valore | Significato |
---|---|
|
Fornisce flussi di byte sequenziati, affidabili, bidirezionali e basati sulla connessione con un meccanismo di trasmissione dei dati OOB. Usa il protocollo TCP (Transmission Control Protocol) per la famiglia di indirizzi Internet (AF_INET o AF_INET6). Se il membro ai_family è AF_IRDA, SOCK_STREAM è l'unico tipo di socket supportato. |
|
Supporta datagrammi, che non sono connectionless, buffer inaffidabili di una lunghezza massima fissa (in genere piccola). Usa il protocollo UDP (User Datagram Protocol) per la famiglia di indirizzi Internet (AF_INET o AF_INET6). |
|
Fornisce un socket non elaborato che consente a un'applicazione di modificare l'intestazione del protocollo superiore successiva. Per modificare l'intestazione IPv4, è necessario impostare l'opzione socket IP_HDRINCL sul socket. Per modificare l'intestazione IPv6, è necessario impostare l'opzione socket IPV6_HDRINCL sul socket. |
|
Fornisce un datagramma di messaggi affidabile. Un esempio di questo tipo è l'implementazione del protocollo multicast pgm (Pragmatic General Multicast) in Windows, spesso definita programmazione multicast affidabile. |
|
Fornisce un pacchetto pseudo-flusso basato su datagrammi. |
In Windows Sockets 2 sono stati introdotti nuovi tipi di socket. Un'applicazione può individuare dinamicamente gli attributi di ogni protocollo di trasporto disponibile tramite la funzione WSAEnumProtocols
In Windows Sockets 1.1, gli unici tipi di socket possibili sono SOCK_DATAGRAM e SOCK_STREAM.
ai_protocol
Tipo di protocollo. Le opzioni possibili sono specifiche per la famiglia di indirizzi e il tipo di socket specificati. I valori possibili per il ai_protocol sono definiti nei file di intestazione Winsock2. h e Wsrm.h.
In Windows SDK rilasciato per Windows Vista e versioni successive, l'organizzazione dei file di intestazione è stata modificata e questo membro può essere uno dei valori del tipo di enumerazione IPPROTO definito nel file di intestazione Ws2def. h. Si noti che il file di intestazione
Se per ai_protocolviene specificato un valore pari a 0 , il chiamante non desidera specificare un protocollo e il provider di servizi sceglierà il ai_protocol da usare. Per i protocolli diversi da IPv4 e IPv6, impostare ai_protocol su zero.
Nella tabella seguente sono elencati i valori comuni per il membro ai_protocol anche se sono possibili molti altri valori.
Se il membro ai_family è AF_IRDA, il ai_protocol deve essere 0.
ai_addrlen
Lunghezza, in byte, del buffer a cui punta il membro ai_addr.
ai_canonname
Nome canonico per l'host.
ai_addr
Puntatore a una struttura sockaddr. Il membro ai_addr in ogni addrinfoex4 struttura punta a una struttura di indirizzi socket compilata. La lunghezza, in byte, di ogni struttura addrinfoex4 restituita viene specificata nel membro ai_addrlen.
ai_blob
Puntatore ai dati utilizzati per restituire informazioni sullo spazio dei nomi specifiche del provider associate al nome oltre un elenco di indirizzi. La lunghezza, in byte, del buffer a cui punta ai_blob deve essere specificata nel membro ai_bloblen.
ai_bloblen
Lunghezza, in byte, del membro ai_blob.
ai_provider
Puntatore al GUID di un provider di spazi dei nomi specifico.
ai_next
Puntatore alla struttura successiva in un elenco collegato. Questo parametro è impostato su NULL nell'ultima struttura addrinfoex4 di un elenco collegato.
ai_version
Numero di versione di questa struttura. Il valore attualmente utilizzato per questa versione della struttura è 4.
ai_fqdn
Nome di dominio completo per l'host.
ai_interfaceindex
Indice dell'interfaccia, come definito dal IP_ADAPTER_ADDRESSES.proprietà IfIndex restituita in GetAdaptersAddresses.
ai_resolutionhandle
Gestire il punto al nome di dominio completo per l'host.
ai_ttl
Numero di secondi per i quali il record DNS è valido.
ai_numservers
Numero di server DNS personalizzati presenti nel membro ai_servers.
ai_servers
Matrice di N (dove N == ai_numservers) ADDRINFO_DNS_SERVER oggetti . Se ai_numservers è 0, ai_servers deve essere NULL.
ai_responseflags
Restituisce una bitmap contenente uno dei valori seguenti.
Costante | Valore | Significato |
---|---|---|
AI_DNS_RESPONSE_SECURE | 0x1 | La risposta proviene da protocolli sicuri, ad esempio DNS-over-HTTPS. |
AI_DNS_RESPONSE_HOSTFILE | 0x2 | La risposta proviene dal file host |
Osservazioni
La struttura ADDRINFOEX6 è un'estensione della struttura ADDRINFOEX5. Oltre a tutti i campi della struttura ADDRINFOEX5, contiene i membri ai_numservers e ai_servers, consentendo l'uso di server DNS personalizzati per query. Contiene anche il membro ai_responseflags, che contiene informazioni sull'origine delle risposte DNS.
Se il flag AI_RETURN_RESPONSE_FLAGS è presente nel membro ai_flags, il parametro GetAddrInfoExppResult restituirà un elenco di strutture ADDRINFOEX6, in cui il membro ai_responseflags conterrà informazioni sull'origine dei risultati DNS.
Se i membri ai_numservers e ai_servers puntano a una matrice di oggetti ADDRINFO_DNS_SERVER validi, la query DNS aggiungerà questi server come fallback ai server DNS configurati dal sistema. Se l'opzione AI_EXCLUSIVE_CUSTOM_SERVERS è presente nel membro ai_flags, la query DNS userà esclusivamente i server personalizzati.
Esempi
Vedere il codice di esempio nell'argomento della struttura ADDRINFOEX4.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows Build 22000 |
server minimo supportato | Windows Build 22000 |
intestazione |
ws2def.h |