---
title: Create
framework: VideoDriverKit
role: symbol
role_heading: Static Method
platforms: [driverkit 27.0+]
path: videodriverkit/iouservideocustomproperty/create
---

# Create

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

## Declaration

```occ
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);
```

## Parameters

- `in_video_driver`: The IOUserVideoDriver that owns this object.
- `in_prop_addr`: The IOUserVideoObjectPropertyAddress of the custom property.
- `in_is_property_settable`: Bool value that indicates if the property can be set.
- `in_qualifier_data_type`: The IOUserVideoCustomPropertyDataType for custom property’s qualifier data value
- `in_data_type`: The IOUserVideoCustomPropertyDataType for custom property’s data value. Value cannot be IOUserVideoCustomPropertyDataType::None

## Return Value

Return Value OSSharedPtr to an IOUserVideoBooleanControl if it was successfully allocated and initialized

## Discussion

Discussion If IOUserVideoCustomProperty is subclassed to override behavior, don’t use this method to allocate or initialize the custom subclass.

## See Also

### Creating a custom property

- [init](videodriverkit/iouservideocustomproperty/init.md)
- [IOUserVideoObjectPropertyAddress](videodriverkit/videodriverkit/iouservideoobjectpropertyaddress.md)
- [IOUserVideoCustomPropertyDataType](videodriverkit/videodriverkit/iouservideocustompropertydatatype.md)
