Bagikan melalui


struktur ADDRINFOEX6 (ws2def.h)

Struktur addrinfoex4 digunakan oleh fungsi GetAddrInfoEx untuk menyimpan informasi alamat host ketika antarmuka jaringan tertentu telah diminta.

Sintaksis

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;

Anggota

ai_flags

Bendera yang menunjukkan opsi yang digunakan dalam fungsi GetAddrInfoEx .

Nilai yang didukung untuk anggota ai_flags didefinisikan dalam file Winsock2.h sertakan dan dapat menjadi kombinasi dari opsi berikut.

Nilai Arti
AI_PASSIVE
0x01
Alamat soket akan digunakan dalam panggilan ke fungsiikatan .
AI_CANONNAME
0x02
Nama kanonis dikembalikan di anggota ai_canonname pertama.
AI_NUMERICHOST
0x04
Parameter nama simpul yang diteruskan ke fungsi GetAddrInfoEx harus berupa string numerik.
AI_ALL
0x0100
Jika bit ini diatur, permintaan dibuat untuk alamat IPv6 dan alamat IPv4 dengan AI_V4MAPPED.

Opsi ini didukung pada Windows Vista dan yang lebih baru.

AI_ADDRCONFIG
0x0400
GetAddrInfoEx hanya akan diselesaikan jika alamat global dikonfigurasi. Alamat loopback IPv6 dan IPv4 tidak dianggap sebagai alamat global yang valid.

Opsi ini didukung pada Windows Vista dan yang lebih baru.

AI_V4MAPPED
0x0800
Jika permintaan GetAddrInfoEx untuk alamat IPv6 gagal, permintaan layanan nama dibuat untuk alamat IPv4 dan alamat ini dikonversi ke format alamat IPv6 yang dipetakan IPv4.

Opsi ini didukung pada Windows Vista dan yang lebih baru.

AI_NON_AUTHORITATIVE
0x04000
Informasi alamat berasal dari hasil non-otoritatif.

Ketika opsi ini diatur dalam parameter pHints GetAddrInfoEx, penyedia namespace NS_EMAIL mengembalikan hasil otoritatif dan non-otoritatif. Jika opsi ini tidak diatur, maka hanya hasil otoritatif yang dikembalikan.

Opsi ini hanya didukung pada Windows Vista dan yang lebih baru untuk namespace NS_EMAIL.

AI_SECURE
0x08000
Informasi alamat berasal dari saluran aman.

Jika bit AI_SECURE diatur, penyedia namespace NS_EMAIL akan mengembalikan hasil yang diperoleh dengan keamanan yang ditingkatkan untuk meminimalkan kemungkinan spoofing.

Ketika opsi ini diatur dalam parameter pHints GetAddrInfoEx, penyedia namespace NS_EMAIL hanya mengembalikan hasil yang diperoleh dengan keamanan yang ditingkatkan untuk meminimalkan kemungkinan spoofing.

Opsi ini hanya didukung pada Windows Vista dan yang lebih baru untuk namespace NS_EMAIL.

AI_RETURN_PREFERRED_NAMES
0x010000
Informasi alamat adalah untuk nama pilihan untuk publikasi dengan namespace tertentu.

Ketika opsi ini diatur dalam parameter pHints GetAddrInfoEx, tidak ada nama yang harus disediakan dalam parameter pName dan penyedia namespace NS_EMAIL akan mengembalikan nama pilihan untuk publikasi.

Opsi ini hanya didukung pada Windows Vista dan yang lebih baru untuk namespace NS_EMAIL.

AI_FQDN
0x00020000
Nama domain yang sepenuhnya memenuhi syarat dikembalikan di anggota ai_fqdn pertama.

Ketika opsi ini diatur dalam parameter pHints GetAddrInfoEx dan nama datar (label tunggal) ditentukan dalam parameter pName , nama domain yang sepenuhnya memenuhi syarat yang akhirnya diselesaikan namanya akan dikembalikan.

Opsi ini didukung pada Windows 7, Windows Server 2008 R2, dan yang lebih baru.

