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

# IOUserVideoCustomProperty

A custom property object that can be added to or associated with video objects.

```
class IOUserVideoCustomProperty;
```

## Overview

Custom properties can be added to the following objects: [`IOUserVideoControl`](/documentation/VideoDriverKit/IOUserVideoControl), [`IOUserVideoBox`](/documentation/VideoDriverKit/IOUserVideoBox), [`IOUserVideoStream`](/documentation/VideoDriverKit/IOUserVideoStream),
[`IOUserVideoClockDevice`](/documentation/VideoDriverKit/IOUserVideoClockDevice), [`IOUserVideoDevice`](/documentation/VideoDriverKit/IOUserVideoDevice), [`IOUserVideoDriver`](/documentation/VideoDriverKit/IOUserVideoDriver).
Custom properties have qualifier and data types of
<doc://com.apple.documentation/documentation/DriverKit/OSString>,
<doc://com.apple.documentation/documentation/DriverKit/OSDictionary>,
or <doc://com.apple.documentation/documentation/DriverKit/OSData>.

## Topics

### Creating a custom property

[`static OSSharedPtr<IOUserVideoCustomProperty> Create(IOUserVideoDriver *in_video_driver, IOUserVideoObjectPropertyAddress in_prop_addr, bool in_is_property_settable, IOUserVideoCustomPropertyDataType in_qualifier_data_type, IOUserVideoCustomPropertyDataType in_data_type);`](/documentation/VideoDriverKit/IOUserVideoCustomProperty/Create)

A static factory method that allocates and initializes a custom property.

[`virtual bool init(IOUserVideoDriver *in_video_driver, IOUserVideoObjectPropertyAddress in_prop_addr, bool in_is_property_settable, IOUserVideoCustomPropertyDataType in_qualifier_data_type, IOUserVideoCustomPropertyDataType in_data_type);`](/documentation/VideoDriverKit/IOUserVideoCustomProperty/init)

Initializes a custom property.

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

A data structure that contains all the three parts to identify a specific property,
for easy transmission.

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

Data qualifier types used for custom properties.

### Freeing a custom property

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

Frees the custom property.

### Getting information about the class

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

Gets the class identifier of the object.

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

Video class identifiers of an video object.

### Supporting data value changes

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

The system calls this virtual method when the custom property’s data value changes.

### Accessing the data value

[`kern_return_t SetQualifierAndDataValue(OSObject *in_qualifier_data, OSObject *in_data);`](/documentation/VideoDriverKit/IOUserVideoCustomProperty/SetQualifierAndDataValue)

Sets the custom property’s data value.

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

Gets the custom property value for a given qualifier.

[`IOUserVideoCustomPropertyInfo GetCustomPropertyInfo();`](/documentation/VideoDriverKit/IOUserVideoCustomProperty/GetCustomPropertyInfo)

Gets the custom property information.

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

A description of a
a custom property that allow the Host to marshal the data between the Host and
its clients.

### Working with custom properties

[`virtual kern_return_t AddCustomProperty(IOUserVideoCustomProperty *in_custom_property);`](/documentation/VideoDriverKit/IOUserVideoCustomProperty/AddCustomProperty)

Always returns `kIOReturnError` because a custom property cannot have a custom property.

[`virtual kern_return_t RemoveCustomProperty(IOUserVideoCustomProperty *in_custom_property);`](/documentation/VideoDriverKit/IOUserVideoCustomProperty/RemoveCustomProperty)

Always returns an error, because a custom property cannot have a custom property.

## Relationships

### Inherits From

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

---

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)