<!--
{
  "availability" : [
    "DriverKit: 21.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AudioDriverKit",
  "identifier" : "/documentation/AudioDriverKit/IOUserAudioControl",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "AudioDriverKit"
    ],
    "preciseIdentifier" : "c:@S@IOUserAudioControl"
  },
  "title" : "IOUserAudioControl"
}
-->

# IOUserAudioControl

The base class for audio control objects.

```
class IOUserAudioControl;
```

## Overview

Don’t subclass or allocate this class directly.

## Topics

### Creating a Control

[`virtual bool init(IOUserAudioDriver *in_driver, bool in_is_settable, IOUserAudioObjectPropertyElement in_control_element, IOUserAudioObjectPropertyScope in_control_scope);`](/documentation/AudioDriverKit/IOUserAudioControl/init)

Initializes an instance of an audio control.

[`class IOUserAudioDriver;`](/documentation/AudioDriverKit/IOUserAudioDriver)

A DriverKit provider object that manages communications with an audio device.

[`typedef uint32_t IOUserAudioObjectPropertyElement;`](/documentation/AudioDriverKit/AudioDriverKit/IOUserAudioObjectPropertyElement)

A four character code which, along with the selector and scope, identify a specific piece of information about an audio object.

[`enum IOUserAudioObjectPropertyScope : uint32_t;`](/documentation/AudioDriverKit/AudioDriverKit/IOUserAudioObjectPropertyScope)

A four character code which, along with the selector and element, identify a specific piece of information about an audio object.

### Freeing a Control

[`virtual void free();`](/documentation/AudioDriverKit/IOUserAudioControl/free)

Frees the audio control.

### Getting Information About the Class

[`virtual IOUserAudioClassID GetClassID();`](/documentation/AudioDriverKit/IOUserAudioControl/GetClassID)

Gets the audio class identifier of the object.

[`virtual IOUserAudioClassID GetBaseClassID();`](/documentation/AudioDriverKit/IOUserAudioControl/GetBaseClassID)

Gets the audio class identifier of the base class object.

[`enum IOUserAudioClassID : uint32_t;`](/documentation/AudioDriverKit/AudioDriverKit/IOUserAudioClassID)

An identifier for the type of audio object.

### Working with Control Properties

[`IOUserAudioObjectPropertyScope GetControlScope();`](/documentation/AudioDriverKit/IOUserAudioControl/GetControlScope)

Returns the control’s scope: input, output, global, or play-through.

[`enum IOUserAudioObjectPropertyScope : uint32_t;`](/documentation/AudioDriverKit/AudioDriverKit/IOUserAudioObjectPropertyScope)

A four character code which, along with the selector and element, identify a specific piece of information about an audio object.

[`IOUserAudioObjectPropertyElement GetControlElement();`](/documentation/AudioDriverKit/IOUserAudioControl/GetControlElement)

Returns the control’s identifying element.

[`typedef uint32_t IOUserAudioObjectPropertyElement;`](/documentation/AudioDriverKit/AudioDriverKit/IOUserAudioObjectPropertyElement)

A four character code which, along with the selector and scope, identify a specific piece of information about an audio object.

[`constexpr const IOUserAudioObjectPropertyElement IOUserAudioObjectPropertyElementMain;`](/documentation/AudioDriverKit/AudioDriverKit/IOUserAudioObjectPropertyElementMain)

The identifier for an audio object’s main element.

[`bool GetIsSettable();`](/documentation/AudioDriverKit/IOUserAudioControl/GetIsSettable)

Returns a Boolean value that idicates if the control can be set.

## Relationships

### Inherited By

[`IOUserAudioBooleanControl`](/documentation/AudioDriverKit/IOUserAudioBooleanControl)

[`IOUserAudioSliderControl`](/documentation/AudioDriverKit/IOUserAudioSliderControl)

[`IOUserAudioStereoPanControl`](/documentation/AudioDriverKit/IOUserAudioStereoPanControl)

[`IOUserAudioSelectorControl`](/documentation/AudioDriverKit/IOUserAudioSelectorControl)

[`IOUserAudioLevelControl`](/documentation/AudioDriverKit/IOUserAudioLevelControl)

### Inherits From

[`IOUserAudioObject`](/documentation/AudioDriverKit/IOUserAudioObject)

---

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)