Среда выполнения
Рисунок 1-1 суммирует поток событий, происходящих относительно плагинов, когда Открывают, Directory запускает.
Когда Открывают, Directory запускает, он использует механизм CFBundle для загрузки в память каждого плагина, который он находит в следующих каталогах:
/System/Library/Frameworks/DirectoryService.framework/Resources/Plugins
/Library/DirectoryServices/PlugIns
/Library/DirectoryServices/PlugIns
каталог является рекомендуемым расположением для Вашего плагина.
После того, как плагин загружается, это находится в “загруженное, но не инициализированное” состояние. Для каждого успешно загруженного плагина Откройте вызовы Directory, плагин Инициализирует точку входа. Если плагину не удается инициализировать себя, это находится в “неработающее для инициализации” состояния. Когда плагин успешно инициализирует себя, он вводит «активное» состояние. В ответ на настройки в приложении Доступа Каталога Откройте, Directory может сказать активному плагину становиться неактивным или неактивный плагин для становления активным в любое время.
Загрузка плагинов, не сконфигурированных, чтобы быть загруженными при запуске, задерживается до загрузки плагина, становится абсолютно необходимым, когда, например приложение открывает узел, за который пока еще разгруженный плагин ответственен. Поисковые запросы от клиентов, таких как утилита автоматического монтирования могут также заставить плагин быть загруженным. Этот тип задержанной сменной загрузки, знают как ленивая загрузка.
До OS X v10.4, были загружены плагины, отключенные приложением Доступа Каталога, если событие имело место для инициирования ленивой загрузки. Начиная с OS X v10.4, плагины, отключенные приложением Доступа Каталога, не являются более длинным предметом к ленивой загрузке. Это изменение позволяет отключенным плагинам быть сконфигурированными без риска их непреднамеренно загружаемый.
Плагин, который находится в активном или неактивном состоянии, можно только вызвать через определенные точки входа:
В активном состоянии плагин можно вызвать через его периодическую задачу, запрос процесса, завершение работы, и установил сменные точки входа состояния.
В неактивном состоянии плагин можно вызвать через его периодическую задачу, установил сменное состояние и завершает работу точек входа.
В трех особых случаях неактивный плагин можно вызвать через его точку входа процесса:
когда узел, имеющий то же имя как плагин, открыт для конфигурирования плагина. Например, когда приложение открывает узел, когда неактивный, точку входа процесса плагина LDAPv3 вызывают
/LDAPv3
и вызовыdsDoPluginCustomCall
сконфигурировать плагин.
после того, как плагин загружается и инициализируется для получения
sHeader
структура.fContextData
поле той структуры содержит текущий цикл выполнения демона DirectoryService, который Ваш плагин может использовать для установки таймеров.после того, как плагин загружается и инициализируется для получения взаимного исключения Kerberos.
Точки входа описаны в следующей главе, Требуемых Точках входа