다음을 통해 공유


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

추가 정보