DriverKit
Develop device drivers that run in user space.
Mentioned in
Overview
The DriverKit framework defines the fundamental behaviors for device drivers in macOS and iPadOS. The C++ classes of this framework define your driver’s basic structure, and provide support for handling events and allocating memory. This framework also supports appropriate types for examining the numbers, strings, and other types of data in your driver’s I/O registry entry. Other frameworks, such as USBDriverKit, HIDDriverKit, NetworkingDriverKit, PCIDriverKit, SerialDriverKit, and AudioDriverKit, provide the specific behaviors you need to support different types of devices.
The drivers you build with DriverKit run in user space, rather than as kernel extensions, which improves system stability and security. You create your driver as an app extension and deliver it inside your existing app.
In macOS, use the System Extensions framework to install and upgrade your driver. In iPadOS, the system automatically discovers and upgrades drivers along with their host apps.
Topics
Essentials
Entitlements
Requesting Entitlements for DriverKit Developmentcom.apple.developer.driverkitcom.apple.developer.driverkit.userclient-accesscom.apple.developer.driverkit.allow-any-userclient-accessCommunicates with DriversDriverKit Allow Third Party User Clients
Samples
Services
Event management
IODispatchQueueIOInterruptDispatchSourceIOTimerDispatchSourceIODataQueueDispatchSourceIODispatchSourceOSAction
Memory management
Registry data types
OSArrayOSDictionaryOSBooleanOSDataOSNumberOSStringOSSerializationOSCollectionOSContainerOSObjectOSSymbolIOFixed
External drivers
IOUserClientIOUserServercom.apple.developer.driverkit.userclient-accessCommunicating between a DriverKit extension and a client app
Runtime support
OSDynamicCastOSRequiredCastIMPLTYPEQUEUENAMESUPERDISPATCHIIG_KERNELLOCALLOCALONLYError CodesC++ Runtime Support
Classes
IOHistogramReporterIOReportLegendIOReporterIOServiceStateNotificationDispatchSourceIOSimpleReporterIOStateReporterOSBundleOSMappedFile
Reference
DriverKit StructuresDriverKit EnumerationsDriverKit ConstantsDriverKit FunctionsDriverKit Data TypesDriverKit Namespaces
Macros
MacroskIOPropertyHashTypeKeykIOPropertySHA3256KeykIOPropertySHA3384KeykIOPropertySHA3512KeykIOUserServrMaxExitReasonLengthkIOUserServrMaxModulePathLengthkIOUserServrMaxPanicReasonLengthqueue_extend_firstqueue_extend_last
Functions
Enumeration Cases
kIOServicePMAssertionCPUBitkIOServicePMAssertionForceFullWakeupBitkIOServicePowerCapabilityLPWkSCSICmd_ATA_PASS_THROUGHkSCSICmd_ATA_PASS_THROUGH_EXT