Описание тега driverkit
Основная информация
DriverKit - это среда разработки драйверов устройств для операционной системы MacOS от Apple, представленная в macOS 10.15 "Catalina".
Пакет DriverKit SDK содержится в дистрибутиве Apple Xcode IDE (начиная с версии 11 и далее) и используется для создания так называемых "расширений драйверов" или "декста", которые выполняются в процессах специального привилегированного пространства пользователя. Эти расширения устанавливаются приложениями с помощью механизма системных расширений.
Пакет DriverKit SDK взаимодействует с более широкой инфраструктурой IOKit как в ядре, так и в общем пользовательском пространстве.
особенности
Начиная с macOS 10.15, с помощью DriverKit можно реализовать следующие типы драйверов:
- Вождение USB-устройств
- Делаем последовательный порт доступным для системы
- Делаем сетевой адаптер доступным для системы
- Управление устройствами HID и предоставление их доступа к системе.
Начиная с macOS 10.15.4, могут быть дополнительно реализованы следующие типы драйверов:
- Подключение устройств PCI(e)/Thunderbolt
Соответствующие темы вопросов
- Вопросы о том, какая технология драйвера является правильной для реализации драйвера для конкретного устройства. Помимо DriverKit, драйверы в macOS также могут быть реализованы с использованием kext (расширения ядра) или как обычный процесс пользовательского пространства, в зависимости от технологии базового устройства (USB, PCI, Firewire и т. Д.), Типа устройства (хранилище, сеть, звук, дисплей и т. д.), а также целевые версии macOS.
- Вопросы, связанные с процессом сборки, подписи кода и упаковки дексов. Есть некоторые совпадения с
macos-system-extension
, использование обоих может быть уместным, когда речь идет о процессе установки / активации и API. - Вопросы на уровне кода для реализации драйверов на основе DriverKit. Совместное тегирование с
hid
,usb
,pci
и т. д. по мере необходимости при обсуждении конкретных типов устройств. - Вопросы о взаимодействии драйверов DriverKit с остальной частью системы, будь то kexts или клиенты пользовательского пространства. Обычно это перекрывается
iokit
тег.