Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Запрашивает текущий вектор и набор процессора сопоставленного прерывания для назначенного виртуального устройства 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 |