Replacing CoreMediaIO DAL Plug-in with Camera Extension + DriverKit Extension

Hello,

According to Create camera extensions with Core Media IO from WWDC2002, one can use driverkit-extension (dext) to communicate with hardware. Does it mean there will be a .dext and a .systemextension in the SystemExtensions folder and they both need to be activated via user prompt separately?

We looked into Communicating Between a DriverKit Extension and a Client App and USBApp as our starting point. With NewUserClient implemented, we could open our dext via IOServiceOpen in a user space program.

We have been unable to apply similar approach in a cameraextension code sample with the sandbox violation: Violation: deny(1) iokit-open-user-client IOUserUserClient

In the plist we did add com.apple.security.temporary-exception.iokit-user-client-class entitlement array with IOUserUserClient like in our other test app.

Our goal is to let CMIOExtension exchange data / information with our usb device via function calls like IOConnectCallAsyncStructMethod upon successful opening our userClient

Has anyone run into similar problem or is this not the right way to do it?

Thanks for your time.

Replying to my own post...

It was my own mistake.

    <key>com.apple.security.temporary-exception.iokit-user-client-class</key>
    <array>
        <string>IOUserUserClient</string>
    </array>

The above entitlement does work. Now we just need to figure out whether USBDriverkit (dext) + camera extension (CMIOExtension) is the right approach.

Replacing CoreMediaIO DAL Plug-in with Camera Extension + DriverKit Extension
 
 
Q