Свойства Info.plist для расширений ядра

Это приложение описывает свойства, которые можно использовать для kext’s Info.plist файл.

Свойства верхнего уровня

CFBundleIdentifier

CFBundleIdentifier свойство однозначно определяет Ваш kext. Два kexts с тем же значением для этого свойства не могут оба быть загружены в ядро. Значение для этого свойства должно быть в формате обратного DNS, например com.MyCompany.driver.MyDriver для драйвера Набора I/O или org.MyCompany.kext.MyKext для универсального kext.

Это свойство требуется.

CFBundleExecutable

CFBundleExecutable свойство указывает имя исполняемого кода Вашего kext. XCode автоматически создает и заполняет это значение правильно для всех kext проектов, таким образом, Вы не должны должны быть изменять его.

Если Ваш kext содержит исполнимую программу, это свойство требуется. При разработке codeless kext не включайте это свойство.

CFBundleVersion

CFBundleVersion свойство указывает версию Вашего kext. Номера версий Kext должны придерживаться строгого формата:

  • Номер версии разделен на три части к периодам, например 3.1.2.

    Первое число представляет новую главную версию, второе число представляет новую значительную версию, и третье число представляет новое незначительное исправление ошибки.

    Первое число ограничивается четырьмя цифрами; вторые и третьи числа ограничиваются двумя цифрами каждый.

    Если значение третьего числа 0, можно опустить его и второй период.

  • При разработке новой версии kext включайте суффикс после числа, обновляющегося, например 3.1.3a1.

    Буква в суффиксе представляет этап развития, в котором находится новая версия (разработка, альфа, бета или заключительный кандидат, представленный d, a, b, и fc), и число в суффиксе является версией сборки. Версия сборки не может быть 0 или превысьте 255.

    При выпуске новой версии kext удостоверьтесь, что удалили суффикс.

Это свойство требуется.

OSBundleLibraries

OSBundleLibraries свойство является словарем, перечисляющим библиотеку kexts, против которого соединяется Ваш kext.

Каждый элемент в словаре состоит из пары ключ/значение. Ключом является CFBundleIdentifier зависимости (такой как com.apple.kernel.mach), и значение является требуемой версией зависимости. Когда kext собирается быть загруженным, требуемая версия каждого элемента в OSBundleLibraries словарь по сравнению с текущими и совместимыми версиями зависимости. Если требуемая версия находится между текущей версией зависимости и OSBundleCompatibleVersion значение, kext и его зависимости считают совместимыми.

Вы определяете kexts для добавления с kextlibs инструмент командной строки (см., Определяет Зависимости Kext).

Если Ваш kext содержит исполнимую программу, это свойство требуется.

Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).

OSBundleRequired

OSBundleRequired свойство сообщает системе, что Ваш kext должен быть доступен для загрузки во время ранней начальной загрузки. Kexts, не устанавливающие это свойство, не могут загрузиться во время ранней начальной загрузки. Можно указать одно из следующих значений для этого свойства:

Root

Этот kext требуется, чтобы монтировать корень, независимо от того, куда корень прибывает из — например, драйверы платформы и семьи, PCI или USB.

Network-Root

Этот kext требуется, чтобы монтировать корень на удаленном объеме — например, сетевая семья, драйверы Ethernet или NFS.

Local-Root

Этот kext требуется, чтобы монтировать корень на локальном томе — например, семейство систем хранения, дисковые драйверы или файловые системы.

Console

Этот kext требуется, чтобы предоставлять символьную консольную поддержку (однопользовательский режим) — например, драйверы клавиатуры или семья ADB.

Safe Boot

Этот kext требуется даже во время безопасной начальной загрузки (ненужные отключенные расширения) — например, драйверы мыши или графические драйверы.

Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).

OSBundleCompatibleVersion

OSBundleCompatibleVersion свойство используется, чтобы позволить соединиться против kext как библиотека. Это указывает самую старую версию Вашей библиотеки kext, который другой kexts может соединить против и все еще использовать текущую версию успешно.

