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

# IOCommand

```
class IOCommand;
```

## Overview

\abstract This class is an abstract class which represents an I/O command.
\discussion This class is an abstract class which represents an I/O command passed
from a device driver to a controller. All controller commands (e.g. IOATACommand)
should inherit from this class.

## Topics

### Instance Methods

[`queue_chain_t * CommandChain();`](/documentation/DriverKit/IOCommand/CommandChain)

[`virtual void free();`](/documentation/DriverKit/IOCommand/free)

[`virtual bool init();`](/documentation/DriverKit/IOCommand/init)

### Type Methods

[`static IOCommand * FromChain(queue_chain_t *link);`](/documentation/DriverKit/IOCommand/FromChain)

## Relationships

### Inherits From

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

---

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)