IOKit user-space framework migration to DriverKit (in Catalina and above)

Hello everyone,


I'm looking for some clarification about the IOKit user-space framework in Catalina and above.


As far as I understand DriverKit framework and System Extensions run in user space, rather than as kernel extensions, which improves system stability and security.


However, the IOKit framework also works in user space. It seems that this also does not affect the security of the kernel.


So I access the usb from the app and don't use my own driver.


Is IOKit framework migration(to DriverKit) necessary to support MacOSx10.16?

Apple have given no indication that the IOKit framework for user access to USB devices (IOKit/usb/IOUSBLib.h) is going away. ''


The IOKit and DriverKit frameworks serve different purposes.


If you have a USB device which performs a function for your own application, you can use user-space USB to access it. If you want third party applications to be able to use your device, you have to


a. provide your code in source form to third parties or

b. provide a library, or

c. document the USB commands and responses and hope that those third parties come to grips with your device.


However, if your device provides a common function, such as networking, serial ports, video input or audio I/O, there are standard interfaces for these. Ideally, your USB device would perform its standard functions in a fully standard manner, and could be driven by built-in class drivers.


However, somef real-world devices have idiosyncrasies or enhancements at the bus level which preclude the use of standard class drivers. On 10.14 and earlier, a kext can be used to convert a non-standard bus interface into a standard system interface. On 10.15 and later, a dext can (theoretically) perform the same function. Currently documentation and example code is sorely lacking (although some DriverKit documentation has appeared fairly recently).

IOKit user-space framework migration to DriverKit (in Catalina and above)
 
 
Q