Перечисление доменов
DNSServiceEnumerateDomains функция находит домены, рекомендующиеся для регистрации и просмотра. Каждый раз, когда Ваш обратный вызов вызывают, информация об одном домене предоставлена, вместе с флагами, указывающими, добавить ли или удалить домен из Вашего списка доменов или указав, что домен является доменом по умолчанию или больше не является доменом по умолчанию.
Параметры для вызова DNSServiceEnumerateDomainsсостойте из следующего:
Неинициализированная ссылка открытия службы
Флаг, указывающий, хотите ли Вы перечислить рекомендуемый регистрационные домены или просмотр
Интерфейсный индекс, указывающий интерфейс для перечисления; передача
0перечислить домены во всех интерфейсах или положительном целом числе для указания интерфейса, в котором можно перечислить домены (используютif_nametoindexсемья вызовов для получения индекса интерфейса Вы хотите перечислить),Функция обратного вызова, которую нужно вызвать для предоставления информации об успешности или неуспешности перечисления
Определяемое пользователем значение контекста, которое будет передано функции обратного вызова, когда это вызовут, или
NULL
Если перечисление может быть запущено, DNSServiceEnumerateDomains инициализирует ссылку открытия службы и создает сокет, использующийся для передачи с mDNSResponder демон. Используйте ссылку открытия службы на вызов DNSServiceRefSockFD и получите дескриптор сокета для сокета.
Установите цикл выполнения или a select цикл с помощью дескриптора сокета. Когда цикл указывает что ответ от mDNSResponder демон доступен, вызвать DNSServiceProcessResult и передайте ему ссылку открытия службы, инициализированную DNSServiceEnumerateDomains. DNSServiceProcessResult вызовет функцию обратного вызова, связанную со ссылкой открытия службы.
Вместо того, чтобы настроить выполнение или select цикл, можно вызвать DNSServiceEnumerate и сразу вызовите DNSServiceProcessResult. DNSServiceProcessResult функция блокирует до mDNSResponder у демона есть ответ, при котором времени обратный вызов указал когда DNSServiceEnumerate был вызван будет вызван.
Ваш обратный вызов вызовут со следующими параметрами:
Ссылка открытия службы, переданная
DNSServiceEnumerateDomainsФлаги, указывающие, вызовут ли Ваш обратный вызов снова сразу для передачи информации о другом домене, найденном, добавить ли или удалить этот домен из списка, который приложение ведет, и добавить ли или удалить домен как домен по умолчанию
Индекс интерфейса, в котором был найден домен
Код ошибки, указывающий, было ли перечисление успешно; если перечисление было успешно, другие параметры содержат допустимые данные
Имя найденного домена
Определяемая пользователем контекстная информация, переданная
DNSServiceEnumerateDomains
Цикл выполнения или select цикл будет уведомлен для каждого рекомендуемого домена, перечисленного на основе на интерфейс и каждый раз, когда домен добавлен или удален. Вы ответственны за сборку ответов демона в список текущих рекомендуемых доменов.
Для завершения перечисления удалите дескриптор сокета из цикла выполнения или select цикл и вызов DNSServiceRefDeallocate, передача ему ссылка открытия службы, инициализированная когда DNSServiceEnumerateDomains был вызван. Ссылка открытия службы лишена законной силы, и память, связанная со ссылкой, освобождена. Сокет, лежащий в основе соединения с mDNSResponder демон закрывается, таким образом завершая соединение Вашего приложения с демоном.