ADDRINFOEX3 struttura (ws2def.h)
La struttura addrinfoex3 viene utilizzata dalla funzione GetAddrInfoEx per contenere le informazioni sull'indirizzo host quando è stata richiesta un'interfaccia di rete specifica.
Sintassi
typedef struct addrinfoex3 {
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;
LPGUID ai_provider;
struct addrinfoex3 *ai_next;
int ai_version;
PWSTR ai_fqdn;
int ai_interfaceindex;
} ADDRINFOEX3, *PADDRINFOEX3, *LPADDRINFOEX3;
Members
ai_flags
Flag che indicano le opzioni usate nella funzione GetAddrInfoEx .
I valori supportati per il membro ai_flags sono definiti nel file di inclusione Winsock2.h e possono essere una combinazione delle opzioni seguenti.
Valore | Significato |
---|---|
|
L'indirizzo socket verrà usato in una chiamata alla funzione di associazione . |
|
Il nome canonico viene restituito nel primo membro ai_canonname . |
|
Il parametro nodename passato alla funzione GetAddrInfoEx deve essere una stringa numerica. |
|
Se questo bit è impostato, viene effettuata una richiesta per indirizzi IPv6 e indirizzi IPv4 con AI_V4MAPPED.
Questa opzione è supportata in Windows Vista e versioni successive. |
|
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 richiesta GetAddrInfoEx per un indirizzo IPv6 ha esito negativo, viene eseguita una richiesta di servizio dei nomi per gli indirizzi IPv4 e questi indirizzi vengono convertiti in formato indirizzi IPv4 mappati.
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 di spazi dei nomi NS_EMAIL restituisce risultati autorevoli e non autorevoli. Se questa opzione non è impostata, vengono restituiti solo 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 di AI_SECURE è impostato, il provider di spazi dei nomi NS_EMAIL restituirà i risultati ottenuti con sicurezza avanzata per ridurre al minimo il possibile spoofing. Quando questa opzione è impostata nel parametro pHints di GetAddrInfoEx, il provider di spazi dei nomi NS_EMAIL restituisce solo risultati ottenuti con sicurezza avanzata per ridurre al minimo il possibile spoofing. Questa opzione è supportata solo in Windows Vista e versioni successive per lo spazio dei nomi NS_EMAIL . |
|
Le informazioni sull'indirizzo sono per nomi preferiti per la pubblicazione con uno spazio dei nomi specifico.
Quando questa opzione è impostata nel parametro pHints di GetAddrInfoEx, nessun nome deve essere fornito nel parametro pName e il provider di spazi dei nomi NS_EMAIL restituirà nomi preferiti per la pubblicazione. 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 pHints di GetAddrInfoEx e viene specificato un nome flat (etichetta singola) nel parametro pName , il nome di dominio completo che il nome risolto verrà restituito. Questa opzione è supportata in Windows 7, Windows Server 2008 R2 e versioni successive. |
|
Suggerimento al provider di spazi dei nomi in cui viene eseguito la query nome host in uno scenario di condivisione file. Il provider di spazi dei nomi può ignorare questo hint.
Questa opzione è supportata in Windows 7, Windows Server 2008 R2 e versioni successive. |
|
Disabilitare la codifica nome di dominio internazionale automatica 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. |
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 Ws2def.h viene incluso automaticamente in Winsock2.h e non deve mai essere usato direttamente.
I valori attualmente supportati sono AF_INET o AF_INET6, ovvero i formati della famiglia di indirizzi Internet per IPv4 e IPv6. Altre opzioni per la famiglia di indirizzi (AF_NETBIOS per l'uso con NetBIOS, ad esempio) sono supportate se viene 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 una costante.
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 .
Nella tabella seguente sono elencati 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 non affidabili 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 IP_HDRINCL socket sul socket. Per modificare l'intestazione IPv6, l'opzione socket IPV6_HDRINCL deve essere impostata sul socket. |
|
Fornisce un datagramma di messaggi affidabile. Un esempio di questo tipo è l'implementazione del protocollo multicast generale pragmatico (PGM) 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 . Un'applicazione può quindi determinare le possibili opzioni di protocollo e tipo di socket per una famiglia di indirizzi e usare queste informazioni quando si specifica questo parametro. Le definizioni dei tipi di socket nei file di intestazione Winsock2.h e Ws2def.h verranno aggiornate periodicamente quando vengono definiti nuovi tipi di socket, famiglie di indirizzi e protocolli.
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 .
Nella Windows SDK rilasciata 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 Ws2def.h viene automaticamente incluso in Winsock2.h e non deve mai essere usato direttamente.
Se per ai_protocol viene specificato un valore pari a 0, il chiamante non vuole 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 struttura addrinfoex3 restituita punta a una struttura di indirizzi socket compilata. La lunghezza, in byte, di ogni struttura addrinfoex3 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 a 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 addrinfoex3 di un elenco collegato.
ai_version
Numero di versione di questa struttura. Il valore attualmente usato per questa versione della struttura è 3.
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.
Commenti
La struttura addrinfoex3 è supportata in Windows 8.1 e Windows Server 2012 R2
La struttura addrinfoex3 viene utilizzata dalla funzione GetAddrInfoEx per contenere le informazioni sull'indirizzo host quando il AI_EXTENDED | AI_FQDN | AI_CANONNAME bit viene impostato nel addrinfoex3.ai_flags membro passato tramite GetAddrInfoEx. parametro hints . È inoltre necessario impostare addrinfoex3. ai_interfaceindex membro all'interfaccia per cui si desidera recuperare informazioni e ai_version a 3.
La struttura addrinfoex3 è una versione avanzata della struttura addrinfoex che può restituire il nome canonico e il nome di dominio completo per l'host. A sua volta , addrinfoex è una versione avanzata delle strutture addrinfo e addrinfoW usate con le funzioni getaddrinfo e GetAddrInfoW . La funzione GetAddrInfoEx consente di specificare il provider dello spazio dei nomi per risolvere la query. Per l'uso con il protocollo IPv6 e IPv4, la risoluzione dei nomi può essere eseguita dal dns (Domain Name System), da un file host locale, da un provider di posta elettronica (lo spazio dei nomi NS_EMAIL ) o da altri meccanismi di denominazione.
I dati BLOB nel membro ai_blob vengono usati per restituire informazioni aggiuntive sullo spazio dei nomi specifico del provider associate a un nome. Il formato dei dati nel membro ai_blob è specifico di un provider di spazi dei nomi specifico. Attualmente, i dati BLOB vengono usati dal provider dello spazio dei nomi NS_EMAIL per fornire informazioni aggiuntive.
Quando viene definito UNICODE o _UNICODE, addrinfoex3 viene definito per addrinfoex3W, la versione Unicode di questa struttura. I parametri stringa vengono definiti per il tipo di dati PWSTR e viene usata la struttura addrinfoex3W .
Quando UNICODE o _UNICODE non è definito, addrinfoex3 viene definito per addrinfoex3A, la versione ANSI di questa struttura. I parametri stringa sono del tipo di dati char * e viene usata la struttura addrinfoex3A .
Al termine di una chiamata a GetAddrInfoEx, viene restituito un elenco collegato di strutture addrinfoex3 nel parametro ppResult passato alla funzione GetAddrInfoEx . L'elenco può essere elaborato seguendo il puntatore fornito nel membro ai_next di ogni struttura addrinfoex3 restituita fino a quando non viene rilevato un puntatore NULL . In ogni struttura addrinfoex3 restituita, i membri ai_family, ai_socktype e ai_protocol corrispondono ai rispettivi argomenti in una chiamata di funzione socket o WSASocket . Inoltre, il membro ai_addr in ogni struttura addrinfoex3 restituita punta a una struttura di indirizzi socket compilata, la cui lunghezza viene specificata nel relativo membro ai_addrlen .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 [solo app desktop] |
Server minimo supportato | Windows Server 2012 [solo app desktop] |
Intestazione | ws2def.h |