WHvCreateVpciDevice

Crea un dispositivo PCI virtual (VPCI) y asigna sus recursos a una partición.

Syntax

typedef enum WHV_CREATE_VPCI_DEVICE_FLAGS
{
    WHvCreateVpciDeviceFlagNone = 0x00000000,
    WHvCreateVpciDeviceFlagPhysicallyBacked = 0x00000001,
    WHvCreateVpciDeviceFlagUseLogicalInterrupts = 0x00000002
} WHV_CREATE_VPCI_DEVICE_FLAGS;

// Enables bitwise operators on the WHV_CREATE_VPCI_DEVICE_FLAGS enumeration.
DEFINE_ENUM_FLAG_OPERATORS(WHV_CREATE_VPCI_DEVICE_FLAGS);

HRESULT
WINAPI
WHvCreateVpciDevice(
    _In_ WHV_PARTITION_HANDLE Partition,
    _In_ UINT64 LogicalDeviceId,
    _In_ HANDLE VpciResource,
    _In_ WHV_CREATE_VPCI_DEVICE_FLAGS Flags,
    _In_opt_ HANDLE NotificationEventHandle
    );

Parameters

Partition

Identificador del objeto de partición.

LogicalDeviceId

Especifica un identificador único para el dispositivo dentro del ámbito de la partición.

VpciResource

Controle a un recurso VPCI asignado previamente que respalda el dispositivo virtual. Obtenga este identificador de WHvAllocateVpciResource.

Flags

Especifica las características opcionales del dispositivo que se van a crear, como una combinación de WHV_CREATE_VPCI_DEVICE_FLAGS valores.

NotificationEventHandle

Especifica un identificador opcional para un evento que se indica para notificar al autor de la llamada de eventos asincrónicos asociados al dispositivo VPCI. Cuando se señale el evento, recupere las notificaciones pendientes con WHvGetVpciDeviceNotification.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es S_OK.

Remarks

La WHvCreateVpciDevice función crea un dispositivo PCI virtual y asigna los recursos físicos o virtuales identificados por VpciResource a la partición. Una vez completada esta llamada, la IOMMU se programa para que el identificador del solicitante PCI de la función física o virtual que respalda el dispositivo se asigne al dominio de partición, reasignando las operaciones DMA que se originan desde esa función al espacio de direcciones de la partición.

Asigne el recurso con WHvAllocateVpciResource antes de llamar a esta función. Una vez creado el dispositivo, asigne sus intervalos MMIO con WHvMapVpciDeviceMmioRanges y sus interrupciones con WHvMapVpciDeviceInterrupt. Destruye el dispositivo con WHvDeleteVpciDevice.

Requisitos

Requirement Value
Windows mínima admitidas Windows 10, versión 20H2 (x64); Windows 11, versión 24H2, compilación 26100.3915 (Arm64)
Header WinHvPlatform.h
Biblioteca WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

Consulte también