Compartir a través de


Función DnsQueryEx (windns.h)

La función dnsQueryEx es la interfaz de consulta genérica asincrónica al espacio de nombres DNS. Proporciona a los desarrolladores de aplicaciones una interfaz de resolución de consultas DNS.

Al igual que DnsQuery, también se puede usar DnsQuery Ex para realizar consultas sincrónicas en el espacio de nombres DNS.

Sintaxis

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

Parámetros

[in] pQueryRequest

Puntero a una estructura DNS_QUERY_REQUEST o DNS_QUERY_REQUEST3 que contiene la información de solicitud de consulta.

Nota Si se omite la devolución de llamada DNS_QUERY_COMPLETION_ROUTINE de la pQueryCompleteCallback miembro de esta estructura, dnsQueryEx se denomina sincrónicamente.
 

[in, out] pQueryResults

Puntero a una estructura DNS_QUERY_RESULT que contiene los resultados de la consulta. En la entrada, la versión de miembro del pQueryResults debe ser DNS_QUERY_RESULTS_VERSION1 y todos los demás miembros deben ser NULL. En la salida, los miembros restantes se rellenarán como parte de la consulta completada.

Nota Para consultas asincrónicas, una aplicación no debe liberar esta estructura hasta que se invoque la devolución de llamada DNS_QUERY_COMPLETION_ROUTINE. Cuando se completa la consulta, la estructura DNS_QUERY_RESULT contiene un puntero a una lista de DNS_RECORDS que se debe liberar mediante DnsRecordListFree.
 

[in, out, optional] pCancelHandle

Puntero a una estructura DNS_QUERY_CANCEL que se puede usar para cancelar una consulta asincrónica pendiente.

Nota Una aplicación no debe liberar esta estructura hasta que se invoque la devolución de llamada DNS_QUERY_COMPLETION_ROUTINE.
 

Valor devuelto

La función DnsQueryEx tiene los siguientes valores devueltos posibles:

Código devuelto Descripción
ERROR_SUCCESS
La llamada se realizó correctamente.
ERROR_INVALID_PARAMETER
Los parámetros pQueryRequest o pQueryRequest no están inicializados o contienen la versión incorrecta.
de RCODE de DNS de
La llamada produjo un error de RCODE.
DNS_INFO_NO_RECORDS
No hay registros en la respuesta.
DNS_REQUEST_PENDING
La consulta se completará de forma asincrónica.

Observaciones

Si una llamada a DnsQueryEx se completa de forma sincrónica (es decir, el valor devuelto de la función no es DNS_REQUEST_PENDING), el miembro pQueryRecords de pQueryResults contiene un puntero a una lista de DNS_RECORDS y DnsQueryEx devolverá errores o correctos.

Las condiciones siguientes invocan una llamada sincrónica a dnsQueryEx y no usan la devolución de llamada DNS:

  • La devolución de llamada DNS_QUERY_COMPLETION_ROUTINE se omite del miembro pQueryCompleteCallback de pQueryRequest.
  • Una consulta es para el nombre del equipo local y A o AAAA escriba Registros de recursos (RR).
  • Una llamada a DnsQueryEx consulta una dirección IPv4 o IPv6.
  • Una llamada a dnsQueryEx devuelve un error.
Si una llamada a DnsQueryEx se completa de forma asincrónica, los resultados de la consulta se devuelven mediante la devolución de llamada DNS_QUERY_COMPLETION_ROUTINE en pQueryRequest, el miembro QueryStatus de pQueryResults contiene DNS_REQUEST_PENDINGy DnsQueryEx devuelve DNS_REQUEST_PENDING. Las aplicaciones deben realizar un seguimiento de la estructura pQueryResults que se pasa a DnsQueryEx hasta que la devolución de llamada DNS se realice correctamente. Las aplicaciones pueden cancelar una consulta asincrónica mediante el identificador de de pCancelHandle devuelto por DnsQueryEx.

pCancelHandle devuelto desde una llamada asincrónica a DnsQueryEx y pQueryContext es válido hasta que se invoca la devolución de llamada DNS de DNS_QUERY_COMPLETION_ROUTINE.

Nota Aplicaciones reciben una notificación de la finalización asincrónica de DnsQueryEx a través de la devolución de llamada de DNS_QUERY_COMPLETION_ROUTINE dentro del mismo contexto de proceso.
 

Requisitos

Requisito Valor
cliente mínimo admitido Windows 8 [solo aplicaciones de escritorio]
servidor mínimo admitido Windows Server 2012 [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de windns.h
biblioteca de Dnsapi.lib
DLL de Dnsapi.dll

Consulte también