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

# IOUserVideoSelectorControl

A control object that supports a 32-bit unsigned integer selector value.

```
class IOUserVideoSelectorControl;
```

## Topics

### Creating a selector control

[`static OSSharedPtr<IOUserVideoSelectorControl> Create(IOUserVideoDriver *in_driver, bool in_is_settable, IOUserVideoObjectPropertyElement in_control_element, IOUserVideoObjectPropertyScope in_control_scope, IOUserVideoClassID in_control_class_id);`](/documentation/VideoDriverKit/IOUserVideoSelectorControl/Create)

A static factory method that allocates and initializes a selector control.

[`virtual bool init(IOUserVideoDriver *in_driver, bool in_is_settable, IOUserVideoObjectPropertyElement in_control_element, IOUserVideoObjectPropertyScope in_control_scope, IOUserVideoClassID in_control_class_id);`](/documentation/VideoDriverKit/IOUserVideoSelectorControl/init)

Initializes a selector control.

[`class IOUserVideoDriver;`](/documentation/VideoDriverKit/IOUserVideoDriver)

A video driver.

[`typedef uint32_t IOUserVideoObjectPropertyElement;`](/documentation/VideoDriverKit/VideoDriverKit/IOUserVideoObjectPropertyElement)

An integer that identifies,
along with the property selector and scope,
a specific piece of information about a video object.

[`enum IOUserVideoObjectPropertyScope : uint32_t;`](/documentation/VideoDriverKit/VideoDriverKit/IOUserVideoObjectPropertyScope)

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

### Freeing a selector control

[`virtual void free();`](/documentation/VideoDriverKit/IOUserVideoSelectorControl/free)

Frees the selector control.

### Getting information about the class

[`virtual IOUserVideoClassID GetClassID();`](/documentation/VideoDriverKit/IOUserVideoSelectorControl/GetClassID)

Gets the class identifier of the object.

[`virtual IOUserVideoClassID GetBaseClassID();`](/documentation/VideoDriverKit/IOUserVideoSelectorControl/GetBaseClassID)

Gets the class identifier of the base class object.

[`enum IOUserVideoClassID : uint32_t;`](/documentation/VideoDriverKit/VideoDriverKit/IOUserVideoClassID)

Video class identifiers of an video object.

### Supporting value changes

[`virtual kern_return_t HandleChangeSelectedValues(const IOUserVideoSelectorValue *in_control_values, size_t in_num_values);`](/documentation/VideoDriverKit/IOUserVideoSelectorControl/HandleChangeSelectedValues)

The system calls this virtual method when the control’s selected values change.

### Accessing the value

[`kern_return_t SetCurrentSelectedValues(const IOUserVideoSelectorValue *in_values, size_t in_num_values);`](/documentation/VideoDriverKit/IOUserVideoSelectorControl/SetCurrentSelectedValues)

Sets the current control value.

[`size_t GetCurrentSelectedValues(IOUserVideoSelectorValue *out_values, size_t in_num_values);`](/documentation/VideoDriverKit/IOUserVideoSelectorControl/GetCurrentSelectedValues)

Gets the current selected values of the control.

[`typedef uint32_t IOUserVideoSelectorValue;`](/documentation/VideoDriverKit/IOUserVideoSelectorValue)

Selector value for controls.

[`size_t GetControlValuesCount();`](/documentation/VideoDriverKit/IOUserVideoSelectorControl/GetControlValuesCount)

Gets the number of available selector control values.

[`kern_return_t AddControlValueDescriptions(const IOUserVideoSelectorValueDescription *in_value_descriptions, size_t in_num_value_descriptions);`](/documentation/VideoDriverKit/IOUserVideoSelectorControl/AddControlValueDescriptions)

Adds control value descriptions to the selector control.

[`kern_return_t RemoveControlValueDescriptions(const IOUserVideoSelectorValueDescription *in_value_descriptions, size_t in_num_value_descriptions);`](/documentation/VideoDriverKit/IOUserVideoSelectorControl/RemoveControlValueDescriptions)

Removes selector control values from the selector control.

[`size_t GetControlValueDescriptions(IOUserVideoSelectorValueDescription *out_control_value_descriptions, size_t in_num_value_descriptions);`](/documentation/VideoDriverKit/IOUserVideoSelectorControl/GetControlValueDescriptions)

Gets the selector values for the control.

[`struct IOUserVideoSelectorValueDescription;`](/documentation/VideoDriverKit/IOUserVideoSelectorValueDescription)

A selector control’s value and name.

## Relationships

### Inherits From

[`IOUserVideoControl`](/documentation/VideoDriverKit/IOUserVideoControl)

---

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)