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

# IOUserSCSIPeripheralDeviceType07

A DriverKit provider object that works with Type07 devices, those that use extended SCSI Block Commands (SBC) for optical memory devices.

```
class IOUserSCSIPeripheralDeviceType07;
```

## Overview

Subclass this class to create a driver for optical memory devices, such as erasable or rewritable optical disk 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/IOUserSCSIPeripheralDeviceType07/UserSendCDB).

## Topics

### Managing the device

[`virtual kern_return_t UserDetermineDeviceCharacteristics(bool *result);`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType07/UserDetermineDeviceCharacteristics)

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

[`virtual kern_return_t UserResetDevice(SCSIServiceResponse *response);`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType07/UserResetDevice)

Performs a bus reset of the external drive.

### Sending commands to the device

[`virtual kern_return_t UserSendCDB(SCSIType07OutParameters command, SCSIType07InParameters *response);`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType07/UserSendCDB)

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

[`struct SCSIType07OutParameters;`](/documentation/SCSIPeripheralsDriverKit/SCSIType07OutParameters)

Parameters for commands to send to the external SCSI device.

[`typedef enum SCSIType07OutVersion : unsigned int { ... } SCSIType07OutVersion;`](/documentation/SCSIPeripheralsDriverKit/SCSIType07OutVersion)

Constants that represent versions of the Type05 outbound interface.

[`struct SCSIType07InParameters;`](/documentation/SCSIPeripheralsDriverKit/SCSIType07InParameters)

Parameters for responses from the external SCSI device.

[`typedef enum SCSIType07InVersion : unsigned int { ... } SCSIType07InVersion;`](/documentation/SCSIPeripheralsDriverKit/SCSIType07InVersion)

Constants that represent versions of the Type07 inbound interface.

### Providing device metadata

[`virtual kern_return_t UserReportMediumBlockSize(UInt64 *blockSize);`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType07/UserReportMediumBlockSize)

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

### Suspending and resuming services

[`virtual kern_return_t UserSuspendServices();`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType07/UserSuspendServices)

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

[`virtual kern_return_t UserResumeServices();`](/documentation/SCSIPeripheralsDriverKit/IOUserSCSIPeripheralDeviceType07/UserResumeServices)

Resumes normal services after a suspension.

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