Свойства Info.plist для расширений ядра
Это приложение описывает свойства, которые можно использовать для kext’s Info.plist файл.
Свойства верхнего уровня
CFBundleIdentifierсвойство однозначно определяет Ваш kext. Два kexts с тем же значением для этого свойства не могут оба быть загружены в ядро. Значение для этого свойства должно быть в формате обратного DNS, напримерcom.MyCompany.driver.MyDriverдля драйвера Набора I/O илиorg.MyCompany.kext.MyKextдля универсального kext.Это свойство требуется.
CFBundleExecutableсвойство указывает имя исполняемого кода Вашего kext. XCode автоматически создает и заполняет это значение правильно для всех kext проектов, таким образом, Вы не должны должны быть изменять его.Если Ваш kext содержит исполнимую программу, это свойство требуется. При разработке codeless kext не включайте это свойство.
CFBundleVersionсвойство указывает версию Вашего kext. Номера версий Kext должны придерживаться строгого формата:Номер версии разделен на три части к периодам, например
3.1.2.Первое число представляет новую главную версию, второе число представляет новую значительную версию, и третье число представляет новое незначительное исправление ошибки.
Первое число ограничивается четырьмя цифрами; вторые и третьи числа ограничиваются двумя цифрами каждый.
Если значение третьего числа
0, можно опустить его и второй период.При разработке новой версии kext включайте суффикс после числа, обновляющегося, например
3.1.3a1.Буква в суффиксе представляет этап развития, в котором находится новая версия (разработка, альфа, бета или заключительный кандидат, представленный
d,a,b, иfc), и число в суффиксе является версией сборки. Версия сборки не может быть0или превысьте255.При выпуске новой версии kext удостоверьтесь, что удалили суффикс.
Это свойство требуется.
OSBundleLibrariesсвойство является словарем, перечисляющим библиотеку kexts, против которого соединяется Ваш kext.Каждый элемент в словаре состоит из пары ключ/значение. Ключом является CFBundleIdentifier зависимости (такой как
com.apple.kernel.mach), и значение является требуемой версией зависимости. Когда kext собирается быть загруженным, требуемая версия каждого элемента вOSBundleLibrariesсловарь по сравнению с текущими и совместимыми версиями зависимости. Если требуемая версия находится между текущей версией зависимости иOSBundleCompatibleVersionзначение, kext и его зависимости считают совместимыми.Вы определяете kexts для добавления с
kextlibsинструмент командной строки (см., Определяет Зависимости Kext).Если Ваш kext содержит исполнимую программу, это свойство требуется.
Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).
OSBundleRequiredсвойство сообщает системе, что Ваш kext должен быть доступен для загрузки во время ранней начальной загрузки. Kexts, не устанавливающие это свойство, не могут загрузиться во время ранней начальной загрузки. Можно указать одно из следующих значений для этого свойства:Этот kext требуется, чтобы монтировать корень, независимо от того, куда корень прибывает из — например, драйверы платформы и семьи, PCI или USB.
Этот kext требуется, чтобы монтировать корень на удаленном объеме — например, сетевая семья, драйверы Ethernet или NFS.
Этот kext требуется, чтобы монтировать корень на локальном томе — например, семейство систем хранения, дисковые драйверы или файловые системы.
Этот kext требуется, чтобы предоставлять символьную консольную поддержку (однопользовательский режим) — например, драйверы клавиатуры или семья ADB.
Этот kext требуется даже во время безопасной начальной загрузки (ненужные отключенные расширения) — например, драйверы мыши или графические драйверы.
RootNetwork-RootLocal-RootConsoleSafe BootЭто свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).
OSBundleCompatibleVersionсвойство используется, чтобы позволить соединиться против kext как библиотека. Это указывает самую старую версию Вашей библиотеки kext, который другой kexts может соединить против и все еще использовать текущую версию успешно.Необходимо постепенно увеличить значение этого свойства при удалении символа из библиотеки, или когда изменение семантики экспортируемого символа достаточно значительно для влияния на совместимость на уровне двоичных кодов.
Формат этого значения совпадает с форматом
CFBundleVersion.Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).
OSBundleAllowUserLoadсвойство позволяет некорневым пользователям загружать Ваш kext. Используя это свойство не рекомендуется.Драйверы Набора I/O никогда не должны включать это свойство, потому что они загружаются ядром, когда они необходимы.
Укажите булево значение истины для включения этой опции.
Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).
OSBundleEnableKextLoggingсвойство указывает, что журналирование информации, определенной для Вашего kext, должно быть зарегистрировано журнал ядра (доступный в/var/log/kernel.log).kextutilинструмент автоматически включает этой опции помочь с отладкой. Укажите булево значениеtrueвключить эту опцию. Посмотритеkext_loggingдля получения дополнительной информации.Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).
IOKitPersonalitiesсвойство используется драйверами Набора I/O. Это - вложенный словарь информации, описывающей аппаратные средства, которыми может управлять драйвер.Посмотрите Свойства IOKitPersonalities для списка свойств для включения в
IOKitPersonalitiesсловарь.Посмотрите Лица Драйвера и Соответствие Языков в Основных принципах IOKit для получения дополнительной информации о лицах.
Это свойство требуется для драйверов Набора I/O.
Это свойство может быть архитектурно-зависимым (см. Архитектурно-зависимые Свойства).
CFBundleIdentifierCFBundleExecutableCFBundleVersionOSBundleLibrariesOSBundleRequiredOSBundleCompatibleVersionOSBundleAllowUserLoadOSBundleEnableKextLoggingIOKitPersonalitiesСвойства IOKitPersonalities
IOClassсвойство называет класс C++ для инстанцирования от драйвера, когда это соответствует на куске.IOKitDebugсвойство указывает, что I/O Специфичные для набора события, такие как присоединение, соответствие и зондирование должен быть зарегистрирован журнал ядра (доступный в/var/log/kernel.log). Значение этого свойства определяет, какие события регистрируются. Для журналирования всей релевантной информации указать65535как значение. ПосмотритеIOKitDebug.h(доступный в/System/Library/Frameworks/Kernel.framework/Headers/IOKit) для детализированных значений журналирования.IOProviderClassсвойство называет класс C++ объекта устройства Набора I/O, на котором соответствует Ваш драйвер. Это обычно - кусок, управляющий портом, с которым соединяется Ваше устройство. Например, если Ваш драйвер соединяется с шиной PCI, необходимо указатьIOPCIDeviceкак Ваш водительский класс провайдера.IOMatchCategoryсвойство позволяет многократным драйверам с уникальными значениями для свойства соответствовать на том же классе провайдера. Как правило, только один драйвер может соответствовать на данном классе провайдера. Включайте это свойство, если Вы соответствуете наIOResourcesили на порту с многократными устройствами, присоединенными к нему. Значение для этого свойства должно совпасть со значением дляCFBundleIdentifier, с периодами, замененными подчеркиваниями (например,com_MyCompany_driver_MyDriver).IOResourceMatchсвойство позволяет Вам объявлять зависимость между своим драйвером и определенным ресурсом, таким как ядро BSD или определенный ресурс на устройстве, как аудио видеоразъем. При обеспечении этого свойства драйвер не загрузится в ядро, пока указанный ресурс не будет доступен.
IOClassIOKitDebugIOProviderClassIOMatchCategoryIOResourceMatchАрхитектурно-зависимые свойства
Верхний уровень kext Info.plist начинающиеся свойства OS или IO имейте архитектурно-зависимые версии, которые можно использовать для дифференциации поведения kext на различной архитектуре. Для указания архитектурно-зависимого свойства добавьте подчеркивание, сопровождаемое именем архитектуры к имени свойства, например, OSBundleCompatibleVersion_x86_64 или OSBundleCompatibleVersion_i386. Удостоверьтесь, что удержали основное свойство Ваш Info.plist файл для назад совместимости.