AI_FILESERVER
0x00040000
Petunjuk ke penyedia namespace layanan bahwa nama host yang dikueri sedang digunakan dalam skenario berbagi file. Penyedia namespace mungkin mengabaikan petunjuk ini.

Opsi ini didukung pada Windows 7, Windows Server 2008 R2, dan yang lebih baru.

AI_DISABLE_IDN_ENCODING
0x00080000
Nonaktifkan pengodean Nama Domain Internasional otomatis menggunakan Punycode dalam fungsi resolusi nama yang dipanggil oleh fungsi GetAddrInfoEx.

Opsi ini didukung pada Windows 8, Windows Server 2012, dan yang lebih baru.

AI_EXTENDED
0x80000000
Menunjukkan bahwa objek saat ini diperluas: yaitu, addrinfoex2 atau lebih besar.

Opsi ini didukung pada Windows 8.1, Windows Server 2012 R2, dan yang lebih baru.

AI_RESOLUTION_HANDLE
0x40000000
Handel resolusi dikembalikan di anggota ai_resolutionhandle.

Opsi ini didukung pada Windows 10, Windows Server 2016, dan yang lebih baru.

AI_RETURN_TTL
0x0080
Jumlah detik di mana catatan DNS valid. Jika bendera ini ada, GetAddrInfoEx.parameter ppResult akan mengembalikan daftar struktur addrinfoex5 , di mana anggota ai_ttl akan berisi TTL individual dari catatan DNS.
AI_EXCLUSIVE_CUSTOM_SERVERS
0x0080
Secara default, server yang ditentukan dalam anggota ai_servers digunakan sebagai fallback ke server DNS sistem. Jika opsi ini ditentukan, maka kueri DNS akan menggunakan server kustom yang ditentukan di ai_server secara eksklusif.
AI_RETURN_RESPONSE_FLAGS
0x0080
Meminta informasi tambahan tentang hasil DNS. Jika bendera ini ada, parameter GetAddrInfoExppResult akan mengembalikan daftar struktur addrinfoex6 , di mana anggota ai_responseflags akan berisi informasi tentang asal hasil DNS.

ai_family

Keluarga alamat.

Nilai yang mungkin untuk keluarga alamat ditentukan dalam file header Ws2def.h . Perhatikan bahwa file header Ws2def.h secara otomatis disertakan dalam Winsock2.h, dan tidak boleh digunakan secara langsung.

Nilai yang saat ini didukung adalah AF_INET atau AF_INET6, yang merupakan format keluarga alamat Internet untuk IPv4 dan IPv6. Opsi lain untuk keluarga alamat (AF_NETBIOS untuk digunakan dengan NetBIOS, misalnya) didukung jika penyedia layanan Soket Windows untuk keluarga alamat diinstal. Perhatikan bahwa nilai untuk keluarga alamat AF_ dan konstanta keluarga protokol PF_ identik (misalnya, AF_INET dan PF_INET), sehingga konstanta dapat digunakan.

Tabel di bawah ini mencantumkan nilai umum untuk keluarga alamat meskipun banyak nilai lain dimungkinkan.

Nilai Arti
AF_UNSPEC
0
Keluarga alamat tidak ditentukan.
AF_INET
2
Keluarga alamat Protokol Internet versi 4 (IPv4).
AF_NETBIOS
17
Keluarga alamat NetBIOS. Keluarga alamat ini hanya didukung jika penyedia Windows Sockets untuk NetBIOS diinstal.
AF_INET6
23
Keluarga alamat Protokol Internet versi 6 (IPv6).
AF_IRDA
26
Keluarga alamat Asosiasi Data Inframerah (IrDA). Keluarga alamat ini hanya didukung jika komputer memiliki port inframerah dan pengandar yang terinstal.
AF_BTH
32
Keluarga alamat Bluetooth. Keluarga alamat ini hanya didukung jika adaptor Bluetooth diinstal.

ai_socktype

Jenis soket. Nilai yang mungkin untuk jenis soket didefinisikan dalam file Winsock2.h sertakan.

