﻿<!--
{
  "availability" : [
    "DriverKit: 20.4.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SCSIControllerDriverKit",
  "identifier" : "/documentation/SCSIControllerDriverKit",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "SCSIControllerDriverKit"
    ],
    "preciseIdentifier" : "SCSIControllerDriverKit"
  },
  "title" : "SCSIControllerDriverKit"
}
-->

# 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`](/documentation/SCSIControllerDriverKit/IOUserSCSIParallelInterfaceController), overriding all methods the framework declares as pure virtual. Then package your driver in an app that uses the <doc://com.apple.documentation/documentation/SystemExtensions> framework to install and upgrade the driver on a Mac.

### Creating a driver

When you subclass [`IOUserSCSIParallelInterfaceController`](/documentation/SCSIControllerDriverKit/IOUserSCSIParallelInterfaceController), update the <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/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:

```xml
<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>
```

> Note:
> SCSIControllerDriverKit is available on macOS.

## Topics

### Entitlements

  <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.developer.driverkit>

  <doc://com.apple.documentationdocumentation/bundleresources/entitlements/com.apple.developer.driverkit.transport.pci>

  <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.developer.driverkit.family.scsicontroller>

### Samples

  <doc://com.apple.documentation/documentation/DriverKit/driverkit-sample-code>

### Driver interfaces

[`class IOUserSCSIParallelInterfaceController;`](/documentation/SCSIControllerDriverKit/IOUserSCSIParallelInterfaceController)

A DriverKit provider object that manages communications with SCSI-based devices.

### Macros

[Macros](/documentation/SCSIControllerDriverKit/SCSIControllerDriverKit-macros)



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-poli