Поделиться через


функция DnsQuery_A (windns.h)

Тип функции DnsQuery является универсальным интерфейсом запроса к пространству имен DNS и предоставляет разработчикам приложений интерфейс разрешения запросов DNS. Как и многие другие функции DNS, тип функции DnsQuery реализуется в нескольких формах для упрощения кодировки разных символов. В зависимости от используемой кодировки символов используйте одну из следующих функций:

  • DnsQuery_A (для кодировки ANSI)
  • DnsQuery_W (для кодировки Юникода)
  • DnsQuery_UTF8 (для кодировки UTF-8)
Windows 8. Если приложению требуются асинхронные запросы к пространству имен DNS, следует использовать функцию DnsQueryEx .

Синтаксис

DNS_STATUS DnsQuery_A(
  [in]                PCSTR       pszName,
  [in]                WORD        wType,
  [in]                DWORD       Options,
  [in, out, optional] PVOID       pExtra,
  [out, optional]     PDNS_RECORD *ppQueryResults,
  [out, optional]     PVOID       *pReserved
);

Параметры

[in] pszName

Указатель на строку, представляющую DNS-имя для запроса.

[in] wType

Значение типа , представляющее запрашиваемый тип записи DNS (RR). wType определяет формат данных, на которые указывает ppQueryResultsSet. Например, если значение wType равно DNS_TYPE_A, формат данных, на который указывает ppQueryResultsSet , будет DNS_A_DATA.

[in] Options

Значение типа , содержащее растровое изображение параметров запроса DNS для использования в запросе DNS. Параметры можно объединять, и все параметры переопределяют DNS_QUERY_STANDARD.

[in, out, optional] pExtra

Этот параметр зарезервирован для использования в будущем и должен иметь значение NULL.

[out, optional] ppQueryResults

Необязательный элемент. Указатель на указатель, указывающий на список запросов запросов, составляющих ответ. Дополнительные сведения см. в разделе «Примечания».

[out, optional] pReserved

Этот параметр зарезервирован для использования в будущем и должен иметь значение NULL.

Возвращаемое значение

Возвращает подтверждение успешного выполнения после успешного завершения. В противном случае возвращает соответствующий код ошибки DNS, как определено в Winerror.h.

Комментарии

Приложения, вызывающие функцию DnsQuery , создают запрос с использованием полного DNS-имени и типа записи ресурса (RR) и задают параметры запроса в зависимости от требуемого типа службы. Если задан параметр DNS_QUERY_STANDARD , DNS использует кэш сопоставителя, сначала запрашивает UDP, а затем повторяет попытку с помощью TCP, если ответ усечен, и запрашивает, чтобы сервер выполнил рекурсивное разрешение от имени клиента для разрешения запроса.

Приложения должны освобождать возвращаемые наборы RR с помощью функции DnsRecordListFree .

Примечание При вызове одного из типов функции DnsQuery следует учитывать, что DNS-сервер может возвращать несколько записей в ответ на запрос. Например, компьютер с несколькими адресами получит несколько записей A для одного и того же IP-адреса. Вызывающий объект должен использовать столько возвращаемых записей, сколько необходимо.
 
Рассмотрим следующий сценарий, в котором несколько возвращенных записей требуют дополнительных действий от имени приложения: вызов функции DnsQuery_A выполняется для многосетвого компьютера, и приложение обнаруживает, что адрес, связанный с первой записью A, не отвечает. Затем приложение должно попытаться использовать другие IP-адреса, указанные в (дополнительных) записях A, возвращаемых из вызова функции DnsQuery_A .

Если параметр lpstrName имеет значение NULL, функция DnsQuery завершается ошибкой INVALID_PARAMETER.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header windns.h
Библиотека Dnsapi.lib
DLL Dnsapi.dll

См. также раздел

DNS_RECORD

DnsQueryEx

DnsRecordListFree