WHvGetVpciDeviceInterruptTarget

Atanmış bir sanal PCI cihazı için eşlenmiş kesmenin geçerli vektör ve işlemci kümesini sorgular.

Sözdizimi

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

Sanal PCI cihazının sahibi olan bölümün işleyicisi.

LogicalDeviceId

Cihaz oluşturulduğunda atanan sanal PCI cihazının mantıksal cihaz kimliğini belirtir.

Index

Sorguya yönelik kesme girişinin dizinini belirtir. Bu, kesme eşlendiğinde sağlanan WHvMapVpciDeviceInterrupt dizinle aynıdır.

MultiMessageNumber

0 ile 31 (dahil) arasında çok iletili MSI kesmesi için sorguya alınacak iletiyi belirtir. Tek iletili MSI veya MSI-X kesme için bu değeri 0 olarak ayarlayın.

Target

Kesmenin geçerli vektör ve işlemci kümesini açıklayan bir WHV_VPCI_INTERRUPT_TARGET yapı alır.

TargetSizeInBytes

Arabellek boyutunu Target bayt cinsinden belirtir.

BytesWritten

Arabelleğe yazılan Target bayt sayısını alır. İşlev ile WHV_E_INSUFFICIENT_BUFFERbaşarısız olursa, bu parametre bunun yerine gerekli arabellek boyutunu alır. Bu parametre isteğe bağlıdır ve olabilir NULL.

Dönüş Değeri

İşlev başarılı olursa, dönüş değeri olur S_OK.

İşlev, 65535'ten büyük olduğunda veya 31'den büyük olduğunda MultiMessageNumber döndürür E_INVALIDARGIndex. arabellek sonucu tutmak için çok küçük olduğunda Target işlev döndürürWHV_E_INSUFFICIENT_BUFFER; bu durumda gerekli BytesWritten boyutu alır.

Açıklamalar

İşlev, WHvGetVpciDeviceInterruptTarget ile eşlenen veya ile WHvMapVpciDeviceInterruptWHvRetargetVpciDeviceInterruptyeniden hedeflenen bir kesmenin geçerli hedefini döndürür. Değişken uzunlukta Processors bir diziyle sona erdiğindenWHV_VPCI_INTERRUPT_TARGET, arabelleği yapıyı ve hedef işlemci başına bir UINT32 tane tutacak şekilde boyutlandırınTarget.

Gerekli boyutu belirlemek için, işlevi çok küçük bir arabellekle çağırın ve 'den BytesWrittengerekli boyutu okuyun, ardından bu boyutta bir arabellek ayırıp yeniden çağırın.

Requirements

Requirement Değer
Desteklenen en düşük Windows Windows 10, sürüm 20H2 (x64); Windows 11, sürüm 24H2, derleme 26100.3915 (Arm64)
Header WinHvPlatform.h
Kütüphane WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

Ayrıca bakınız