<!--
{
  "availability" : [
    "DriverKit: 22.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SCSIPeripheralsDriverKit",
  "identifier" : "/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType00",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "SCSIPeripheralsDriverKit"
    ],
    "preciseIdentifier" : "c:@S@IOUserSCSIPeripheralDeviceType00"
  },
  "title" : "IOUserSCSIPeripheralDeviceType00"
}
-->

# IOUserSCSIPeripheralDeviceType00

A DriverKit provider object that works with type 00 devices, those that use SCSI Block Commands (SBC).

```
class IOUserSCSIPeripheralDeviceType00;
```

## Overview

Subclass this class to create a driver for direct-access block devices, such as magnetic disks and solid-state drives. In your subclass, override all pure virtual methods.

Use the functions in [SCSI commands](/documentation/SCSIPeripheralsDriverKit/scsi-commands) to populate Command Descriptor Blocks (CDBs) that you send to the device with [`UserSendCDB`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType00/UserSendCDB).

## Topics

### Managing the device

[`UserDetermineDeviceCharacteristics`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType00/UserDetermineDeviceCharacteristics)

Performs enumeration-time initializations in response to a call from the framework.

[`UserResetDevice`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType00/UserResetDevice)

Performs a bus reset of the external drive.

### Sending commands to the device

[`UserSendCDB`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType00/UserSendCDB)

Sends a vendor-specific Command Descriptor Block (CDB) to the device.

[`SCSIType00OutParameters`](/documentation/SCSIPeripheralsDriverKit/SCSIType00OutParameters)

Parameters for commands to send to the external SCSI device.

[`SCSIType00OutVersion`](/documentation/SCSIPeripheralsDriverKit/SCSIType00OutVersion)

Constants that represent versions of the type 00 outbound interface.

[`SCSIType00InParameters`](/documentation/SCSIPeripheralsDriverKit/SCSIType00InParameters)

Parameters for responses from the external SCSI device.

[`SCSIType00InVersion`](/documentation/SCSIPeripheralsDriverKit/SCSIType00InVersion)

Constants that represent versions of the type 00 inbound interface.

### Suspending and resuming services

[`UserSuspendServices`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType00/UserSuspendServices)

Suspends services and allows the dext to communicate with the external drive.

[`UserResumeServices`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType00/UserResumeServices)

Resumes normal services after a suspension.

### Providing device metadata

[`UserReportMediumBlockSize`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType00/UserReportMediumBlockSize)

Provides a report on the external device’s block size.

## Relationships

### Inherits From

[`IOService`](/documentation/DriverKit/IOService)

---

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-policy)