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


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

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

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

Синтаксис

void DnsValidateName(
   p,
   f
);

Параметры

p

ТБD

f

ТБD

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

Никакой

Замечания

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

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

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

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

См. также

DNS_NAME_FORMAT

DNS_RECORD

DnsNameCompare

DnsQuery