WHvGetVpciDeviceInterruptTarget

Запрашивает текущий вектор и набор процессора сопоставленного прерывания для назначенного виртуального устройства PCI.

Синтаксис

typedef enum WHV_VPCI_INTERRUPT_TARGET_FLAGS
{
    WHvVpciInterruptTargetFlagNone      = 0x00000000,
    WHvVpciInterruptTargetFlagMulticast = 0x00000001,

} WHV_VPCI_INTERRUPT_TARGET_FLAGS;

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

typedef struct WHV_VPCI_INTERRUPT_TARGET
{
    UINT32 Vector;
    WHV_VPCI_INTERRUPT_TARGET_FLAGS Flags;
    UINT32 ProcessorCount;
    UINT32 Processors[ANYSIZE_ARRAY];

} WHV_VPCI_INTERRUPT_TARGET;

HRESULT
WINAPI
WHvGetVpciDeviceInterruptTarget(
    _In_ WHV_PARTITION_HANDLE Partition,
    _In_ UINT64 LogicalDeviceId,
    _In_ UINT32 Index,
    _In_ UINT32 MultiMessageNumber,
    _Out_writes_bytes_to_(TargetSizeInBytes, *BytesWritten) WHV_VPCI_INTERRUPT_TARGET* Target,
    _In_ UINT32 TargetSizeInBytes,
    _Out_opt_ UINT32* BytesWritten
    );

Parameters

Partition

Обработайте секцию, которая владеет виртуальным устройством PCI.

LogicalDeviceId

Указывает идентификатор логического устройства виртуального PCI, назначенный при создании устройства.

Index

Указывает индекс записи прерывания для запроса. Это тот же индекс, который был предоставлен WHvMapVpciDeviceInterrupt при сопоставлении прерывания.

MultiMessageNumber

Указывает сообщение для запроса прерывания MSI с несколькими сообщениями в диапазоне от 0 до 31 включительно. Для одного сообщения MSI или MSI-X прерывания задайте для этого значения значение 0.

Target

Получает структуру, описывающую текущий WHV_VPCI_INTERRUPT_TARGET вектор и набор процессора прерывания.

TargetSizeInBytes

Задает размер буфера Target в байтах.

BytesWritten

Получает количество байтов, записанных в Target буфер. Если функция завершается ошибкой WHV_E_INSUFFICIENT_BUFFER, этот параметр получает требуемый размер буфера. Этот параметр является необязательным и может быть NULL.

Возвращаемое значение

Если функция выполнена успешно, возвращается S_OKзначение.

Функция возвращает E_INVALIDARG значение, если Index значение больше 65535 или MultiMessageNumber больше 31. Функция возвращается WHV_E_INSUFFICIENT_BUFFER , когда Target буфер слишком мал, чтобы сохранить результат. BytesWritten В этом случае получает требуемый размер.

Remarks

Функция WHvGetVpciDeviceInterruptTarget возвращает текущий целевой объект прерывания, сопоставленного с WHvMapVpciDeviceInterrupt или перенацелованным WHvRetargetVpciDeviceInterrupt. Так как WHV_VPCI_INTERRUPT_TARGET заканчивается массивом переменной длины Processors , размер Target буфера для хранения структуры плюс один UINT32 на целевой процессор.

Чтобы определить требуемый размер, вызовите функцию с буфером, который слишком мал и считывает требуемый размер BytesWritten, а затем выделите буфер этого размера и снова вызов.

Требования

Requirement Ценность
Минимальный поддерживаемый Windows Windows 10 версии 20H2 (x64); Windows 11 версии 24H2, сборка 26100.3915 (Arm64)
Header WinHvPlatform.h
Библиотека WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

См. также