WHvGetInterruptTargetVpSet

割り込み先を一連のターゲット仮想プロセッサに解決します。

Note

この関数は x64 パーティションにのみ適用されます。

構文

typedef enum WHV_INTERRUPT_DESTINATION_MODE
{
    WHvX64InterruptDestinationModePhysical,
    WHvX64InterruptDestinationModeLogical,
} WHV_INTERRUPT_DESTINATION_MODE;

HRESULT
WINAPI
WHvGetInterruptTargetVpSet(
    _In_ WHV_PARTITION_HANDLE Partition,
    _In_ UINT64 Destination,
    _In_ WHV_INTERRUPT_DESTINATION_MODE DestinationMode,
    _Out_writes_to_(VpCount, *TargetVpCount) UINT32* TargetVps,
    _In_ UINT32 VpCount,
    _Out_ UINT32* TargetVpCount
    );

Parameters

Partition

パーティション オブジェクトへのハンドル。

Destination

解決する APIC 変換先の値を指定します。

DestinationMode

Destinationの解釈方法を指定します。物理 APIC ID のWHvX64InterruptDestinationModePhysical、または論理宛先のWHvX64InterruptDestinationModeLogical

TargetVps

宛先の対象となる仮想プロセッサのインデックスを受け取ります。

VpCount

TargetVps配列内の要素の数を指定します。 この値は、少なくともパーティションのプロセッサ数である必要があります。

TargetVpCount

TargetVpsに書き込まれた仮想プロセッサ インデックスの数を受け取ります。

戻り値

関数が成功した場合、戻り値は S_OK

この関数は、DestinationModeが有効な値でない場合、またはVpCountがパーティションのプロセッサ数よりも小さい場合に、E_INVALIDARGを返します。 ローカル APIC をエミュレートするようにパーティションが構成されていない場合、この関数は HRESULT_FROM_WIN32(ERROR_HV_OPERATION_DENIED)を返します。

Remarks

WHvGetInterruptTargetVpSet関数は、指定された宛先モードと宛先モードの割り込みが対象となる仮想プロセッサのセットを計算し、ハイパーバイザーが割り込みを配信するために使用するのと同じ APIC ルーティング規則を適用します。 これにより、仮想化スタックは割り込みを配信せずに割り込みルーティングを決定できます。

TargetVps バッファーは、パーティション内のすべての仮想プロセッサに対して 1 つのエントリを保持するのに十分な大きさである必要があります。関数は増分サイズクエリ プロトコルを使用せず、不足しているバッファーは、必要なサイズを報告するのではなく、E_INVALIDARGを返します。

Requirements

要件 価値
サポートされている最小Windows Windows 10、バージョン 20H2
Header WinHvPlatform.h
図書館 WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64

こちらも参照ください