WHvRetargetVpciDeviceInterrupt

割り当てられた仮想 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->FlagsWHvVpciInterruptTargetFlagMulticastを設定し、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

こちらも参照ください