HV_VP_VTL_CONTROL

Der Hypervisor verwendet einen Teil der VP-Unterstützungsseite, um die Kommunikation mit Code zu erleichtern, der in einer VTL höher als VTL0 ausgeführt wird. Jede VTL verfügt über eine eigene Steuerungsstruktur (mit Ausnahme von VTL0).

Die folgenden Informationen werden über die Steuerelementseite übermittelt:

  1. Der Grund für die VTL-Eingabe.
  2. Ein Flag, das angibt, dass VINA bestätigt wird.
  3. Die Werte für Register, die bei einer VTL-Rückgabe geladen werden sollen.

Syntax

typedef enum
{
    // This reason is reserved and is not used.
    HvVtlEntryReserved = 0,

    // Indicates entry due to a VTL call from a lower VTL.
    HvVtlEntryVtlCall = 1,

    // Indicates entry due to an interrupt targeted to the VTL.
    HvVtlEntryInterrupt = 2
} HV_VTL_ENTRY_REASON;

typedef struct
{
    // The hypervisor updates the entry reason with an indication as to why
    // the VTL was entered on the virtual processor.
    HV_VTL_ENTRY_REASON EntryReason;

    // This flag determines whether the VINA interrupt line is asserted.
    union
    {
        UINT8 AsUINT8;
        struct
        {
            UINT8 VinaAsserted :1;
            UINT8 VinaReservedZ :7;
        };
    } VinaStatus;

    UINT8 ReservedZ00;
    UINT16 ReservedZ01;

    // A guest updates the VtlReturn* fields to provide the register values
    // to restore on VTL return. The specific register values that are
    // restored will vary based on whether the VTL is 32-bit or 64-bit.
    union
    {
        struct
        {
            UINT64 VtlReturnX64Rax;
            UINT64 VtlReturnX64Rcx;
        };

        struct
        {
            UINT32 VtlReturnX86Eax;
            UINT32 VtlReturnX86Ecx;
            UINT32 VtlReturnX86Edx;
            UINT32 ReservedZ1;
        };
    };
} HV_VP_VTL_CONTROL;

Weitere Informationen

HV_VP_ASSIST_PAGE