割り当てられた仮想 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
WHvGetVpciDeviceInterruptTarget(
_In_ WHV_PARTITION_HANDLE Partition,
_In_ UINT64 LogicalDeviceId,
_In_ UINT32 Index,
_In_ UINT32 MultiMessageNumber,
_Out_writes_bytes_to_(TargetSizeInBytes, *BytesWritten) WHV_VPCI_INTERRUPT_TARGET* Target,
_In_ UINT32 TargetSizeInBytes,
_Out_opt_ UINT32* BytesWritten
);
Parameters
Partition
仮想 PCI デバイスを所有するパーティションへのハンドル。
LogicalDeviceId
デバイスの作成時に割り当てられる仮想 PCI デバイスの論理デバイス ID を指定します。
Index
クエリする割り込みエントリのインデックスを指定します。 これは、割り込みがマップされたときに WHvMapVpciDeviceInterrupt に指定されたのと同じインデックスです。
MultiMessageNumber
複数メッセージ MSI 割り込みのクエリを実行するメッセージを 0 から 31 の範囲で指定します。 単一メッセージの MSI または MSI-X 割り込みの場合は、この値を 0 に設定します。
Target
割り込みの現在のベクトルとプロセッサ セットを記述する WHV_VPCI_INTERRUPT_TARGET 構造体を受け取ります。
TargetSizeInBytes
Target バッファーのサイズをバイト単位で指定します。
BytesWritten
Target バッファーに書き込まれたバイト数を受け取ります。 関数が WHV_E_INSUFFICIENT_BUFFERで失敗した場合、このパラメーターは代わりに必要なバッファー サイズを受け取ります。 このパラメーターは省略可能であり、 NULLできます。
戻り値
関数が成功した場合、戻り値は S_OK。
この関数は、Indexが 65535 より大きい場合、またはMultiMessageNumberが 31 より大きい場合にE_INVALIDARGを返します。 この関数は、Target バッファーが小さすぎて結果を保持できなくなるとWHV_E_INSUFFICIENT_BUFFERを返します。その場合、BytesWrittenは必要なサイズを受け取ります。
Remarks
WHvGetVpciDeviceInterruptTarget関数は、WHvMapVpciDeviceInterruptにマップされた割り込み、またはWHvRetargetVpciDeviceInterruptで再ターゲットされた割り込みの現在のターゲットを返します。
WHV_VPCI_INTERRUPT_TARGETは可変長Processors配列で終わるので、構造体を保持するようにTarget バッファーのサイズを設定し、ターゲット プロセッサごとに 1 つのUINT32を加えます。
必要なサイズを決定するには、小さすぎるバッファーを使用して関数を呼び出し、必要なサイズを BytesWrittenから読み取り、そのサイズのバッファーを割り当ててから、もう一度呼び出します。
Requirements
| 要件 | 価値 |
|---|---|
| サポートされている最小Windows | Windows 10バージョン 20H2 (x64);Windows 11、バージョン 24H2、ビルド 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| 図書館 | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64、Arm64 |