割り当てられた仮想 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 デバイスの論理デバイス ID を指定します。
MsiAddress
WHvMapVpciDeviceInterruptによって返される、再ターゲットする割り込みの MSI アドレスを指定します。
MsiData
WHvMapVpciDeviceInterruptによって返される、再ターゲットする割り込みの MSI データ ペイロードを指定します。
Target
割り込みの新しいターゲット ベクターとプロセッサ セットを提供する WHV_VPCI_INTERRUPT_TARGET 構造体へのポインターを指定します。
戻り値
関数が成功した場合、戻り値は S_OK。
この関数は、Target->ProcessorCountが 0 またはパーティション内の仮想プロセッサの数を超える場合、Target->Flagsが未定義のフラグを指定した場合、WHvVpciInterruptTargetFlagMulticastが 2 つ未満のターゲット プロセッサと共に設定されている場合、またはTarget->Processorsのプロセッサがパーティションに含めることができる仮想プロセッサの最大数以上の場合に、E_INVALIDARGを返します。 Arm64 では、ハイパーバイザーが各 MSI を Arm64 上の 1 つの仮想プロセッサにターゲットしているため、Target->ProcessorCountが 1 より大きい場合、関数はE_INVALIDARGを返します。
Remarks
WHvRetargetVpciDeviceInterrupt関数は、以前にWHvMapVpciDeviceInterruptにマップされた割り込みを、新しいベクトルとターゲット仮想プロセッサのセットに移動します。 割り込みは、割り込みがマップされたときに返される MsiAddress 値と MsiData 値によって識別されるため、デバイスの MSI または MSI-X 機能を再プログラミングする必要はありません。
マルチメッセージ MSI 割り込みの個々のメッセージのターゲットを変更すると、ゲストは、メッセージがすべて WHvMapVpciDeviceInterrupt によって同じターゲットで初期化された後に、異なるプロセッサ セット間で 1 つの割り込みのメッセージを分散できます。 複数のプロセッサで割り込みを送信するには、Target->FlagsにWHvVpciInterruptTargetFlagMulticastを設定し、Target->Processorsで少なくとも 2 つのプロセッサを提供します。マルチキャスト ターゲットは x64 でのみサポートされます。
Requirements
| 要件 | 価値 |
|---|---|
| サポートされている最小Windows | Windows 10バージョン 20H2 (x64);Windows 11、バージョン 24H2、ビルド 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| 図書館 | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64、Arm64 |