Condividi tramite


Funzione DnsQueryEx (windns.h)

La funzione DnsQueryEx è l'interfaccia di query generica asincrona per lo spazio dei nomi DNS. Fornisce agli sviluppatori di applicazioni un'interfaccia di risoluzione delle query DNS.

Come DnsQuery, DnsQueryEx può essere usato anche per eseguire query sincrone allo spazio dei nomi DNS.

Sintassi

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

Parametri

[in] pQueryRequest

Puntatore a una struttura DNS_QUERY_REQUEST o DNS_QUERY_REQUEST3 che contiene le informazioni sulla richiesta di query.

Nota Omettendo il callback DNS_QUERY_COMPLETION_ROUTINE dal pQueryCompleteCallback membro di questa struttura, DnsQueryEx viene chiamato in modo sincrono.
 

[in, out] pQueryResults

Puntatore a una struttura DNS_QUERY_RESULT che contiene i risultati della query. All'input, la versione membro di pQueryResults deve essere DNS_QUERY_RESULTS_VERSION1 e tutti gli altri membri devono essere NULL. In caso di output, i membri rimanenti verranno compilati come parte della query completata.

Nota Per le query asincrone, un'applicazione non deve liberare questa struttura fino a quando non viene richiamato il callback DNS_QUERY_COMPLETION_ROUTINE. Al termine della query, la struttura DNS_QUERY_RESULT contiene un puntatore a un elenco di DNS_RECORDS che devono essere liberati usando DnsRecordListFree.
 

[in, out, optional] pCancelHandle

Puntatore a una struttura DNS_QUERY_CANCEL che può essere usata per annullare una query asincrona in sospeso.

Nota Un'applicazione non deve liberare questa struttura fino a quando non viene richiamato il callback DNS_QUERY_COMPLETION_ROUTINE.
 

Valore restituito

La funzione DnsQueryEx ha i valori restituiti seguenti:

Codice restituito Descrizione
ERROR_SUCCESS
La chiamata ha avuto esito positivo.
ERROR_INVALID_PARAMETER
I parametri pQueryRequest o pQueryResults non sono inizializzati o contengono la versione errata.
DNS RCODE
La chiamata ha generato un errore di RCODE.
DNS_INFO_NO_RECORDS
Nessun record nella risposta.
DNS_REQUEST_PENDING
La query verrà completata in modo asincrono.

Osservazioni

Se una chiamata a DnsQueryEx viene completata in modo sincrono (ad esempio, il valore restituito della funzione non è DNS_REQUEST_PENDING), il pQueryRecords membro di pQueryResults contiene un puntatore a un elenco di DNS_RECORDS e DnsQueryEx restituirà un errore o un esito positivo.

Le condizioni seguenti richiamano una chiamata sincrona a DnsQueryEx e non utilizzano il callback DNS:

  • Il callback DNS_QUERY_COMPLETION_ROUTINE viene omesso dal membro pQueryCompleteCallback di pQueryRequest.
  • Una query è relativa al nome del computer locale e A o AAAA digitare Record risorse (RR).
  • Una chiamata a DnsQueryEx esegue query su un indirizzo IPv4 o IPv6.
  • Una chiamata a DnsQueryEx restituisce un errore.
Se una chiamata a DnsQueryEx viene completata in modo asincrono, i risultati della query vengono restituiti dal callback DNS_QUERY_COMPLETION_ROUTINE in pQueryRequest, il membro QueryStatus di pQueryResults contiene DNS_REQUEST_PENDINGe DnsQueryEx restituisce DNS_REQUEST_PENDING. Le applicazioni devono tenere traccia della struttura pQueryResults passata in DnsQueryEx fino a quando il callback DNS non riesce. Le applicazioni possono annullare una query asincrona usando l'handle pCancelHandle restituito da DnsQueryEx.

pCancelHandle restituito da una chiamata asincrona a DnsQueryEx e pQueryContext è valido fino a quando non viene richiamato il callback DNS DNS_QUERY_COMPLETION_ROUTINE.

Nota Le applicazioni ricevono una notifica di completamento DnsQueryEx asincrono tramite il callback DNS_QUERY_COMPLETION_ROUTINE nello stesso contesto di processo.
 

Fabbisogno

Requisito Valore
client minimo supportato Windows 8 [solo app desktop]
server minimo supportato Windows Server 2012 [solo app desktop]
piattaforma di destinazione Finestre
intestazione windns.h
libreria Dnsapi.lib
dll Dnsapi.dll

Vedere anche