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?
Post
Replies
Boosts
Views
Activity
Hello everyone,
I'm trying to migrate from KEXT to DEXT. My USB device should not be matched by the classic driver (in the other case, it does not allow to open the device and interface).
I am using a sample USB application for testing.
So, before installing the system extension, I was able to see 1 device and 3 interfaces. However, when I install the system extension (next), I can not find any interfaces. They seem to be lost. To search for interfaces I use the command “ioreg -lirc IOUSBHostInterface”.
Any idea why this could happen?
my driver Info.plist file
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENTLANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLENAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCTBUNDLEIDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCTNAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCTBUNDLEPACKAGETYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>IOKitPersonalities</key>
<dict>
<key>MyUserUSBInterfaceDriver</key>
<dict>
<key>CFBundleIdentifier</key>
<string>$(PRODUCTBUNDLEIDENTIFIER)</string>
<key>IOClass</key>
<string>IOService</string>
<key>IOProviderClass</key>
<string>IOUSBHostDevice</string>
<key>IOUserClass</key>
<string>MyUserUSBInterfaceDriver</string>
<key>IOUserServerName</key>
<string>sc.knight.MyUserUSBInterfaceDriver</string>
<key>idProduct</key>
<integer>4</integer>
<key>idVendor</key>
<integer>10978</integer>
</dict>
</dict>
<key>OSBundleUsageDescription</key>
<string>Example user space USB driver</string>
</dict>
</plist>
and driver entitlements file
<plist version="1.0">
<dict>
<key>com.apple.developer.driverkit</key>
<true/>
<key>com.apple.developer.driverkit.transport.usb</key>
<array>
<dict>
<key>idVendor</key>
<integer>10978</integer>
<key>idProduct</key>
<integer>4</integer>
</dict>
</array>
</dict>
</plist>
Results of the "ioreg -lirc IOUSBHostDevice" command after installing the extension. As you can see... 0 interfaces
admins-MBP:USBApp-updated-master-2 copy admin$ ioreg -lirc IOUSBHostDevice
-o VXi Point@14300000 <class IORegistryEntry:IOService:IOUSBNub:IOUSBDevice, id 0x100000657, registered, matched, active, busy 0 (210 ms), retain 20>
.......
| }
|
-o AppleUSBHostLegacyClient <class IORegistryEntry:IOService:AppleUSBHostLegacyClient, id 0x10000065a, !registered, !matched, active, busy 0, retain 8>.
| {
| "IOPowerManagement" = {"DevicePowerState"=0,"CurrentPowerState"=1,"CapabilityFlags"=65536,"MaxPowerState"=2,"DriverPowerState"=1}
| }
|
-o MyUserUSBInterfaceDriver <class IORegistryEntry:IOService, id 0x10000065d, !registered, !matched, active, busy 0, retain 7>
	{
......	}