Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Изменяет целевой вектор и набор процессора для ранее сопоставленного прерывания назначенного виртуального устройства 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
WHvRetargetVpciDeviceInterrupt(
_In_ WHV_PARTITION_HANDLE Partition,
_In_ UINT64 LogicalDeviceId,
_In_ UINT64 MsiAddress,
_In_ UINT32 MsiData,
_In_ const WHV_VPCI_INTERRUPT_TARGET* Target
);
Parameters
Partition
Обработайте секцию, которая владеет виртуальным устройством PCI.
LogicalDeviceId
Указывает идентификатор логического устройства виртуального PCI, назначенный при создании устройства.
MsiAddress
Указывает MSI-адрес прерывания для перенацеления, как возвращается WHvMapVpciDeviceInterrupt.
MsiData
Указывает полезные данные MSI прерывания для перенацеления, как возвращается WHvMapVpciDeviceInterrupt.
Target
Указывает указатель на WHV_VPCI_INTERRUPT_TARGET структуру, которая предоставляет новый целевой вектор и набор процессора для прерывания.
Возвращаемое значение
Если функция выполнена успешно, возвращается S_OKзначение.
Функция возвращает E_INVALIDARG значение, если Target->ProcessorCount значение равно 0 или превышает число виртуальных процессоров в секции, если Target->Flags указывает неопределенный флаг, если задано меньше двух целевых процессоров, или если WHvVpciInterruptTargetFlagMulticast процессор больше Target->Processors или равен максимальному количеству виртуальных процессоров, которые может иметь секция. В Arm64 функция возвращается E_INVALIDARG , когда Target->ProcessorCount больше 1, так как гипервизор предназначен для каждого MSI к одному виртуальному процессору в Arm64.
Remarks
Функция WHvRetargetVpciDeviceInterrupt перемещает прерывание, которое ранее сопоставлено с WHvMapVpciDeviceInterrupt новым вектором и набором целевых виртуальных процессоров. Прерывание определяется и MsiData значениямиMsiAddress, возвращаемыми при сопоставлении, поэтому возможность MSI или MSI-X устройства не требуется перепрограммировать.
Перенацеливание отдельного сообщения прерывания MSI с несколькими сообщениями позволяет гостям распределять сообщения одного прерывания между различными наборами процессоров, после того как сообщения были инициализированы с одним целевым WHvMapVpciDeviceInterruptобъектом. Чтобы направить прерывание на нескольких процессорах, установите WHvVpciInterruptTargetFlagMulticast и Target->Flags укажите по крайней мере два процессора в Target->Processors; многоадресная рассылка поддерживается только в x64.
Требования
| Requirement | Ценность |
|---|---|
| Минимальный поддерживаемый Windows | Windows 10 версии 20H2 (x64); Windows 11 версии 24H2, сборка 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| Библиотека | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |