<!--
{
  "availability" : [
    "DriverKit: 21.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AudioDriverKit",
  "identifier" : "/documentation/AudioDriverKit/IOUserAudioDevice/StartIO",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "AudioDriverKit"
    ],
    "preciseIdentifier" : "c:@S@IOUserAudioDevice@F@StartIO#$@N@AudioDriverKit@E@IOUserAudioStartStopFlags#"
  },
  "title" : "StartIO"
}
-->

# StartIO

Tells the device to start I/O.

```
virtual kern_return_t StartIO(IOUserAudioStartStopFlags in_flags);
```

## Parameters

`in_flags`

A `IOUserAudioStartStopFlag` to indicate I/O startup behavior.

## Return Value

<doc://com.apple.documentation/documentation/DriverKit/kIOReturnSuccess> on success, or another value if an error occurs. For a list of error codes, see <doc://com.apple.documentation/documentation/DriverKit/error-codes>.

## Discussion

The default implementation always returns <doc://com.apple.documentation/documentation/DriverKit/kIOReturnSuccess>.

Subclass and override this method to handle hardware-specific tasks during I/O startup, then call the superclass to update the I/O state. The framework expects this call to always succeed or fail. The hardware can take as long as it needs in this call, provided it always either succeeds or fails.

All streams added to the device also receive a call to their [`StartIO`](/documentation/AudioDriverKit/IOUserAudioStream/StartIO) methods.

---

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)