Среда выполнения

Рисунок 1-1 суммирует поток событий, происходящих относительно плагинов, когда Открывают, Directory запускает.

Рисунок 1-1  Открывает запуск Directory и сменные состояния
Open Directory startup and plug-in states

Когда Открывают, Directory запускает, он использует механизм CFBundle для загрузки в память каждого плагина, который он находит в следующих каталогах:

/Library/DirectoryServices/PlugIns каталог является рекомендуемым расположением для Вашего плагина.

После того, как плагин загружается, это находится в “загруженное, но не инициализированное” состояние. Для каждого успешно загруженного плагина Откройте вызовы Directory, плагин Инициализирует точку входа. Если плагину не удается инициализировать себя, это находится в “неработающее для инициализации” состояния. Когда плагин успешно инициализирует себя, он вводит «активное» состояние. В ответ на настройки в приложении Доступа Каталога Откройте, Directory может сказать активному плагину становиться неактивным или неактивный плагин для становления активным в любое время.

Загрузка плагинов, не сконфигурированных, чтобы быть загруженными при запуске, задерживается до загрузки плагина, становится абсолютно необходимым, когда, например приложение открывает узел, за который пока еще разгруженный плагин ответственен. Поисковые запросы от клиентов, таких как утилита автоматического монтирования могут также заставить плагин быть загруженным. Этот тип задержанной сменной загрузки, знают как ленивая загрузка.

До OS X v10.4, были загружены плагины, отключенные приложением Доступа Каталога, если событие имело место для инициирования ленивой загрузки. Начиная с OS X v10.4, плагины, отключенные приложением Доступа Каталога, не являются более длинным предметом к ленивой загрузке. Это изменение позволяет отключенным плагинам быть сконфигурированными без риска их непреднамеренно загружаемый.

Плагин, который находится в активном или неактивном состоянии, можно только вызвать через определенные точки входа:

В трех особых случаях неактивный плагин можно вызвать через его точку входа процесса:

Точки входа описаны в следующей главе, Требуемых Точках входа