For my own edification, I'm trying to read some audio data from a USB audio interface using a DriverKit System Extension.
My IOProviderClass
is IOUSBHostInterface
. I can successfully Open()
the interface, but CopyPipe()
returns kIOReturnError
(0xe00002bc
). Why can't I copy the pipe?
To be able to open the interface at all, I had to outmatch AppleUSBAudio
so my IOKitPersonalities
explicitly match the bConfigurationValue
, bInterfaceNumber
, idVendor
, idProduct
, and bcdDevice
keys. This list may not be minimal.
In ioreg
I can normally see the interfaces (sometimes only my matching one is there, although I think this is a degenerate situation). I see a AppleUserUSBHostHIDDevice
child on some of my other interfaces. Could this be the problem? Normally the device has no problem being both USBAudio and HID. I am trying unsuccessfully to out match HID too.