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

# IOUserVideoBox

A container
for other objects.

```
class IOUserVideoBox;
```

## Overview

The objects in a video box are typically [`IOUserVideoDevice`](/documentation/VideoDriverKit/IOUserVideoDevice)
and [`IOUserVideoClockDevice`](/documentation/VideoDriverKit/IOUserVideoClockDevice) objects. An
[`IOUserVideoBox`](/documentation/VideoDriverKit/IOUserVideoBox) publishes identifying information about itself and can be enabled or
disabled. A box’s contents are only available to the system when the box is enabled.

## Topics

### Creating a video box

[`static OSSharedPtr<IOUserVideoBox> Create(IOUserVideoDriver *in_driver, bool in_is_acquirable, OSString *in_box_uid);`](/documentation/VideoDriverKit/IOUserVideoBox/Create)

Static factory method to allocate and initialize a user video box.

[`virtual bool init(IOUserVideoDriver *in_driver, bool in_is_acquirable, OSString *in_box_uid);`](/documentation/VideoDriverKit/IOUserVideoBox/init)

Initializes a video box.

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

A video driver.

### Freeing a video device

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

Frees the IOUserVideoBox.

### Getting information about the class

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

Gets the class identifier of the object

[`virtual IOUserVideoClassID GetBaseClassID();`](/documentation/VideoDriverKit/IOUserVideoBox/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.

### Identifying the box

[`OSSharedPtr<OSString> GetUID();`](/documentation/VideoDriverKit/IOUserVideoBox/GetUID)

Gets the unique identifier of the video box.

### Managing box contents

[`kern_return_t AddDevice(IOUserVideoDevice *in_device);`](/documentation/VideoDriverKit/IOUserVideoBox/AddDevice)

Adds a video device to the video box.

[`kern_return_t RemoveDevice(IOUserVideoDevice *in_device);`](/documentation/VideoDriverKit/IOUserVideoBox/RemoveDevice)

Removes a video device from the video box.

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

A video device.

[`kern_return_t AddClockDevice(IOUserVideoClockDevice *in_clock_device);`](/documentation/VideoDriverKit/IOUserVideoBox/AddClockDevice)

Adds a clock device video box.

[`kern_return_t RemoveClockDevice(IOUserVideoClockDevice *in_clock_device);`](/documentation/VideoDriverKit/IOUserVideoBox/RemoveClockDevice)

Removes aa clock device from the video box.

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

A clock device.

### Managing protection state

[`kern_return_t SetIsProtected(bool in_is_protected);`](/documentation/VideoDriverKit/IOUserVideoBox/SetIsProtected)

Sets the value indicating the box’s protection state.

[`bool IsProtected();`](/documentation/VideoDriverKit/IOUserVideoBox/IsProtected)

A Boolean value indicating if box is protected.

### Managing acquirability

[`virtual kern_return_t HandleChangeAcquireBox(bool in_acquire);`](/documentation/VideoDriverKit/IOUserVideoBox/HandleChangeAcquireBox)

Called when host is attempting to the change the box acquisition

[`kern_return_t SetIsAcquired(bool in_is_acquired);`](/documentation/VideoDriverKit/IOUserVideoBox/SetIsAcquired)

Sets the value indicating the box’s acquisition state.

[`bool IsAcquired();`](/documentation/VideoDriverKit/IOUserVideoBox/IsAcquired)

A Boolean value indicating if box is acquired.

[`kern_return_t SetIsAcquirable(bool in_is_acquirable);`](/documentation/VideoDriverKit/IOUserVideoBox/SetIsAcquirable)

Sets the value for the box’s acquirability.

[`bool IsAcquirable();`](/documentation/VideoDriverKit/IOUserVideoBox/IsAcquirable)

A Boolean value indicating if box can be acquired.

[`kern_return_t SetAcquisitionFailure(kern_return_t in_failure_code);`](/documentation/VideoDriverKit/IOUserVideoBox/SetAcquisitionFailure)

Sets the error for the box’s acquisition failure.

[`kern_return_t GetAcquisitionFailure();`](/documentation/VideoDriverKit/IOUserVideoBox/GetAcquisitionFailure)

Gets the acquisition failure of the video box.

### Determining media support

[`kern_return_t SetHasAudio(bool in_has_audio);`](/documentation/VideoDriverKit/IOUserVideoBox/SetHasAudio)

Sets the value indicating the box’s audio support.

[`bool HasAudio();`](/documentation/VideoDriverKit/IOUserVideoBox/HasAudio)

A Boolean value indicating if box has audio capabilities.

[`kern_return_t SetHasVideo(bool in_has_video);`](/documentation/VideoDriverKit/IOUserVideoBox/SetHasVideo)

Sets the value indicating the box’s video support.

[`bool HasVideo();`](/documentation/VideoDriverKit/IOUserVideoBox/HasVideo)

A Boolean value indicating if box has video capabilities.

[`kern_return_t SetHasMIDI(bool in_has_midi);`](/documentation/VideoDriverKit/IOUserVideoBox/SetHasMIDI)

Sets the value indicating the box’s MIDI support

[`bool HasMIDI();`](/documentation/VideoDriverKit/IOUserVideoBox/HasMIDI)

A Boolean value indicating if box has MIDI capabilities.

### Working with transport types

[`IOUserVideoTransportType GetTransportType();`](/documentation/VideoDriverKit/IOUserVideoBox/GetTransportType)

Gets the transport type of the video box.

[`kern_return_t SetTransportType(IOUserVideoTransportType in_transport_type);`](/documentation/VideoDriverKit/IOUserVideoBox/SetTransportType)

Sets the transport type of the IOUserVideoBox.

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

The transport type of a video stream.

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