<!--
{
  "availability" : [
    "DriverKit: 27.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "VideoDriverKit",
  "identifier" : "/documentation/VideoDriverKit/IOUserVideoDriver/StartDevice",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "VideoDriverKit"
    ],
    "preciseIdentifier" : "c:@S@IOUserVideoDriver@F@StartDevice#i#$@N@VideoDriverKit@E@IOUserVideoStartStopFlags#"
  },
  "title" : "StartDevice"
}
-->

# StartDevice

Tells the driver to start IO on an video device.

```
virtual kern_return_t StartDevice(IOUserVideoObjectID in_object_id, IOUserVideoStartStopFlags in_flags);
```

## Parameters

`in_object_id`

IOUserVideoObjectID of the device to start IO.

`in_flags`

IOUserVideoStartStopFlags to indicate how IO is starting.

## Discussion

The default implementation always returns `kIOReturnSuccess`.
Subclass and override this method to handle any hardware specific things when IO
is starting on the device, then call the superclass implementation to update IO state.
This call is expected to always succeed or fail. The hardware can take as long
as necessary in this call such that it always either succeeds (and `kIOReturnSuccess`) or fails.
StartIO will be called on the video device.

---

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)