WHvGetVpciDeviceInterruptTarget

割り当てられた仮想 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

こちらも参照ください