<!--
{
  "documentType" : "article",
  "framework" : "Virtualization",
  "identifier" : "/documentation/Virtualization/custom-drivers",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Custom Virtio drivers"
}
-->

# Custom Virtio drivers

Create custom Virtio drivers for Linux virtual machines.

## Topics

### Creating and configuring Virtio drivers

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

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

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

An object that defines a custom Virtio Device configuration.

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

The device-specific configuration for a Virtio device

### Responding to Virtio driver events

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

A custom Virtio Device provider for devices that implement a custom Virtio device configuration delegate.

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

A base class that describes the provider of a custom Virtio device.

### Working with VirtQueues

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

A Virtio queue.

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

A unit of work on a Virtio queue, also known as a descriptor chain.

### Specifying driver features

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

Values that represent a set of Virtio feature bits.

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

Values that represent a set of negotiated Virtio feature bits.

### Managing shared memory

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

A class that represents a Virtio shared memory region for a custom Virtio device in a virtual machine.

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

The configuration of a Virtio shared memory region.

### Responding to Virtio events

[`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.

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

A delegate protocol that defines the methods you implement to respond to the life cycle events of a custom Virtio device.



---

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)