Bagikan melalui


Fungsi DnsQueryEx (windns.h)

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

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

Sintaksis

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 struktur ini, DnsQueryEx dipanggil secara sinkron.
 

[in, out] pQueryResults

Penunjuk ke struktur DNS_QUERY_RESULT yang berisi hasil kueri. Pada input, versi anggota pQueryResults 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:

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

Komentar

Jika panggilan ke DnsQueryEx selesai secara sinkron (yaitu, nilai pengembalian fungsi tidak DNS_REQUEST_PENDING), pQueryRecords anggota pQueryResults berisi penunjuk 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 pQueryCompleteCallback anggota pQueryRequest.
  • Kueri adalah untuk nama komputer lokal dan A atau AAAA jenis 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, QueryStatus anggota pQueryResults 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 yang dikembalikan dari panggilan asinkron ke DnsQueryEx dan pQueryContext valid hingga panggilan balik DNS DNS_QUERY_COMPLETION_ROUTINE dipanggil.

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

Persyaratan

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

Lihat juga