HV_VMX_ENLIGHTENED_VMCSHV_VMX_ENLIGHTENED_VMCS

Ниже приведено определение типа для поддержкой VMCS.Below is the type definition for the enlightened VMCS.

СинтаксисSyntax

#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE (0)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_IO_BITMAP (1 << 0)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP (1 << 1)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP2 (1 << 2)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_GRP1 (1 << 3)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_PROC (1 << 4)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EVENT (1 << 5)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_ENTRY (1 << 6)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_EXCPN (1 << 7)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CRDR (1 << 8)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_CONTROL_XLAT (1 << 9)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_BASIC (1 << 10)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP1 (1 << 11)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_GUEST_GRP2 (1 << 12)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_POINTER (1 << 13)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_HOST_GRP1 (1 << 14)
#define HV_VMX_ENLIGHTENED_CLEAN_FIELD_ENLIGHTENMENTSCONTROL (1 << 15)

typedef struct
{
    UINT32 VersionNumber;
    UINT32 AbortIndicator;
    UINT16 HostEsSelector;
    UINT16 HostCsSelector;
    UINT16 HostSsSelector;
    UINT16 HostDsSelector;
    UINT16 HostFsSelector;
    UINT16 HostGsSelector;
    UINT16 HostTrSelector;
    UINT64 HostPat;
    UINT64 HostEfer;
    UINT64 HostCr0;
    UINT64 HostCr3;
    UINT64 HostCr4;
    UINT64 HostSysenterEspMsr;
    UINT64 HostSysenterEipMsr;
    UINT64 HostRip;
    UINT32 HostSysenterCsMsr;
    UINT32 PinControls;
    UINT32 ExitControls;
    UINT32 SecondaryProcessorControls;
    HV_GPA IoBitmapA;
    HV_GPA IoBitmapB;
    HV_GPA MsrBitmap;
    UINT16 GuestEsSelector;
    UINT16 GuestCsSelector;
    UINT16 GuestSsSelector;
    UINT16 GuestDsSelector;
    UINT16 GuestFsSelector;
    UINT16 GuestGsSelector;
    UINT16 GuestLdtrSelector;
    UINT16 GuestTrSelector;
    UINT32 GuestEsLimit;
    UINT32 GuestCsLimit;
    UINT32 GuestSsLimit;
    UINT32 GuestDsLimit;
    UINT32 GuestFsLimit;
    UINT32 GuestGsLimit;
    UINT32 GuestLdtrLimit;
    UINT32 GuestTrLimit;
    UINT32 GuestGdtrLimit;
    UINT32 GuestIdtrLimit;
    UINT32 GuestEsAttributes;
    UINT32 GuestCsAttributes;
    UINT32 GuestSsAttributes;
    UINT32 GuestDsAttributes;
    UINT32 GuestFsAttributes;
    UINT32 GuestGsAttributes;
    UINT32 GuestLdtrAttributes;
    UINT32 GuestTrAttributes;
    UINT64 GuestEsBase;
    UINT64 GuestCsBase;
    UINT64 GuestSsBase;
    UINT64 GuestDsBase;
    UINT64 GuestFsBase;
    UINT64 GuestGsBase;
    UINT64 GuestLdtrBase;
    UINT64 GuestTrBase;
    UINT64 GuestGdtrBase;
    UINT64 GuestIdtrBase;
    UINT64 Rsvd1[3];
    HV_GPA ExitMsrStoreAddress;
    HV_GPA ExitMsrLoadAddress;
    HV_GPA EntryMsrLoadAddress;
    UINT64 Cr3Target0;
    UINT64 Cr3Target1;
    UINT64 Cr3Target2;
    UINT64 Cr3Target3;
    UINT32 PfecMask;
    UINT32 PfecMatch;
    UINT32 Cr3TargetCount;
    UINT32 ExitMsrStoreCount;
    UINT32 ExitMsrLoadCount;
    UINT32 EntryMsrLoadCount;
    UINT64 TscOffset;
    HV_GPA VirtualApicPage;
    HV_GPA GuestWorkingVmcsPtr;
    UINT64 GuestIa32DebugCtl;
    UINT64 GuestPat;
    UINT64 GuestEfer;
    UINT64 GuestPdpte0;
    UINT64 GuestPdpte1;
    UINT64 GuestPdpte2;
    UINT64 GuestPdpte3;
    UINT64 GuestPendingDebugExceptions;
    UINT64 GuestSysenterEspMsr;
    UINT64 GuestSysenterEipMsr;
    UINT32 GuestSleepState;
    UINT32 GuestSysenterCsMsr;
    UINT64 Cr0GuestHostMask;
    UINT64 Cr4GuestHostMask;
    UINT64 Cr0ReadShadow;
    UINT64 Cr4ReadShadow;
    UINT64 GuestCr0;
    UINT64 GuestCr3;
    UINT64 GuestCr4;
    UINT64 GuestDr7;
    UINT64 HostFsBase;
    UINT64 HostGsBase;
    UINT64 HostTrBase;
    UINT64 HostGdtrBase;
    UINT64 HostIdtrBase;
    UINT64 HostRsp;
    UINT64 EptRoot;
    UINT16 Vpid;
    UINT16 Rsvd2[3];
    UINT64 Rsvd3[5];
    UINT64 ExitEptFaultGpa;
    UINT32 ExitInstructionError;
    UINT32 ExitReason;
    UINT32 ExitInterruptionInfo;
    UINT32 ExitExceptionErrorCode;
    UINT32 ExitIdtVectoringInfo;
    UINT32 ExitIdtVectoringErrorCode;
    UINT32 ExitInstructionLength;
    UINT32 ExitInstructionInfo;
    UINT64 ExitQualification;
    UINT64 ExitIoInstructionEcx;
    UINT64 ExitIoInstructionEsi;
    UINT64 ExitIoInstructionEdi;
    UINT64 ExitIoInstructionEip;
    UINT64 GuestLinearAddress;
    UINT64 GuestRsp;
    UINT64 GuestRflags;
    UINT32 GuestInterruptibility;
    UINT32 ProcessorControls;
    UINT32 ExceptionBitmap;
    UINT32 EntryControls;
    UINT32 EntryInterruptInfo;
    UINT32 EntryExceptionErrorCode;
    UINT32 EntryInstructionLength;
    UINT32 TprThreshold;
    UINT64 GuestRip;

    UINT32 CleanFields;
    UINT32 Rsvd4;
    UINT32 SyntheticControls;
    union
    {
        UINT32 AsUINT32;
        struct
        {
            UINT32 NestedFlushVirtualHypercall : 1;
            UINT32 MsrBitmap : 1;
            UINT32 Reserved : 30;
        };
     } EnlightenmentsControl;

    UINT32 VpId;
    UINT64 VmId;
    UINT64 PartitionAssistPage;
    UINT64 Rsvd5[4];

    UINT64 GuestBndcfgs;
    UINT64 Rsvd6[7];
    UINT64 XssExitingBitmap;
    UINT64 EnclsExitingBitmap;
    UINT64 Rsvd7[6];
} HV_VMX_ENLIGHTENED_VMCS;

