---
title: StartIO
framework: VideoDriverKit
role: symbol
role_heading: Instance Method
platforms: [driverkit 27.0+]
path: videodriverkit/iouservideodevice/startio
---

# StartIO

Tells the device to start IO.

## Declaration

```occ
virtual kern_return_t StartIO(IOUserVideoStartStopFlags in_flags);
```

## Parameters

- `in_flags`: An IOUserVideoStartStopFlags value that indicates how IO is starting.

## Return Value

Return Value A kern_return_t value indicating whether IO started successfully.

## Discussion

Discussion The default implementation always returns kIOReturnSuccess. Subclass and override this method to handle any hardware-specific things when IO is starting. Then call the superclass implementation to update IO state. This call always completes with a definitive success or failure result. The hardware can take as long as necessary such that it always either succeeds (and returns kIOReturnSuccess) or fails. The system also calls StartIO for all streams added to the device.

## See Also

### Performing I/O

- [StopIO](videodriverkit/iouservideodevice/stopio.md)
- [IOUserVideoStartStopFlags](videodriverkit/videodriverkit/iouservideostartstopflags.md)
- [GetCurrentClientIOTime](videodriverkit/iouservideodevice/getcurrentclientiotime.md)
- [SetIOOperationHandler](videodriverkit/iouservideodevice/setiooperationhandler.md)
- [IOOperationHandler](videodriverkit/videodriverkit/iooperationhandler.md)
