Bagikan melalui


Fungsi DnsQueryEx (windns.h)

Fungsi DnsQueryEx adalah antarmuka kueri generik asinkron ke namespace DNS. Ini memberi pengembang aplikasi antarmuka resolusi kueri DNS.

Seperti DnsQuery, DnsQueryEx juga dapat digunakan untuk membuat kueri sinkron ke namespace DNS.

Sintaks

DNS_STATUS DnsQueryEx(
  [in]                PDNS_QUERY_REQUEST pQueryRequest,
  [in, out]           PDNS_QUERY_RESULT  pQueryResults,
  [in, out, optional] PDNS_QUERY_CANCEL  pCancelHandle
);

Parameter

[in] pQueryRequest

Penunjuk ke struktur DNS_QUERY_REQUEST atau DNS_QUERY_REQUEST3 yang berisi informasi permintaan kueri.

Catatan Dengan menghilangkan panggilan balik DNS_QUERY_COMPLETION_ROUTINE dari anggota pQueryCompleteCallback dari struktur ini, DnsQueryEx dipanggil secara sinkron.
 

[in, out] pQueryResults

Penunjuk ke struktur DNS_QUERY_RESULT yang berisi hasil kueri. Pada input, anggota versipQueryResults harus DNS_QUERY_RESULTS_VERSION1 dan semua anggota lainnya harus NULL. Pada output, anggota yang tersisa akan diisi sebagai bagian dari kueri selesai.

Catatan Untuk kueri asinkron, aplikasi tidak boleh membebaskan struktur ini sampai panggilan balik DNS_QUERY_COMPLETION_ROUTINE dipanggil. Saat kueri selesai, struktur DNS_QUERY_RESULT berisi penunjuk ke daftar DNS_RECORDS yang harus dibebaskan menggunakan DnsRecordListFree.
 

[in, out, optional] pCancelHandle

Penunjuk ke struktur DNS_QUERY_CANCEL yang dapat digunakan untuk membatalkan kueri asinkron yang tertunda.

Catatan Aplikasi tidak boleh membebaskan struktur ini sampai panggilan balik DNS_QUERY_COMPLETION_ROUTINE dipanggil.
 

Mengembalikan nilai

Fungsi DnsQueryEx memiliki kemungkinan nilai pengembalian berikut:

Menampilkan kode Deskripsi
ERROR_SUCCESS
Panggilan berhasil.
ERROR_INVALID_PARAMETER
Parameter pQueryRequest atau pQueryRequest tidak diinisialisasi atau berisi versi yang salah.
DNS RCODE
Panggilan mengakibatkan kesalahan RCODE .
DNS_INFO_NO_RECORDS
Tidak ada catatan dalam respons.
DNS_REQUEST_PENDING
Kueri akan diselesaikan secara asinkron.

Keterangan

Jika panggilan ke DnsQueryEx selesai secara sinkron (yaitu, nilai pengembalian fungsi tidak DNS_REQUEST_PENDING), anggota pQueryRecordspQueryResults berisi pointer ke daftar DNS_RECORDS dan DnsQueryEx akan mengembalikan kesalahan atau keberhasilan.

Kondisi berikut memanggil panggilan sinkron ke DnsQueryEx dan tidak menggunakan panggilan balik DNS:

  • Panggilan balik DNS_QUERY_COMPLETION_ROUTINE dihilangkan dari anggota pQueryCompleteCallback dari pQueryRequest.
  • Kueri adalah untuk nama komputer lokal dan jenis A atau AAAA Resource Records (RR).
  • Panggilan ke DnsQueryEx meminta alamat IPv4 atau IPv6.
  • Panggilan ke DnsQueryEx kembali dalam kesalahan.
Jika panggilan ke DnsQueryEx selesai secara asinkron, hasil kueri dikembalikan oleh panggilan balik DNS_QUERY_COMPLETION_ROUTINE di pQueryRequest, anggota QueryStatuspQueryResults berisi DNS_REQUEST_PENDING, dan DnsQueryEx mengembalikan DNS_REQUEST_PENDING. Aplikasi harus melacak struktur pQueryResults yang diteruskan ke DnsQueryEx hingga panggilan balik DNS berhasil. Aplikasi dapat membatalkan kueri asinkron menggunakan handel pCancelHandle yang dikembalikan oleh DnsQueryEx.

pCancelHandle dikembalikan dari panggilan asinkron ke DnsQueryEx dan pQueryContext valid hingga panggilan balik DNS DNS_QUERY_COMPLETION_ROUTINE dipanggil.

Catatan Aplikasi diberi tahu tentang penyelesaian DnsQueryEx asinkron melalui panggilan balik DNS_QUERY_COMPLETION_ROUTINE dalam konteks proses yang sama.
 

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8 [khusus aplikasi desktop]
Server minimum yang didukung Windows Server 2012 [hanya aplikasi desktop]
Target Platform Windows
Header windns.h
Pustaka Dnsapi.lib
DLL Dnsapi.dll

Lihat juga