<!--
{
  "availability" : [
    "macOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Virtualization",
  "identifier" : "/documentation/Virtualization/VZCustomVirtioDeviceConfiguration",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Virtualization"
    ],
    "preciseIdentifier" : "c:objc(cs)VZCustomVirtioDeviceConfiguration"
  },
  "title" : "VZCustomVirtioDeviceConfiguration"
}
-->

# VZCustomVirtioDeviceConfiguration

An object that defines a custom Virtio Device configuration.

```
class VZCustomVirtioDeviceConfiguration
```

## Overview

`VZCustomVirtioDeviceConfiguration` defines the configuration of a [`VZCustomVirtioDevice`](/documentation/Virtualization/VZCustomVirtioDevice).

In order for a guest to be able to discover a Virtio device, you need to configure the following properties in the custom device configuration:

- [`deviceID`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/deviceID)
- [`pciClassID`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/pciClassID)
- [`pciSubclassID`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/pciSubclassID)
- [`virtioQueueCount`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/virtioQueueCount)

The remaining custom device configuration properties define additional features and configurations that are specific to the kind of Virtio device you’re defining.

If the `VZCustomVirtioDeviceConfiguration` you configure is valid, the Virtualization framework creates a [`VZCustomVirtioDevice`](/documentation/Virtualization/VZCustomVirtioDevice) upon the
creation of the [`VZVirtualMachine`](/documentation/Virtualization/VZVirtualMachine). The framework notifies you upon creating the device by calling
[`customVirtioConfiguration(_:didCreateDevice:)`](/documentation/Virtualization/VZCustomVirtioDeviceConfigurationDelegate/customVirtioConfiguration(_:didCreateDevice:)) on the delegate method you provide.

## Topics

### Instance Properties

[`var deviceID: UInt16`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/deviceID)

The Virtio device ID of the device.

[`var deviceSpecificConfiguration: VZVirtioDeviceSpecificConfiguration?`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/deviceSpecificConfiguration)

The device-specific configuration for the device.

[`var mandatoryFeatures: VZVirtioFeatureSet`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/mandatoryFeatures)

The set of mandatory features that the device offers and the guest must accept.

[`var optionalFeatures: VZVirtioFeatureSet`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/optionalFeatures)

The set of optional features that the device offers.

[`var pciClassID: UInt8`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/pciClassID)

The PCI class ID of the device.

[`var pciSubclassID: UInt8`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/pciSubclassID)

The PCI subclass ID of the device.

[`var provider: VZCustomVirtioDeviceProvider?`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/provider)

The custom Virtio device provider.

[`var sharedMemoryRegions: [VZVirtioSharedMemoryRegionConfiguration]`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/sharedMemoryRegions)

The list of shared memory regions.

[`var supportsSaveRestore: Bool`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/supportsSaveRestore)

[`var virtioQueueCount: UInt16`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/virtioQueueCount)

The number of virtqueues (Virtio queues) on this device.

### Type Properties

[`class var maximumAllowedSharedMemoryRegionCount: Int`](/documentation/Virtualization/VZCustomVirtioDeviceConfiguration/maximumAllowedSharedMemoryRegionCount)

The maximum number of Virtio shared memory regions the framework allows.

## See Also

[`class VZCustomVirtioDevice`](/documentation/Virtualization/VZCustomVirtioDevice)

An interface that represents a custom Virtio device that you provide the implementation for.

[`protocol VZCustomVirtioDeviceConfigurationDelegate`](/documentation/Virtualization/VZCustomVirtioDeviceConfigurationDelegate)

A class that conforms to the custom Virtio device configuration delegate protocol that can provide methods
for tracking the state of a custom Virtio device configuration object.

## Relationships

### Conforms To

[`Hashable`](/documentation/Swift/Hashable)

[`CVarArg`](/documentation/Swift/CVarArg)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`Equatable`](/documentation/Swift/Equatable)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`NSCopying`](/documentation/Foundation/NSCopying)

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)