Freigeben über


DnsQueryEx-Funktion (windns.h)

Die DnsQueryEx--Funktion ist die asynchrone generische Abfrageschnittstelle für den DNS-Namespace. Es stellt Anwendungsentwicklern eine DNS-Abfrageauflösungsschnittstelle bereit.

Wie DnsQuerykönnen auch DnsQueryEx- verwendet werden, um synchrone Abfragen an den DNS-Namespace vorzunehmen.

Syntax

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

Parameter

[in] pQueryRequest

Ein Zeiger auf eine DNS_QUERY_REQUEST- oder DNS_QUERY_REQUEST3-Struktur, die die Abfrageanforderungsinformationen enthält.

Hinweis Durch Weglassen des DNS_QUERY_COMPLETION_ROUTINE Rückrufs aus dem pQueryCompleteCallback Mitglied dieser Struktur wird DnsQueryEx- synchron aufgerufen.
 

[in, out] pQueryResults

Ein Zeiger auf eine DNS_QUERY_RESULT Struktur, die die Ergebnisse der Abfrage enthält. Bei eingaben muss die Version Mitglied von pQueryResults-DNS_QUERY_RESULTS_VERSION1 sein, und alle anderen Member sollten NULL-sein. Bei der Ausgabe werden die verbleibenden Elemente als Teil der Abfrage ausgefüllt.

Hinweis Bei asynchronen Abfragen sollte eine Anwendung diese Struktur erst freigeben, wenn der DNS_QUERY_COMPLETION_ROUTINE Rückruf aufgerufen wird. Nach Abschluss der Abfrage enthält die DNS_QUERY_RESULT-Struktur einen Zeiger auf eine Liste von DNS_RECORDS, die mit DnsRecordListFreefreigegeben werden soll.
 

[in, out, optional] pCancelHandle

Ein Zeiger auf eine DNS_QUERY_CANCEL Struktur, mit der eine ausstehende asynchrone Abfrage abgebrochen werden kann.

Hinweis Eine Anwendung sollte diese Struktur erst freigeben, wenn der DNS_QUERY_COMPLETION_ROUTINE Rückruf aufgerufen wird.
 

Rückgabewert

Die funktion DnsQueryEx hat die folgenden möglichen Rückgabewerte:

Rückgabecode Beschreibung
ERROR_SUCCESS
Der Anruf war erfolgreich.
ERROR_INVALID_PARAMETER
Entweder die pQueryRequest oder pQueryResults Parameter sind nicht initialisiert oder enthalten die falsche Version.
DNS-RCODE-
Der Aufruf führte zu einem RCODE- Fehler.
DNS_INFO_NO_RECORDS
Keine Datensätze in der Antwort.
DNS_REQUEST_PENDING
Die Abfrage wird asynchron abgeschlossen.

Bemerkungen

Wenn ein Aufruf von DnsQueryEx synchron abgeschlossen wird (d. h., der Funktionsrücklaufwert ist nicht DNS_REQUEST_PENDING), gibt das pQueryRecords Member von pQueryResults einen Zeiger auf eine Liste von DNS_RECORDS und DnsQueryEx- einen Fehler oder Erfolg zurückgibt.

Die folgenden Bedingungen rufen einen synchronen Aufruf von DnsQueryEx- auf und verwenden nicht den DNS-Rückruf:

  • Der DNS_QUERY_COMPLETION_ROUTINE Rückruf wird aus dem pQueryCompleteCallback- Mitglied pQueryRequest-ausgelassen.
  • Eine Abfrage ist für den Namen des lokalen Computers und A oder AAAA Typ Resource Records (RR).
  • Ein Aufruf von DnsQueryEx fragt eine IPv4- oder IPv6-Adresse ab.
  • Ein Aufruf von DnsQueryEx- wird in Fehler zurückgegeben.
Wenn ein Aufruf von DnsQueryEx asynchron abgeschlossen wird, werden die Ergebnisse der Abfrage vom DNS_QUERY_COMPLETION_ROUTINE Rückruf in pQueryRequest-zurückgegeben, das QueryStatus Member von pQueryResults enthält DNS_REQUEST_PENDING, und DnsQueryEx gibt DNS_REQUEST_PENDINGzurück. Anwendungen sollten die pQueryResults- Struktur nachverfolgen, die an DnsQueryEx- übergeben wird, bis der DNS-Rückruf erfolgreich ist. Anwendungen können eine asynchrone Abfrage mithilfe des pCancelHandle- Handle abbrechen, das von DnsQueryEx-zurückgegeben wird.

pCancelHandle von einem asynchronen Aufruf an DnsQueryEx zurückgegeben und pQueryContext- gültig ist, bis der DNS_QUERY_COMPLETION_ROUTINE DNS-Rückruf aufgerufen wird.

Hinweis Anwendungen über den Abschluss asynchroner DnsQueryEx durch den DNS_QUERY_COMPLETION_ROUTINE Rückruf innerhalb desselben Prozesskontexts benachrichtigt werden.
 

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 8 [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2012 [nur Desktop-Apps]
Zielplattform- Fenster
Header- windns.h
Library Dnsapi.lib
DLL- Dnsapi.dll

Siehe auch