Does DriverKit currently offers audio-related APIs instead of IOKit's audio APIs?

According to Information in 2019wwdc, macOS 10.15 will be the last release to fully support kexts

so,I'm trying to convert the virtual audio driver (kext) developed by IOKit into a dext developed by DriverKit,

but I can't find audio driver in the DriverKit description document.


Question1

Does DriverKit currently offers audio-related APIs instead of IOKit's audio APIs? (e.g., IOAudioDevice.h, IOAudioEngine.h)

If DriverKit offers audio-related APIs,give it's link for me


Question2

If DriverKit currently doesn't offer audio-related APIs instead of IOKit's audio APIs

Can MacOS 10.16 or later support virtual audio driver(kext) to load?


From the following information, I think the answer is no.

================================================================================

Information in 2019wwdc:


macOS 10.15 will be the last release to fully support kexts without compromises

For the capabilities and device families supported by System Extensions, using a

Kernel Extension to perform the same function is deprecated

In a future release of macOS, Kernel Extensions of these kinds will not load


https://developer.apple.com/videos/play/wwdc2019/702/

================================================================================

Replies

Hello,

DriverKit does not have an audio specific framework. The DriverKit documentation lists the following frameworks: 'USBDriverKit', 'HIDDriverKit', 'NetworkingDriverKit', 'PCIDriverKit', 'SerialDriverKit', and 'USBSerialDriverKit'.

If this is a 100% USB Audio class compliant device then it should be natively supported by macOS, and a dext (or kext) should not be required. If it's a USB Audio class compliant device, but isn't supported by macOS, then please file a Feedback Assistant report.

If this device...

• isn't USB
  • or-

• is a vendor specific USB device
  • or-

• is a USB Audio class compliant device that has additional functionality that's not supported by Apple's USB Audio class driver,

then it may be possible to create a DriverKit Driver (dext) which supplies/receives audio streams to/from the system.

Assistance with writing software that supplies/receives audio streams to/from the system is best provided by a developer forum that specializes in AV topics, or by submitting a "Technical Support Incident" to DTS. Please note that TSIs submitted to DTS this week may not receive a response until next week (after WWDC.)

Please refer to the "Deprecated Kernel Extensions and System Extension Alternatives" article for a discussion of what KPIs (kernel programming interfaces) are deprecated in macOS 10.15.4.

If your kext uses deprecated KPIs that are mentioned in the "Deprecated Kernel Extensions and System Extension Alternatives" article then please refer to the macOS Big Sur release notes for information about what types of software (e.g., kexts that use deprecated KPIs) are no longer supported.

Best regards

C.
For replacement of the IOAudioFamily type kexts for CoreAudio drivers, you want to look at implementing an AudioServerPlugin CoreAudio driver. For a virtual device, everything you need is there. For a HW device, it will also depend on whether or not DriverKit supports the HW.

See

https://developer.apple.com/library/archive/samplecode/AudioDriverExamples/Introduction/Intro.html
https://developer.apple.com/library/archive/qa/qa1811/_index.html
https://developer.apple.com/forums/thread/122517

and Google search for "AudioServerPlugin" for other sources of details.