Tabel berikut ini mencantumkan nilai yang mungkin untuk jenis soket yang didukung untuk Windows Sockets 2:

Nilai Arti
SOCK_STREAM
1
Menyediakan aliran byte berbasis koneksi berurutan, andal, dua arah, dan berbasis koneksi dengan mekanisme transmisi data OOB. Menggunakan Protokol Kontrol Transmisi (TCP) untuk keluarga alamat Internet (AF_INET atau AF_INET6). Jika anggota ai_familyAF_IRDA, maka SOCK_STREAM adalah satu-satunya jenis soket yang didukung.
SOCK_DGRAM
2
Mendukung datagram, yang merupakan buffer tanpa koneksi dan tidak dapat diandalkan dengan panjang maksimum tetap (biasanya kecil). Menggunakan Protokol Datagram Pengguna (UDP) untuk keluarga alamat Internet (AF_INET atau AF_INET6).
SOCK_RAW
3
Menyediakan soket mentah yang memungkinkan aplikasi memanipulasi header protokol lapisan atas berikutnya. Untuk memanipulasi header IPv4, opsi soket IP_HDRINCL harus diatur pada soket. Untuk memanipulasi header IPv6, opsi soket IPV6_HDRINCL harus diatur pada soket.
SOCK_RDM
4
Menyediakan datagram pesan yang andal. Contoh dari jenis ini adalah implementasi protokol multicast Pragmatic General Multicast (PGM) di Windows, sering disebut sebagai pemrograman multicast yang andal.
SOCK_SEQPACKET
5
Menyediakan paket pseudo-stream berdasarkan datagram.
 

Di Windows Sockets 2, jenis soket baru diperkenalkan. Aplikasi dapat secara dinamis menemukan atribut dari setiap protokol transportasi yang tersedia melalui fungsi WSAEnumProtocols. Jadi aplikasi dapat menentukan opsi jenis soket dan protokol yang mungkin untuk keluarga alamat dan menggunakan informasi ini saat menentukan parameter ini. Definisi jenis soket dalam file header Winsock2.h dan Ws2def.h akan diperbarui secara berkala karena jenis soket baru, keluarga alamat, dan protokol ditentukan.

Di Windows Sockets 1.1, satu-satunya jenis soket yang mungkin adalah SOCK_DATAGRAM dan SOCK_STREAM.

ai_protocol

Jenis protokol. Opsi yang mungkin khusus untuk keluarga alamat dan jenis soket yang ditentukan. Nilai yang mungkin untuk ai_protocol ditentukan dalam Winsock2.h dan file header Wsrm.h.

Pada Windows SDK yang dirilis untuk Windows Vista dan yang lebih baru,, organisasi file header telah berubah dan anggota ini bisa menjadi salah satu nilai dari IPPROTO jenis enumerasi yang ditentukan dalam file header Ws2def.h. Perhatikan bahwa file header Ws2def.h secara otomatis disertakan dalam Winsock2.h, dan tidak boleh digunakan secara langsung.

Jika nilai 0 ditentukan untuk ai_protocol, pemanggil tidak ingin menentukan protokol dan penyedia layanan akan memilih ai_protocol untuk digunakan. Untuk protokol selain IPv4 dan IPv6, atur ai_protocol ke nol.

Tabel berikut ini mencantumkan nilai umum untuk anggota ai_protocol meskipun banyak nilai lain dimungkinkan.

Nilai Arti
IPPROTO_TCP
6
Protokol Kontrol Transmisi (TCP). Ini adalah nilai yang mungkin ketika anggota ai_familyAF_INET atau AF_INET6 dan anggota ai_socktypeSOCK_STREAM.
IPPROTO_UDP
17
Protokol Datagram Pengguna (UDP). Ini adalah nilai yang mungkin ketika anggota ai_family AF_INET atau AF_INET6 dan parameter jenis SOCK_DGRAM.
IPPROTO_RM
113
Protokol PGM untuk multicast yang andal. Ini adalah nilai yang mungkin ketika anggota ai_familyAF_INET dan anggota ai_socktypeSOCK_RDM. Pada Windows SDK yang dirilis untuk Windows Vista dan yang lebih baru, nilai ini juga disebut IPPROTO_PGM.
 

