Post

Replies

Boosts

Views

Activity

Reply to How to sending capability requests.
I understand that it is not necessary to include this com.apple.developer.driverkit.allow-any-userclient-access in the driver's Entitlements. I have a new question: I include Capabilities in the Provisioning Profile that might not be used, just in case. If I don't list all these Capabilities in the driver's Entitlements, will it cause the driver to behave abnormally? To issue vendor-specific commands, I created a driver class inheriting from the IOUserSCSIPeripheralDeviceType00 class in the SCSIPeripheralDriverKit Framework. I then created a UserClient inheriting from the IOUserClient class to access it from the app, but IOServiceOpen fails with code 0xe00002d7 and cannot open. The driver's entitlements are as follows. <key>com.apple.developer.driverkit.transport.usb</key> <true/> <key>com.apple.developer.driverkit.family.scsicontroller</key> <true/> <key>com.apple.developer.driverkit.communicates-with-drivers</key> <true/> <key>com.apple.developer.driverkit.allow-third-party-userclients</key> <true/> <key>com.apple.developer.driverkit</key> <true/> And in the driver's Info.plist, the following definitions are specified. <key>IOKitPersonalities</key> <dict> <key>SampleDriverKitDriver</key> <dict> <key>CFBundleIdentifier</key> <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> <key>CFBundleIdentifierKernel</key> <string>com.apple.kpi.iokit</string> <key>IOClass</key> <string>IOSCSIPeripheralDeviceType00</string> <key>IOProbeScore</key> <integer>20000</integer> <key>IOProviderClass</key> <string>IOSCSIPeripheralDeviceNub</string> <key>IOResourceMatch</key> <string>IOKit</string> <key>IOUserClass</key> <string>SampleDriverKitDriver</string> <key>IOUserClientClass</key> <string>SampleDriverKitUserClient</string> <key>IOUserServerName</key> <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> <key>Peripheral Device Type</key> <integer>0</integer> <key>Vendor Identifier</key> <string>[write Device Vendor Name]</string> <key>Product Identifier</key> <string>[write Device Product Name]</string> <key>UserClientProperties</key> <dict> <key>IOClass</key> <string>IOUserUserClient</string> <key>IOUserClass</key> <string>SampleDriverKitUserClient</string> </dict> </dict> </dict> I suspect the code isn't written correctly to generate the UserClient. Is there anything wrong with the code?
Nov ’25
Reply to UserSendCDB fails due to permissions
Kevin, thank you for your reply. Did you call UserSuspendServices() first? That's required to send vendor specific commands? Calling UserSuspendServices() allowed commands to be sent, but it required unmounting storage to execute the command. I want to store the application on the storage and send vendor-specific commands. Is there a way to send commands without unmounting the storage?
Topic: App & System Services SubTopic: Drivers Tags:
3w