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

# IOUserAudioSelectorControl

A control object that supports selecting from a set of values.

```
class IOUserAudioSelectorControl;
```

## Topics

### Creating a Selector Control

[`static OSSharedPtr<IOUserAudioSelectorControl> Create(IOUserAudioDriver *in_driver, bool in_is_settable, IOUserAudioObjectPropertyElement in_control_element, IOUserAudioObjectPropertyScope in_control_scope, IOUserAudioClassID in_control_class_id);`](/documentation/AudioDriverKit/IOUserAudioSelectorControl/Create)

Allocates and initializes an instance of the selector control class.

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

Initializes an instance of a selector 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 Selector Control

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

Frees the selector control.

### Getting Information About the Class

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

Gets the audio class identifier of the object.

[`virtual IOUserAudioClassID GetBaseClassID();`](/documentation/AudioDriverKit/IOUserAudioSelectorControl/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.

### Supporting Value Changes

[`virtual kern_return_t HandleChangeSelectedValues(const IOUserAudioSelectorValue *in_control_values, size_t in_num_values);`](/documentation/AudioDriverKit/IOUserAudioSelectorControl/HandleChangeSelectedValues)

Tells the selection control the value is changing.

### Accessing the Selected Values

[`kern_return_t SetCurrentSelectedValues(const IOUserAudioSelectorValue *in_values, size_t in_num_values);`](/documentation/AudioDriverKit/IOUserAudioSelectorControl/SetCurrentSelectedValues)

Sets the current selections of the selector.

[`size_t GetCurrentSelectedValues(IOUserAudioSelectorValue *out_values, size_t in_num_values);`](/documentation/AudioDriverKit/IOUserAudioSelectorControl/GetCurrentSelectedValues)

Gets the current selections of the selector.

[`size_t GetControlValuesCount();`](/documentation/AudioDriverKit/IOUserAudioSelectorControl/GetControlValuesCount)

Gets the number of available selector values.

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

The type of values managed by a selector control.

[`kern_return_t AddControlValueDescriptions(const IOUserAudioSelectorValueDescription *in_value_descriptions, size_t in_num_value_descriptions);`](/documentation/AudioDriverKit/IOUserAudioSelectorControl/AddControlValueDescriptions)

Add value descriptions to the selector control.

[`kern_return_t RemoveControlValueDescriptions(const IOUserAudioSelectorValueDescription *in_value_descriptions, size_t in_num_value_descriptions);`](/documentation/AudioDriverKit/IOUserAudioSelectorControl/RemoveControlValueDescriptions)

Removes value descriptions from the selector control.

[`size_t GetControlValueDescriptions(IOUserAudioSelectorValueDescription *out_control_value_descriptions, size_t in_num_value_descriptions);`](/documentation/AudioDriverKit/IOUserAudioSelectorControl/GetControlValueDescriptions)

Gets value descriptions used by the selector control.

[`struct IOUserAudioSelectorValueDescription;`](/documentation/AudioDriverKit/IOUserAudioSelectorValueDescription)

A type that describes a value in a selection control.

## Relationships

### Inherits From

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

---

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)