Необходимо постепенно увеличить значение этого свойства при удалении символа из библиотеки, или когда изменение семантики экспортируемого символа достаточно значительно для влияния на совместимость на уровне двоичных кодов.

Формат этого значения совпадает с форматом CFBundleVersion.

Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).

OSBundleAllowUserLoad

OSBundleAllowUserLoad свойство позволяет некорневым пользователям загружать Ваш kext. Используя это свойство не рекомендуется.

Драйверы Набора I/O никогда не должны включать это свойство, потому что они загружаются ядром, когда они необходимы.

Укажите булево значение истины для включения этой опции.

Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).

OSBundleEnableKextLogging

OSBundleEnableKextLogging свойство указывает, что журналирование информации, определенной для Вашего kext, должно быть зарегистрировано журнал ядра (доступный в /var/log/kernel.log). kextutil инструмент автоматически включает этой опции помочь с отладкой. Укажите булево значение true включить эту опцию. Посмотрите kext_logging для получения дополнительной информации.

Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).

IOKitPersonalities

IOKitPersonalities свойство используется драйверами Набора I/O. Это - вложенный словарь информации, описывающей аппаратные средства, которыми может управлять драйвер.

Посмотрите Свойства IOKitPersonalities для списка свойств для включения в IOKitPersonalities словарь.

Посмотрите Лица Драйвера и Соответствие Языков в Основных принципах IOKit для получения дополнительной информации о лицах.

Это свойство требуется для драйверов Набора I/O.

Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).

Свойства IOKitPersonalities

IOClass

IOClass свойство называет класс C++ для инстанцирования от драйвера, когда это соответствует на куске.

IOKitDebug

IOKitDebug свойство указывает, что I/O Специфичные для набора события, такие как присоединение, соответствие и зондирование должен быть зарегистрирован журнал ядра (доступный в /var/log/kernel.log). Значение этого свойства определяет, какие события регистрируются. Для журналирования всей релевантной информации указать 65535 как значение. Посмотрите IOKitDebug.h (доступный в /System/Library/Frameworks/Kernel.framework/Headers/IOKit) для детализированных значений журналирования.

IOProviderClass

IOProviderClass свойство называет класс C++ объекта устройства Набора I/O, на котором соответствует Ваш драйвер. Это обычно - кусок, управляющий портом, с которым соединяется Ваше устройство. Например, если Ваш драйвер соединяется с шиной PCI, необходимо указать IOPCIDevice как Ваш водительский класс провайдера.

IOMatchCategory

IOMatchCategory свойство позволяет многократным драйверам с уникальными значениями для свойства соответствовать на том же классе провайдера. Как правило, только один драйвер может соответствовать на данном классе провайдера. Включайте это свойство, если Вы соответствуете на IOResources или на порту с многократными устройствами, присоединенными к нему. Значение для этого свойства должно совпасть со значением для CFBundleIdentifier, с периодами, замененными подчеркиваниями (например, com_MyCompany_driver_MyDriver).

IOResourceMatch

IOResourceMatch свойство позволяет Вам объявлять зависимость между своим драйвером и определенным ресурсом, таким как ядро BSD или определенный ресурс на устройстве, как аудио видеоразъем. При обеспечении этого свойства драйвер не загрузится в ядро, пока указанный ресурс не будет доступен.

Архитектурно-зависимые свойства

Верхний уровень kext Info.plist начинающиеся свойства OS или IO имейте архитектурно-зависимые версии, которые можно использовать для дифференциации поведения kext на различной архитектуре. Для указания архитектурно-зависимого свойства добавьте подчеркивание, сопровождаемое именем архитектуры к имени свойства, например, OSBundleCompatibleVersion_x86_64 или OSBundleCompatibleVersion_i386. Удостоверьтесь, что удержали основное свойство Ваш Info.plist файл для назад совместимости.