IOStorageFamily in DriverKit

Hi,

I would like to update that we have a kext that has IOStorageFamily in OSBundleLibraries. I would like to know whether we can create DriverKit that support this family and embed in SystemExtension for deployment?

and we have another kext that has combination of IOStorageFamily and IOUSBFamily in OSBundleLibraries. Please let me know whether such type of Kext can be converted into DriverKit.

I am new to DriverKit development. Please let us know if there is any sample that has these bundles in DriverKit so that I can check.

Please let us know if such are supported with DriverKit then what are the capabilities that we need to add in entitlement request so that it can get approved.

Thanks & Regards,

Mohmad Vasim

Hi Vasim,

Please check whether USBDriverKit and BlockStorageDeviceDriverKit match your requirements.

For capabilities, you would need this for USB and this for Block Storage.

For sample code, there's not much specific to these frameworks, but you can find the generic ones here.

DriverKit Sample Code - Apple

DriverKit Sample Code - GitHub

I would like to update that we have a kext that has IOStorageFamily in OSBundleLibraries. I would like to know whether we can create DriverKit that supports this family and embed it in SystemExtension for deployment?

And we have another kext that has a combination of IOStorageFamily and IOUSBFamily in OSBundleLibraries.

What are you DEXT actually "doing"? What provider are you matching with, and what does your KEXT actually "do"? Note that OSBundleLibraries isn't always a useful guide to what a KEXT actually "does". Many of those dictionaries are not well constructed, and there are enough implicit driver loads[1] within the boot process that it’s possible to construct a KEXT that works fine even though its OSBundleLibraries configuration is entirely wrong.

Please let me know whether such a type of Kext can be converted into DriverKit.

Thinking in terms of "conversion" is very misleading. DriverKit follows many of IOKit's patterns and reuses some of its infrastructure, which does make a working knowledge of IOKit extremely helpful. However, there are enough major differences in architecture and API that direct conversion is generally not possible.

[1] For example, most storage KEXT don't actually NEED to declare an IOStorage dependency since, unless a KEXT is matching VERY early hardware, the boot volume will load the IOStorage family before your KEXT load ever starts. This dynamic is true of many KEXT families.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware