WHvRequestInterrupt

Fordert eine Unterbrechung an einen oder mehrere virtuelle Prozessoren in einer Partition zugestellt werden.

Syntax

#if defined(_AMD64_)

typedef enum WHV_INTERRUPT_TYPE
{
    WHvX64InterruptTypeFixed            = 0,
    WHvX64InterruptTypeLowestPriority   = 1,
    WHvX64InterruptTypeNmi              = 4,
    WHvX64InterruptTypeInit             = 5,
    WHvX64InterruptTypeSipi             = 6,
    WHvX64InterruptTypeLocalInt1        = 9,
} WHV_INTERRUPT_TYPE;

typedef enum WHV_INTERRUPT_DESTINATION_MODE
{
    WHvX64InterruptDestinationModePhysical,
    WHvX64InterruptDestinationModeLogical,
} WHV_INTERRUPT_DESTINATION_MODE;

typedef enum WHV_INTERRUPT_TRIGGER_MODE
{
    WHvX64InterruptTriggerModeEdge,
    WHvX64InterruptTriggerModeLevel,
} WHV_INTERRUPT_TRIGGER_MODE;

typedef struct WHV_INTERRUPT_CONTROL
{
    UINT64 Type : 8;             // WHV_INTERRUPT_TYPE
    UINT64 DestinationMode : 4;  // WHV_INTERRUPT_DESTINATION_MODE
    UINT64 TriggerMode : 4;      // WHV_INTERRUPT_TRIGGER_MODE
    UINT64 TargetVtl : 8;        // WHV_VTL
    UINT64 Reserved : 40;
    UINT32 Destination;
    UINT32 Vector;
} WHV_INTERRUPT_CONTROL;

#elif defined(_ARM64_)

typedef enum WHV_INTERRUPT_TYPE
{
    WHvArm64InterruptTypeFixed             = 0x0000,

    //
    // Maximum (exclusive) value of interrupt type.
    //
    WHvArm64InterruptTypeMaximum           = 0x0008,
} WHV_INTERRUPT_TYPE;

typedef union WHV_INTERRUPT_CONTROL2
{
    UINT64 AsUINT64;
    struct
    {
        WHV_INTERRUPT_TYPE InterruptType;
        UINT32 Reserved1:2;
        UINT32 Asserted:1;
        UINT32 Retarget:1;
        UINT32 Reserved2:28;
    };
} WHV_INTERRUPT_CONTROL2;

typedef struct WHV_INTERRUPT_CONTROL
{
    UINT64                  TargetPartition;
    WHV_INTERRUPT_CONTROL2  InterruptControl;
    UINT64                  DestinationAddress;
    UINT32                  RequestedVector;
    UINT8                   TargetVtl;
    UINT8                   ReservedZ0;
    UINT16                  ReservedZ1;
} WHV_INTERRUPT_CONTROL;

#endif // defined(_ARCH_)

HRESULT
WINAPI
WHvRequestInterrupt(
    _In_ WHV_PARTITION_HANDLE Partition,
    _In_ const WHV_INTERRUPT_CONTROL* Interrupt,
    _In_ UINT32 InterruptControlSize
    );

Parameter

Partition

Gibt die zu unterbrechende Partition an.

Interrupt

Gibt die Merkmale und das Ziel des Interrupts an.

InterruptControlSize

Gibt die Größe von Interrupt, in Byte an.

Rückgabewert

Wenn die Funktion erfolgreich ist, lautet S_OKder Rückgabewert .

Remarks

Die WHvRequestInterrupt Funktion fordert an, dass eine durch die WHV_INTERRUPT_CONTROL Struktur beschriebene Unterbrechung an die Partition übermittelt wird.

Anforderungen

Anforderung Wert
Mindestens unterstützte Windows Windows 10, Version 1809 (x64); Windows 11, Version 24H2, Build 26100.3915 (Arm64)
Header WinHvPlatform.h
Bibliothek WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

Siehe auch