DnsQueryEx 함수(windns.h)

DnsQueryEx 함수는 DNS 네임스페이스에 대한 비동기 제네릭 쿼리 인터페이스입니다. 애플리케이션 개발자에게 DNS 쿼리 확인 인터페이스를 제공합니다.

DnsQuery와 마찬가지로 DnsQueryEx를 사용하여 DNS 네임스페이스에 대한 동기 쿼리도 수행할 수 있습니다.

구문

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

매개 변수

[in] pQueryRequest

쿼리 요청 정보를 포함하는 DNS_QUERY_REQUEST 또는 DNS_QUERY_REQUEST3 구조체에 대한 포인터입니다.

참고 이 구조체의 pQueryCompleteCallback 멤버에서 DNS_QUERY_COMPLETION_ROUTINE 콜백을 생략하면 DnsQueryEx가 동기적으로 호출됩니다.
 

[in, out] pQueryResults

쿼리 결과를 포함하는 DNS_QUERY_RESULT 구조체에 대한 포인터입니다. 입력 시 pQueryResults버전 멤버는 DNS_QUERY_RESULTS_VERSION1 다른 모든 멤버는 NULL이어야 합니다. 출력에서 나머지 멤버는 쿼리 완료의 일부로 채워집니다.

참고 비동기 쿼리의 경우 애플리케이션은 DNS_QUERY_COMPLETION_ROUTINE 콜백이 호출될 때까지 이 구조를 해제해서는 안 됩니다. 쿼리가 완료되면 DNS_QUERY_RESULT 구조에는 DnsRecordListFree를 사용하여 해제해야 하는 DNS_RECORDS 목록에 대한 포인터가 포함됩니다.
 

[in, out, optional] pCancelHandle

보류 중인 비동기 쿼리를 취소하는 데 사용할 수 있는 DNS_QUERY_CANCEL 구조체에 대한 포인터입니다.

참고 애플리케이션은 DNS_QUERY_COMPLETION_ROUTINE 콜백이 호출될 때까지 이 구조를 해제해서는 안 됩니다.
 

반환 값

DnsQueryEx 함수에는 다음과 같은 가능한 반환 값이 있습니다.

반환 코드 설명
ERROR_SUCCESS
호출이 성공했습니다.
ERROR_INVALID_PARAMETER
pQueryRequest 또는 pQueryRequest 매개 변수가 초기화되지 않았거나 잘못된 버전을 포함합니다.
DNS RCODE
호출로 인해 RCODE 오류가 발생했습니다.
DNS_INFO_NO_RECORDS
응답에 레코드가 없습니다.
DNS_REQUEST_PENDING
쿼리는 비동기적으로 완료됩니다.

설명

DnsQueryEx 호출이 동기적으로 완료되면(즉, 함수 반환 값이 DNS_REQUEST_PENDING 않음) pQueryResults의 pQueryRecords 멤버는 DNS_RECORDS 목록에 대한 포인터를 포함하고 DnsQueryEx는 오류 또는 성공을 반환합니다.

다음 조건은 DnsQueryEx 에 대한 동기 호출을 호출하고 DNS 콜백을 활용하지 않습니다.

  • DNS_QUERY_COMPLETION_ROUTINE 콜백은 pQueryRequestpQueryCompleteCallback 멤버에서 생략됩니다.
  • 쿼리는 로컬 컴퓨터 이름 및 A 또는AAAA 형식 RR(리소스 레코드)에 대한 것입니다.
  • DnsQueryEx 호출은 IPv4 또는 IPv6 주소를 쿼리합니다.
  • DnsQueryEx에 대한 호출이 오류로 반환됩니다.
DnsQueryEx에 대한 호출이 비동기적으로 완료되면 pQueryRequestDNS_QUERY_COMPLETION_ROUTINE 콜백에서 쿼리 결과가 반환되고 pQueryResultsQueryStatus 멤버는 DNS_REQUEST_PENDING 포함되며 DnsQueryExDNS_REQUEST_PENDING 반환합니다. 애플리케이션은 DNS 콜백이 성공할 때까지 DnsQueryEx에 전달되는 pQueryResults 구조를 추적해야 합니다. 애플리케이션은 DnsQueryEx에서 반환된 pCancelHandle 핸들을 사용하여 비동기 쿼리를 취소할 수 있습니다.

dnsQueryExpQueryContext에 대한 비동기 호출에서 반환된 pCancelHandleDNS_QUERY_COMPLETION_ROUTINE DNS 콜백이 호출될 때까지 유효합니다.

참고 애플리케이션은 동일한 프로세스 컨텍스트 내에서 DNS_QUERY_COMPLETION_ROUTINE 콜백을 통해 비동기 DnsQueryEx 완료 알림을 받습니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 windns.h
라이브러리 Dnsapi.lib
DLL Dnsapi.dll

추가 정보