Jika anggota ai_familyAF_IRDA, maka ai_protocol harus 0.

ai_addrlen

Panjangnya, dalam byte, dari buffer yang ditujukkan oleh anggota ai_addr.

ai_canonname

Nama kanonis untuk host.

ai_addr

Penunjuk ke struktur sockaddr . Anggota ai_addr di setiap yang dikembalikan addrinfoex4 struktur struktur alamat soket yang diisi. Panjangnya, dalam byte, dari setiap struktur addrinfoex4 yang dikembalikan ditentukan dalam anggota ai_addrlen.

ai_blob

Penunjuk ke data yang digunakan untuk mengembalikan informasi namespace layanan khusus penyedia yang terkait dengan nama di luar daftar alamat. Panjangnya, dalam byte, dari buffer yang ditujukkan oleh ai_blob harus ditentukan dalam anggota ai_bloblen.

ai_bloblen

Panjangnya, dalam byte, dari anggota ai_blob.

ai_provider

Penunjuk ke GUID penyedia namespace tertentu.

ai_next

Penunjuk ke struktur berikutnya dalam daftar tertaut. Parameter ini diatur ke NULL di struktur addrinfoex4 terakhir dari daftar tertaut.

ai_version

Nomor versi struktur ini. Nilai yang saat ini digunakan untuk versi struktur ini adalah 4.

ai_fqdn

Nama domain yang sepenuhnya memenuhi syarat untuk host.

ai_interfaceindex

Indeks antarmuka, seperti yang didefinisikan oleh IP_ADAPTER_ADDRESSES.properti IfIndex yang dikembalikan diGetAdaptersAddresses .

ai_resolutionhandle

Tangani menunjuk ke nama domain yang sepenuhnya memenuhi syarat untuk host.

ai_ttl

Jumlah detik yang catatan DNS ini valid.

ai_numservers

Jumlah server DNS kustom yang ada di anggota ai_servers.

ai_servers

Array N (di mana N == ai_numservers) ADDRINFO_DNS_SERVER objek. Jika ai_numservers adalah 0, maka ai_servers harus NULL.

ai_responseflags

Mengembalikan bitmap yang berisi salah satu nilai berikut.

Konstan Nilai Arti
AI_DNS_RESPONSE_SECURE 0x1 Respons berasal dari protokol aman, seperti DNS-over-HTTPS.
AI_DNS_RESPONSE_HOSTFILE 0x2 Respons berasal dari file host .

Komentar

Struktur ADDRINFOEX6 adalah ekstensi dari struktur ADDRINFOEX5. Selain semua bidang dari struktur ADDRINFOEX5, bidang ini menyimpan anggota ai_numservers dan ai_servers, memungkinkan penggunaan server DNS kustom per kueri. Ini juga menampung anggota ai_responseflags, yang berisi informasi tentang asal respons DNS.

Jika bendera AI_RETURN_RESPONSE_FLAGS ada di anggota ai_flags, maka parameter GetAddrInfoExppResult akan mengembalikan daftar struktur ADDRINFOEX6, di mana anggota ai_responseflags akan berisi informasi tentang asal hasil DNS.

Jika anggota ai_numservers dan ai_servers menunjuk ke array objek ADDRINFO_DNS_SERVER yang valid, maka kueri DNS akan menambahkan server ini sebagai fallback ke server DNS yang dikonfigurasi sistem. Jika opsi AI_EXCLUSIVE_CUSTOM_SERVERS ada di anggota ai_flags, maka kueri DNS akan menggunakan server kustom secara eksklusif.

Contoh

Lihat contoh kode dalam topik struktur ADDRINFOEX4.

Persyaratan

Syarat Nilai
klien minimum yang didukung Windows Build 22000
server minimum yang didukung Windows Build 22000
Header ws2def.h

Lihat juga

GetAddrInfoEx

addrinfo

addrinfoW

addrinfoex

addrinfoex3