---
title: StartDevice
framework: VideoDriverKit
role: symbol
role_heading: Instance Method
platforms: [driverkit 27.0+]
path: videodriverkit/iouservideodriver/startdevice
---

# StartDevice

Tells the driver to start IO on an video device.

## Declaration

```occ
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

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.

## See Also

### Starting and stopping the driver

- [StopDevice](videodriverkit/iouservideodriver/stopdevice.md)
- [IOUserVideoObjectID](videodriverkit/videodriverkit/iouservideoobjectid.md)
- [IOUserVideoStartStopFlags](videodriverkit/videodriverkit/iouservideostartstopflags.md)
