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