割り込み先を一連のターゲット仮想プロセッサに解決します。
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 |