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

# IOUserAudioCustomProperty

A custom property to associate with audio objects.

```
class IOUserAudioCustomProperty;
```

## Overview

Along with the property value, you can provide a qualifier value to further refine get and set operations. For example, if a given property exists on multiple devices, use a device identifier as the qualifier to indicate which device to set the value on.

## Topics

### Creating a Custom Property

[`static OSSharedPtr<IOUserAudioCustomProperty> Create(IOUserAudioDriver *in_audio_driver, IOUserAudioObjectPropertyAddress in_prop_addr, bool in_is_property_settable, IOUserAudioCustomPropertyDataType in_qualifier_data_type, IOUserAudioCustomPropertyDataType in_data_type);`](/documentation/AudioDriverKit/IOUserAudioCustomProperty/Create)

Allocates and initializes an instance of the custom property class.

[`virtual bool init(IOUserAudioDriver *in_audio_driver, IOUserAudioObjectPropertyAddress in_prop_addr, bool in_is_property_settable, IOUserAudioCustomPropertyDataType in_qualifier_data_type, IOUserAudioCustomPropertyDataType in_data_type);`](/documentation/AudioDriverKit/IOUserAudioCustomProperty/init)

Initializes an instance of a custom property.

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

An object that collects the three parts — selector, scope, and element — that identify a specific property.

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

A data and qualifier type used for custom properties.

### Freeing a Custom Property

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

Frees the custom property.

### Getting Information About the Class

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

Gets the audio class identifier of the object.

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

An identifier for the type of audio object.

### Supporting Data Value Changes

[`virtual kern_return_t HandleChangeCustomPropertyDataValueWithQualifier(OSObject *in_qualifier_data, OSObject *in_data);`](/documentation/AudioDriverKit/IOUserAudioCustomProperty/HandleChangeCustomPropertyDataValueWithQualifier)

Tells the property the data value is changing.

### Accessing the Data Value

[`kern_return_t SetQualifierAndDataValue(OSObject *in_qualifier_data, OSObject *in_data);`](/documentation/AudioDriverKit/IOUserAudioCustomProperty/SetQualifierAndDataValue)

Sets the custom property’s data value.

[`virtual kern_return_t GetCustomPropertyValueWithQualifier(OSObject *in_qualifier_data, OSObject **out_data);`](/documentation/AudioDriverKit/IOUserAudioCustomProperty/GetCustomPropertyValueWithQualifier)

Gets the custom property value for a given qualifier.

[`IOUserAudioCustomPropertyInfo GetCustomPropertyInfo();`](/documentation/AudioDriverKit/IOUserAudioCustomProperty/GetCustomPropertyInfo)

Gets a property info object that describes the custom property.

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

A description of a custom property’s data types.

### Infrequently Used Functionality

[`virtual kern_return_t AddCustomProperty(IOUserAudioCustomProperty *in_custom_property);`](/documentation/AudioDriverKit/IOUserAudioCustomProperty/AddCustomProperty)

Attempts to add a custom property to the custom property.

[`virtual kern_return_t RemoveCustomProperty(IOUserAudioCustomProperty *in_custom_property);`](/documentation/AudioDriverKit/IOUserAudioCustomProperty/RemoveCustomProperty)

Attempts to remove a custom property from the custom property.

## Relationships

### 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)