---
title: IOUserAudioDevice
framework: audiodriverkit
role: symbol
role_heading: Class
path: audiodriverkit/iouseraudiodevice
---

# IOUserAudioDevice

An audio clock device object that handles the configurations for running I/O.

## Declaration

```occ
class IOUserAudioDevice;
```

## Overview

Overview The IOUserAudioDevice class subclasses IOUserAudioClockDevice and can contain IOUserAudioStream instances that perform I/O for the audio device.

## Topics

### Creating an Audio Device

- [Create](audiodriverkit/iouseraudiodevice/create.md)
- [init](audiodriverkit/iouseraudiodevice/init.md)
- [IOUserAudioDriver](audiodriverkit/iouseraudiodriver.md)

### Freeing an Audio Device

- [free](audiodriverkit/iouseraudiodevice/free.md)

### Getting Information About the Class

- [GetClassID](audiodriverkit/iouseraudiodevice/getclassid.md)
- [GetBaseClassID](audiodriverkit/iouseraudiodevice/getbaseclassid.md)
- [IOUserAudioClassID](audiodriverkit/audiodriverkit/iouseraudioclassid.md)

### Performing I/O

- [StartIO](audiodriverkit/iouseraudiodevice/startio.md)
- [StopIO](audiodriverkit/iouseraudiodevice/stopio.md)
- [IOUserAudioStartStopFlags](audiodriverkit/audiodriverkit/iouseraudiostartstopflags.md)

### Supporting Device Configuration Changes

- [PerformDeviceConfigurationChange](audiodriverkit/iouseraudiodevice/performdeviceconfigurationchange.md)
- [AbortDeviceConfigurationChange](audiodriverkit/iouseraudiodevice/abortdeviceconfigurationchange.md)

### Supporting Sample Rate Changes

- [HandleChangeSampleRate](audiodriverkit/iouseraudiodevice/handlechangesamplerate.md)
- [DeviceSampleRateChanged](audiodriverkit/iouseraudiostream/devicesampleratechanged.md)

### Working with Audio Streams

- [AddStream](audiodriverkit/iouseraudiodevice/addstream.md)
- [RemoveStream](audiodriverkit/iouseraudiodevice/removestream.md)
- [IOUserAudioStream](audiodriverkit/iouseraudiostream.md)

### Working with Default Device Behavior

- [SetCanBeDefaultInputDevice](audiodriverkit/iouseraudiodevice/setcanbedefaultinputdevice.md)
- [CanBeDefaultInputDevice](audiodriverkit/iouseraudiodevice/canbedefaultinputdevice.md)
- [SetCanBeDefaultOutputDevice](audiodriverkit/iouseraudiodevice/setcanbedefaultoutputdevice.md)
- [CanBeDefaultOutputDevice](audiodriverkit/iouseraudiodevice/canbedefaultoutputdevice.md)
- [SetCanBeDefaultSystemOutputDevice](audiodriverkit/iouseraudiodevice/setcanbedefaultsystemoutputdevice.md)
- [CanBeDefaultSystemOutputDevice](audiodriverkit/iouseraudiodevice/canbedefaultsystemoutputdevice.md)

### Working with Safety Offset Behvaior

- [SetInputSafetyOffset](audiodriverkit/iouseraudiodevice/setinputsafetyoffset.md)
- [GetInputSafetyOffset](audiodriverkit/iouseraudiodevice/getinputsafetyoffset.md)
- [SetOutputSafetyOffset](audiodriverkit/iouseraudiodevice/setoutputsafetyoffset.md)
- [GetOutputSafetyOffset](audiodriverkit/iouseraudiodevice/getoutputsafetyoffset.md)

### Working with Channel Layouts

- [SetPreferredChannelsForStereo](audiodriverkit/iouseraudiodevice/setpreferredchannelsforstereo.md)
- [GetPreferredChannelsForStereo](audiodriverkit/iouseraudiodevice/getpreferredchannelsforstereo.md)
- [SetPreferredInputChannelLayout](audiodriverkit/iouseraudiodevice/setpreferredinputchannellayout.md)
- [SetPreferredOutputChannelLayout](audiodriverkit/iouseraudiodevice/setpreferredoutputchannellayout.md)
- [IOUserAudioChannelLabel](audiodriverkit/audiodriverkit/iouseraudiochannellabel.md)

### Instance Methods

- [GetCurrentClientIOTime](audiodriverkit/iouseraudiodevice/getcurrentclientiotime.md)
- [SetIOOperationHandler](audiodriverkit/iouseraudiodevice/setiooperationhandler.md)
- [SetWantsStreamFormatsRestored](audiodriverkit/iouseraudiodevice/setwantsstreamformatsrestored.md)

## Relationships

### Inherits From

- [IOUserAudioClockDevice](audiodriverkit/iouseraudioclockdevice.md)

## See Also

### Working with Audio Devices

- [IOUserAudioClockDevice](audiodriverkit/iouseraudioclockdevice.md)
