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

# IOUserAudioObject

The base class for most classes in the framework.

```
class IOUserAudioObject;
```

## Overview

All classes in the framework subclass [`IOUserAudioObject`](/documentation/AudioDriverKit/IOUserAudioObject), except for [`IOUserAudioDriver`](/documentation/AudioDriverKit/IOUserAudioDriver), which subclasses <doc://com.apple.documentation/documentation/DriverKit/IOService> from <doc://com.apple.documentation/documentation/DriverKit>.

Don’t subclass or instantiate [`IOUserAudioObject`](/documentation/AudioDriverKit/IOUserAudioObject) directly.

## Topics

### Creating an Audio Object

[`virtual bool init(IOUserAudioDriver *in_audio_driver);`](/documentation/AudioDriverKit/IOUserAudioObject/init-1ar2z)

Initializes an instance of the audio object base class.

[`virtual bool init();`](/documentation/AudioDriverKit/IOUserAudioObject/init-26qwx)

Initializes an empty object.

### Freeing an Audio Object

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

Frees the audio object.

### Getting Information About the Class

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

Gets the audio class identifier of the object.

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

[`IOUserAudioObjectID GetObjectID();`](/documentation/AudioDriverKit/IOUserAudioObject/GetObjectID)

Gets the object’s identifier.

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

An identifier that provides a handle on a specific audio object.

[`OSSharedPtr<IODispatchQueue> GetWorkQueue();`](/documentation/AudioDriverKit/IOUserAudioObject/GetWorkQueue)

Gets the work queue created by the audio object, as a pointer to a dispatch queue.

### Working with Object Names

[`OSSharedPtr<OSString> GetName();`](/documentation/AudioDriverKit/IOUserAudioObject/GetName)

Gets the name of the object.

[`kern_return_t SetName(OSString *in_name);`](/documentation/AudioDriverKit/IOUserAudioObject/SetName)

Sets the name of the object.

### Using Custom Properties

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

Adds a custom property to the audio object.

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

Removes a previously-added custom property object from the audio object.

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

A custom property to associate with audio objects.

### Instance Methods

[`OSSharedPtr<OSString> GetElementCategoryName(IOUserAudioObjectPropertyElement in_element, IOUserAudioObjectPropertyScope in_scope);`](/documentation/AudioDriverKit/IOUserAudioObject/GetElementCategoryName)

[`OSSharedPtr<OSString> GetElementName(IOUserAudioObjectPropertyElement in_element, IOUserAudioObjectPropertyScope in_scope);`](/documentation/AudioDriverKit/IOUserAudioObject/GetElementName)

[`OSSharedPtr<OSString> GetElementNumberName(IOUserAudioObjectPropertyElement in_element, IOUserAudioObjectPropertyScope in_scope);`](/documentation/AudioDriverKit/IOUserAudioObject/GetElementNumberName)

[`IOUserAudioObjectID GetOwnerObjectID();`](/documentation/AudioDriverKit/IOUserAudioObject/GetOwnerObjectID)

[`kern_return_t SetElementCategoryName(IOUserAudioObjectPropertyElement in_element, IOUserAudioObjectPropertyScope in_scope, OSString *in_category_name);`](/documentation/AudioDriverKit/IOUserAudioObject/SetElementCategoryName)

[`kern_return_t SetElementName(IOUserAudioObjectPropertyElement in_element, IOUserAudioObjectPropertyScope in_scope, OSString *in_name);`](/documentation/AudioDriverKit/IOUserAudioObject/SetElementName)

[`kern_return_t SetElementNumberName(IOUserAudioObjectPropertyElement in_element, IOUserAudioObjectPropertyScope in_scope, OSString *in_number_name);`](/documentation/AudioDriverKit/IOUserAudioObject/SetElementNumberName)

## Relationships

### Inherited By

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

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

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

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

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

### Inherits From

[`OSObject`](/documentation/DriverKit/OSObject)

---

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)