Contents

SCSIControllerDriverKit

Develop drivers for SCSI protocol-based devices.

Overview

The SCSIControllerDriverKit framework supports the development of DriverKit extension (dext) drivers for devices that communicate using SCSI protocols.

Develop your driver by subclassing IOUserSCSIParallelInterfaceController, overriding all methods the framework declares as pure virtual. Then package your driver in an app that uses the System Extensions framework to install and upgrade the driver on a Mac.

Creating a driver

When you subclass IOUserSCSIParallelInterfaceController, update the IOKitPersonalities key of your driver extension’s information property list file with information to match your driver to appropriate hardware. For this class, always include the keys and values in the following table:

Key

Value

CFBundleIDentifier

The bundle ID of your driver

CFBundleIdentifierKernel

com.apple.iokit.IOSCSIParallelFamily

IOClass

IOUserSCSIParallelInterfaceController, the framework class that contains the base behavior

IOUserClass

The name of your custom dext class, a subclass of IOUserSCSIParallelInterfaceController

IOUserServerName

The bundle identifier of your driver, such as com.example.dextname

IOProviderClass

IOPCIDevice

In addition to these required keys, you can include key-value pairs as needed.

The following example shows a minimal entry for the IOKitPersonalities key in the information property list:

<key>IOKitPersonalities</key>
    <dict>
        <key>ExampleDext</key>
        </dict>
            <key>CFBundleIdentifierKernel</key>
            <string>com.apple.iokit.IOSCSIParallelFamily</string>
            <key>CFBundleIdentifier</key>
            <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
            <key>IOClass</key>
            <string>IOUserSCSIParallelInterfaceController</string>
            <key>IOProviderClass</key>
            <string>IOPCIDevice</string>
            <key>IOUserClass</key>
            <string>YourDextClassName</string>
            <key>IOUserServerName</key>
            <string>com.example.dextname</string>
        </dict>
    </dict>
</key>

Topics

Entitlements

Samples

Driver interfaces

Macros