Физическая кодировка VMCSPhysical VMCS Encoding

В следующей таблице сопоставлена физическая кодировка Intel VMCS с соответствующим именем поля поддержкой VMCS, а также соответствующее имя поля для очистки.The following table maps the Intel physical VMCS encoding to its corresponding enlightened VMCS field name, as well as its corresponding clean field name. Обратите внимание, что некоторые поля поддержкой VMCS являются искусственными и поэтому не будут иметь соответствующей физической кодировки VMCS.Note that some enlightened VMCS fields are synthetic, and therefore will not have a corresponding physical VMCS encoding.

Кодировка VMCSVMCS Encoding Имя поддержкойEnlightened Name РазмерSize Очистить имя поляClean Field Name
0x0000681e0x0000681e гуестрипGuestRip 88 NoneNONE
0x0000401c0x0000401c тпрсрешолдTprThreshold 44 NoneNONE
0x0000681c0x0000681c гуестрспGuestRsp 88 GUEST_BASICGUEST_BASIC
0x000068200x00006820 гуестрфлагсGuestRflags 88 GUEST_BASICGUEST_BASIC
0x000048240x00004824 гуестинтерруптибилитиGuestInterruptibility 44 GUEST_BASICGUEST_BASIC
0x000040020x00004002 процессорконтролсProcessorControls 44 CONTROL_PROCCONTROL_PROC
0x000040040x00004004 ексцептионбитмапExceptionBitmap 44 CONTROL_EXCPNCONTROL_EXCPN
0x000040120x00004012 ентриконтролсEntryControls 44 CONTROL_ENTRYCONTROL_ENTRY
0x000040160x00004016 ентринтерруптинфоEntryInterruptInfo 44 CONTROL_EVENTCONTROL_EVENT
0x000040180x00004018 ентрексцептионерроркодеEntryExceptionErrorCode 44 CONTROL_EVENTCONTROL_EVENT
0x0000401a0x0000401a ентринструктионленгсEntryInstructionLength 44 CONTROL_EVENTCONTROL_EVENT
0x00000c000x00000c00 хостесселекторHostEsSelector 22 HOST_GRP1HOST_GRP1
0x00000c020x00000c02 хостксселекторHostCsSelector 22 HOST_GRP1HOST_GRP1
0x00000c040x00000c04 хостссселекторHostSsSelector 22 HOST_GRP1HOST_GRP1
0x00000c060x00000c06 хостдсселекторHostDsSelector 22 HOST_GRP1HOST_GRP1
0x00000c080x00000c08 хостфсселекторHostFsSelector 22 HOST_GRP1HOST_GRP1
0x00000c0a0x00000c0a хостгсселекторHostGsSelector 22 HOST_GRP1HOST_GRP1
0x00000c0c0x00000c0c хосттрселекторHostTrSelector 22 HOST_GRP1HOST_GRP1
0x00002c000x00002c00 хостпатHostPat 88 HOST_GRP1HOST_GRP1
0x00002c020x00002c02 хостеферHostEfer 88 HOST_GRP1HOST_GRP1
0x00006c000x00006c00 HostCr0HostCr0 88 HOST_GRP1HOST_GRP1
0x00006c020x00006c02 HostCr3HostCr3 88 HOST_GRP1HOST_GRP1
0x00006c040x00006c04 HostCr4HostCr4 88 HOST_GRP1HOST_GRP1
0x00006c100x00006c10 хостсисентереспмсрHostSysenterEspMsr 88 HOST_GRP1HOST_GRP1
0x00006c120x00006c12 хостсисентереипмсрHostSysenterEipMsr 88 HOST_GRP1HOST_GRP1
0x00006c160x00006c16 хостсисентерксмсрHostSysenterCsMsr 44 HOST_GRP1HOST_GRP1
0x000040000x00004000 пинконтролсPinControls 44 CONTROL_GRP1CONTROL_GRP1
0x0000400c0x0000400c екситконтролсExitControls 44 CONTROL_GRP1CONTROL_GRP1
0x0000401e0x0000401e секондарипроцессорконтролсSecondaryProcessorControls 44 CONTROL_GRP1CONTROL_GRP1
0x000020000x00002000 иобитмапаIoBitmapA 88 IO_BITMAPIO_BITMAP
0x000020020x00002002 иобитмапбIoBitmapB 88 IO_BITMAPIO_BITMAP
0x000020040x00002004 мсрбитмапMsrBitmap 88 MSR_BITMAPMSR_BITMAP
0x000008000x00000800 гуестесселекторGuestEsSelector 22 GUEST_GRP2GUEST_GRP2
0x000008020x00000802 гуестксселекторGuestCsSelector 22 GUEST_GRP2GUEST_GRP2
0x000008040x00000804 гуестссселекторGuestSsSelector 22 GUEST_GRP2GUEST_GRP2
0x000008060x00000806 гуестдсселекторGuestDsSelector 22 GUEST_GRP2GUEST_GRP2
0x000008080x00000808 гуестфсселекторGuestFsSelector 22 GUEST_GRP2GUEST_GRP2
0x0000080a0x0000080a гуестгсселекторGuestGsSelector 22 GUEST_GRP2GUEST_GRP2
0x0000080c0x0000080c гуестлдтрселекторGuestLdtrSelector 22 GUEST_GRP2GUEST_GRP2
0x0000080e0x0000080e гуесттрселекторGuestTrSelector 22 GUEST_GRP2GUEST_GRP2
0x000048000x00004800 гуестеслимитGuestEsLimit 44 GUEST_GRP2GUEST_GRP2
0x000048020x00004802 гуесткслимитGuestCsLimit 44 GUEST_GRP2GUEST_GRP2
0x000048040x00004804 гуестсслимитGuestSsLimit 44 GUEST_GRP2GUEST_GRP2
0x000048060x00004806 гуестдслимитGuestDsLimit 44 GUEST_GRP2GUEST_GRP2
0x000048080x00004808 гуестфслимитGuestFsLimit 44 GUEST_GRP2GUEST_GRP2
0x0000480a0x0000480a гуестгслимитGuestGsLimit 44 GUEST_GRP2GUEST_GRP2
0x0000480c0x0000480c гуестлдтрлимитGuestLdtrLimit 44 GUEST_GRP2GUEST_GRP2
0x0000480e0x0000480e гуесттрлимитGuestTrLimit 44 GUEST_GRP2GUEST_GRP2
0x000048100x00004810 гуестгдтрлимитGuestGdtrLimit 44 GUEST_GRP2GUEST_GRP2
0x000048120x00004812 гуестидтрлимитGuestIdtrLimit 44 GUEST_GRP2GUEST_GRP2
0x000048140x00004814 гуестесаттрибутесGuestEsAttributes 44 GUEST_GRP2GUEST_GRP2
0x000048160x00004816 гуестксаттрибутесGuestCsAttributes 44 GUEST_GRP2GUEST_GRP2
0x000048180x00004818 гуестссаттрибутесGuestSsAttributes 44 GUEST_GRP2GUEST_GRP2
0x0000481a0x0000481a гуестдсаттрибутесGuestDsAttributes 44 GUEST_GRP2GUEST_GRP2
0x0000481c0x0000481c гуестфсаттрибутесGuestFsAttributes 44 GUEST_GRP2GUEST_GRP2
0x0000481e0x0000481e гуестгсаттрибутесGuestGsAttributes 44 GUEST_GRP2GUEST_GRP2
0x000048200x00004820 гуестлдтраттрибутесGuestLdtrAttributes 44 GUEST_GRP2GUEST_GRP2
0x000048220x00004822 гуесттраттрибутесGuestTrAttributes 44 GUEST_GRP2GUEST_GRP2
0x000068060x00006806 гуестесбасеGuestEsBase 88 GUEST_GRP2GUEST_GRP2
0x000068080x00006808 гуестксбасеGuestCsBase 88 GUEST_GRP2GUEST_GRP2
0x0000680a0x0000680a гуестссбасеGuestSsBase 88 GUEST_GRP2GUEST_GRP2
0x0000680c0x0000680c гуестдсбасеGuestDsBase 88 GUEST_GRP2GUEST_GRP2
0x0000680e0x0000680e гуестфсбасеGuestFsBase 88 GUEST_GRP2GUEST_GRP2
0x000068100x00006810 гуестгсбасеGuestGsBase 88 GUEST_GRP2GUEST_GRP2
0x000068120x00006812 гуестлдтрбасеGuestLdtrBase 88 GUEST_GRP2GUEST_GRP2
0x000068140x00006814 гуесттрбасеGuestTrBase 88 GUEST_GRP2GUEST_GRP2
0x000068160x00006816 гуестгдтрбасеGuestGdtrBase 88 GUEST_GRP2GUEST_GRP2
0x000068180x00006818 гуестидтрбасеGuestIdtrBase 88 GUEST_GRP2GUEST_GRP2
0x000020100x00002010 тскоффсетTscOffset 88 CONTROL_GRP2CONTROL_GRP2
0x000020120x00002012 виртуалапикпажеVirtualApicPage 88 CONTROL_GRP2CONTROL_GRP2
0x000028000x00002800 гуестворкингвмксптрGuestWorkingVmcsPtr 88 GUEST_GRP1GUEST_GRP1
0x000028020x00002802 GuestIa32DebugCtlGuestIa32DebugCtl 88 GUEST_GRP1GUEST_GRP1
0x000028040x00002804 гуестпатGuestPat 88 GUEST_GRP1GUEST_GRP1
0x000028060x00002806 гуестеферGuestEfer 88 GUEST_GRP1GUEST_GRP1
0x0000280a0x0000280a GuestPdpte0GuestPdpte0 88 GUEST_GRP1GUEST_GRP1
0x0000280c0x0000280c GuestPdpte1GuestPdpte1 88 GUEST_GRP1GUEST_GRP1
0x0000280e0x0000280e GuestPdpte2GuestPdpte2 88 GUEST_GRP1GUEST_GRP1
0x000028100x00002810 GuestPdpte3GuestPdpte3 88 GUEST_GRP1GUEST_GRP1
0x000068220x00006822 гуестпендингдебужексцептионсGuestPendingDebugExceptions 88 GUEST_GRP1GUEST_GRP1
0x000068240x00006824 гуестсисентереспмсрGuestSysenterEspMsr 88 GUEST_GRP1GUEST_GRP1
0x000068260x00006826 гуестсисентереипмсрGuestSysenterEipMsr 88 GUEST_GRP1GUEST_GRP1
0x000048260x00004826 гуестслипстатеGuestSleepState 44 GUEST_GRP1GUEST_GRP1
0x0000482a0x0000482a гуестсисентерксмсрGuestSysenterCsMsr 44 GUEST_GRP1GUEST_GRP1
0x000060000x00006000 Cr0GuestHostMaskCr0GuestHostMask 88 крдрCRDR
0x000060020x00006002 Cr4GuestHostMaskCr4GuestHostMask 88 крдрCRDR
0x000060040x00006004 Cr0ReadShadowCr0ReadShadow 88 крдрCRDR
0x000060060x00006006 Cr4ReadShadowCr4ReadShadow 88 крдрCRDR
0x000068000x00006800 GuestCr0GuestCr0 88 крдрCRDR
0x000068020x00006802 GuestCr3GuestCr3 88 крдрCRDR
0x000068040x00006804 GuestCr4GuestCr4 88 крдрCRDR
0x0000681a0x0000681a GuestDr7GuestDr7 88 крдрCRDR
0x00006c060x00006c06 хостфсбасеHostFsBase 88 HOST_POINTERHOST_POINTER
0x00006c080x00006c08 хостгсбасеHostGsBase 88 HOST_POINTERHOST_POINTER
0x00006c0a0x00006c0a хосттрбасеHostTrBase 88 HOST_POINTERHOST_POINTER
0x00006c0c0x00006c0c хостгдтрбасеHostGdtrBase 88 HOST_POINTERHOST_POINTER
0x00006c0e0x00006c0e хостидтрбасеHostIdtrBase 88 HOST_POINTERHOST_POINTER
0x00006c140x00006c14 хострспHostRsp 88 HOST_POINTERHOST_POINTER
0x000000000x00000000 впидVpid 22 CONTROL_XLATCONTROL_XLAT
0x0000201a0x0000201a ептрутEptRoot 88 CONTROL_XLATCONTROL_XLAT
0x000028120x00002812 гуестбндкфгсGuestBndcfgs 88 GUEST_GRP1GUEST_GRP1
0x0000202c0x0000202c ксссекситингбитмапXssExitingBitmap 88 CONTROL_GRP2CONTROL_GRP2
0x0000202e0x0000202e енклсекситингбитмапEnclsExitingBitmap 88 CONTROL_GRP2CONTROL_GRP2
0x000024000x00002400 екситептфаултгпаExitEptFaultGpa 88 НЕТ (только для чтения)NONE (Read only)
0x000044000x00004400 екситинструктионеррорExitInstructionError 44 НЕТ (только для чтения)NONE (Read only)
0x000044020x00004402 екситреасонExitReason 44 НЕТ (только для чтения)NONE (Read only)
0x000044040x00004404 екситинтерруптионинфоExitInterruptionInfo 44 НЕТ (только для чтения)NONE (Read only)
0x000044060x00004406 екситексцептионерроркодеExitExceptionErrorCode 44 НЕТ (только для чтения)NONE (Read only)
0x000044080x00004408 екситидтвекторингинфоExitIdtVectoringInfo 44 НЕТ (только для чтения)NONE (Read only)
0x0000440a0x0000440a екситидтвекторинжерроркодеExitIdtVectoringErrorCode 44 НЕТ (только для чтения)NONE (Read only)
0x0000440c0x0000440c екситинструктионленгсExitInstructionLength 44 НЕТ (только для чтения)NONE (Read only)
0x0000440e0x0000440e екситинструктионинфоExitInstructionInfo 44 НЕТ (только для чтения)NONE (Read only)
0x000064000x00006400 екситкуалификатионExitQualification 88 НЕТ (только для чтения)NONE (Read only)
0x000064020x00006402 екситиоинструктионекксExitIoInstructionEcx 88 НЕТ (только для чтения)NONE (Read only)
0x000064040x00006404 екситиоинструктионесиExitIoInstructionEsi 88 НЕТ (только для чтения)NONE (Read only)
0x000064060x00006406 екситиоинструктионедиExitIoInstructionEdi 88 НЕТ (только для чтения)NONE (Read only)
0x000064080x00006408 екситиоинструктионеипExitIoInstructionEip 88 НЕТ (только для чтения)NONE (Read only)
0x0000640a0x0000640a гуестлинеараддрессGuestLinearAddress 88 НЕТ (только для чтения)NONE (Read only)