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


Макрос DnsValidateName (windns.h)

Функция DnsValidateName проверяет состояние указанного DNS-имени. Как и многие другие функции DNS, тип функции DnsValidateName реализуется в нескольких формах для упрощения кодировки разных символов. В зависимости от используемой кодировки символов используйте одну из следующих функций:

  • DnsValidateName_A (_A для кодирования ANSI)
  • DnsValidateName_W (_W для кодировки Юникода)
  • DnsValidateName_UTF8 (_UTF8 для кодировки UTF-8)

Синтаксис

void DnsValidateName(
   p,
   f
);

Параметры

p

TBD

f

TBD

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

None

Remarks

Чтобы проверить состояние узла компьютера (одна метка), используйте тип функции DnsValidateName с DnsNameHostnameLabel в поле Формат.

Функция DnsValidateName работает в последовательности при определении наличия ошибки с заданным DNS-именем и возвращается при обнаружении первой ошибки. Таким образом, DNS-имя с несколькими различными ошибками можно сообщить как о первой ошибке, и его можно исправить и повторно отправить, только после этого найти вторую ошибку.

Функция DnsValidateName выполняет поиск ошибок следующим образом:

  1. Возвращает ERROR_INVALID_NAME , если DNS-имя:
    • Длиннее 255 октетов.
    • Содержит метку длиной более 63 октетов.
    • Содержит две или более последовательных точек.
    • Начинается с точки (.).
    • Содержит точку (.), если имя отправлено с параметром Format , равным DnsNameDomainLabel или DnsNameHostnameLabel.
  2. Затем DnsValidateName возвращает DNS_ERROR_NUMERIC_NAME , если полное DNS-имя состоит только из числовых символов (0–9) или первая метка DNS-имени состоит только из числовых символов (0–9), если для параметра Format не задано значение DnsNameDomainLabel или DnsNameDomain.
  3. Затем DnsValidateName возвращает DNS_ERROR_NON_RFC_NAME, если DNS-имя:
    • Содержит по крайней мере один расширенный символ или символ Юникода. Примечание Windows 8 или более поздней версии: DnsValidateName_W не возвращает ошибку, если включено кодирование международного доменного имени (IDN).
    • Содержит символ подчеркивания (_), если только символ подчеркивания не является первым символом в метке, в имени, отправленном с параметром Формат DnsNameSrvRecord.
  4. Затем DnsValidateName возвращает DNS_ERROR_INVALID_NAME_CHAR , если DNS-имя:
    • Содержит пробел.
    • Содержит любой из следующих недопустимых символов: { | } ~ [ \ ] ^ ' : ; < = > ? & @ ! " # $ % ^ ` ( ) + / ,
    • Содержит звездочку (*), если только звездочка не является первой меткой в имени с несколькими метками, отправленной с параметром Format ( DnsNameWildcard).
Примечание Если DnsValidateName возвращает DNS_ERROR_NON_RFC_NAME, ошибка должна обрабатываться как предупреждение о том, что не все DNS-серверы примут имя. При получении этой ошибки обратите внимание, что DNS-сервер принимает отправленное имя, если оно настроено соответствующим образом (конфигурация по умолчанию принимает имя как отправленное при возврате DNS_ERROR_NON_RFC_NAME ), но другое программное обеспечение DNS-сервера может не принимать. DNS-серверы Windows обрабатывают NON_RFC_NAMES.

Если DnsValidateName возвращает любую из следующих ошибок, pszName следует обрабатывать как недопустимое имя узла:

DNS_ERROR_NUMERIC_NAME
DNS_ERROR_INVALID_NAME_CHAR
ERROR_INVALID_NAME
 

Требования

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

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

DNS_NAME_FORMAT

DNS_RECORD

DnsNameCompare

DnsQuery