/**
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER within this package.
 */

#ifndef _WINHVAPIDEFS_H_
#define _WINHVAPIDEFS_H_

typedef enum WHV_CAPABILITY_CODE {
    WHvCapabilityCodeHypervisorPresent = 0x00000000
    ,WHvCapabilityCodeFeatures = 0x00000001
    ,WHvCapabilityCodeExtendedVmExits = 0x00000002
#if defined(__x86_64__)
    ,WHvCapabilityCodeExceptionExitBitmap = 0x00000003
    ,WHvCapabilityCodeX64MsrExitBitmap = 0x00000004
#endif
    ,WHvCapabilityCodeGpaRangePopulateFlags = 0x00000005
    ,WHvCapabilityCodeSchedulerFeatures = 0x00000006
    ,WHvCapabilityCodeProcessorVendor = 0x00001000
    ,WHvCapabilityCodeProcessorFeatures = 0x00001001
    ,WHvCapabilityCodeProcessorClFlushSize = 0x00001002
#if defined(__x86_64__)
    ,WHvCapabilityCodeProcessorXsaveFeatures = 0x00001003
#endif
    ,WHvCapabilityCodeProcessorClockFrequency = 0x00001004
#if defined(__x86_64__)
    ,WHvCapabilityCodeInterruptClockFrequency = 0x00001005
#endif
    ,WHvCapabilityCodeProcessorFeaturesBanks = 0x00001006
    ,WHvCapabilityCodeProcessorFrequencyCap = 0x00001007
    ,WHvCapabilityCodeSyntheticProcessorFeaturesBanks = 0x00001008
#if defined(__x86_64__)
    ,WHvCapabilityCodeProcessorPerfmonFeatures = 0x00001009
#endif
    ,WHvCapabilityCodePhysicalAddressWidth = 0x0000100A
#if defined(__x86_64__)
    ,WHvCapabilityCodeVmxBasic = 0x00002000
    ,WHvCapabilityCodeVmxPinbasedCtls = 0x00002001
    ,WHvCapabilityCodeVmxProcbasedCtls = 0x00002002
    ,WHvCapabilityCodeVmxExitCtls = 0x00002003
    ,WHvCapabilityCodeVmxEntryCtls = 0x00002004
    ,WHvCapabilityCodeVmxMisc = 0x00002005
    ,WHvCapabilityCodeVmxCr0Fixed0 = 0x00002006
    ,WHvCapabilityCodeVmxCr0Fixed1 = 0x00002007
    ,WHvCapabilityCodeVmxCr4Fixed0 = 0x00002008
    ,WHvCapabilityCodeVmxCr4Fixed1 = 0x00002009
    ,WHvCapabilityCodeVmxVmcsEnum = 0x0000200A
    ,WHvCapabilityCodeVmxProcbasedCtls2 = 0x0000200B
    ,WHvCapabilityCodeVmxEptVpidCap = 0x0000200C
    ,WHvCapabilityCodeVmxTruePinbasedCtls = 0x0000200D
    ,WHvCapabilityCodeVmxTrueProcbasedCtls = 0x0000200E
    ,WHvCapabilityCodeVmxTrueExitCtls = 0x0000200F
    ,WHvCapabilityCodeVmxTrueEntryCtls = 0x00002010
#endif
} WHV_CAPABILITY_CODE;

typedef union WHV_CAPABILITY_FEATURES {
    __C89_NAMELESS struct {
        UINT64 PartialUnmap : 1;
#if defined(__x86_64__)
        UINT64 LocalApicEmulation : 1;
        UINT64 Xsave : 1;
#else
        UINT64 ReservedArm0 : 2;
#endif
        UINT64 DirtyPageTracking : 1;
        UINT64 SpeculationControl : 1;
#if defined(__x86_64__)
        UINT64 ApicRemoteRead : 1;
#else
        UINT64 ReservedArm1 : 1;
#endif
        UINT64 IdleSuspend : 1;
        UINT64 VirtualPciDeviceSupport : 1;
        UINT64 IommuSupport : 1;
        UINT64 VpHotAddRemove : 1;
        UINT64 Reserved : 54;
    };
    UINT64 AsUINT64;
} WHV_CAPABILITY_FEATURES;

C_ASSERT(sizeof(WHV_CAPABILITY_FEATURES) == sizeof(UINT64));

typedef union WHV_EXTENDED_VM_EXITS {
    __C89_NAMELESS struct {
#if defined(__x86_64__)
        UINT64 X64CpuidExit : 1;
        UINT64 X64MsrExit : 1;
        UINT64 ExceptionExit : 1;
        UINT64 X64RdtscExit : 1;
        UINT64 X64ApicSmiExitTrap : 1;
#else
        UINT64 ReservedArm0 : 5;
#endif
        UINT64 HypercallExit : 1;
#if defined(__x86_64__)
        UINT64 X64ApicInitSipiExitTrap : 1;
        UINT64 X64ApicWriteLint0ExitTrap : 1;
        UINT64 X64ApicWriteLint1ExitTrap : 1;
        UINT64 X64ApicWriteSvrExitTrap : 1;
#else
        UINT64 ReservedArm1 : 4;
#endif
        UINT64 UnknownSynicConnection : 1;
        UINT64 RetargetUnknownVpciDevice : 1;
#if defined(__x86_64__)
        UINT64 X64ApicWriteLdrExitTrap : 1;
        UINT64 X64ApicWriteDfrExitTrap : 1;
#else
        UINT64 ReservedArm2 : 2;
#endif
        UINT64 GpaAccessFaultExit : 1;
        UINT64 Reserved : 49;
    };
    UINT64 AsUINT64;
} WHV_EXTENDED_VM_EXITS;

C_ASSERT(sizeof(WHV_EXTENDED_VM_EXITS) == sizeof(UINT64));

typedef enum WHV_PROCESSOR_VENDOR {
    WHvProcessorVendorAmd = 0x0000,
    WHvProcessorVendorIntel = 0x0001,
    WHvProcessorVendorHygon = 0x0002,
    WHvProcessorVendorArm = 0x0010
} WHV_PROCESSOR_VENDOR;

#if defined(__x86_64__)

typedef union WHV_X64_PROCESSOR_FEATURES {
    __C89_NAMELESS struct {
        UINT64 Sse3Support : 1;
        UINT64 LahfSahfSupport : 1;
        UINT64 Ssse3Support : 1;
        UINT64 Sse4_1Support : 1;
        UINT64 Sse4_2Support : 1;
        UINT64 Sse4aSupport : 1;
        UINT64 XopSupport : 1;
        UINT64 PopCntSupport : 1;
        UINT64 Cmpxchg16bSupport : 1;
        UINT64 Altmovcr8Support : 1;
        UINT64 LzcntSupport : 1;
        UINT64 MisAlignSseSupport : 1;
        UINT64 MmxExtSupport : 1;
        UINT64 Amd3DNowSupport : 1;
        UINT64 ExtendedAmd3DNowSupport : 1;
        UINT64 Page1GbSupport : 1;
        UINT64 AesSupport : 1;
        UINT64 PclmulqdqSupport : 1;
        UINT64 PcidSupport : 1;
        UINT64 Fma4Support : 1;
        UINT64 F16CSupport : 1;
        UINT64 RdRandSupport : 1;
        UINT64 RdWrFsGsSupport : 1;
        UINT64 SmepSupport : 1;
        UINT64 EnhancedFastStringSupport : 1;
        UINT64 Bmi1Support : 1;
        UINT64 Bmi2Support : 1;
        UINT64 Reserved1 : 2;
        UINT64 MovbeSupport : 1;
        UINT64 Npiep1Support : 1;
        UINT64 DepX87FPUSaveSupport : 1;
        UINT64 RdSeedSupport : 1;
        UINT64 AdxSupport : 1;
        UINT64 IntelPrefetchSupport : 1;
        UINT64 SmapSupport : 1;
        UINT64 HleSupport : 1;
        UINT64 RtmSupport : 1;
        UINT64 RdtscpSupport : 1;
        UINT64 ClflushoptSupport : 1;
        UINT64 ClwbSupport : 1;
        UINT64 ShaSupport : 1;
        UINT64 X87PointersSavedSupport : 1;
        UINT64 InvpcidSupport : 1;
        UINT64 IbrsSupport : 1;
        UINT64 StibpSupport : 1;
        UINT64 IbpbSupport : 1;
        UINT64 UnrestrictedGuestSupport : 1;
        UINT64 SsbdSupport : 1;
        UINT64 FastShortRepMovSupport : 1;
        UINT64 Reserved3 : 1;
        UINT64 RdclNo : 1;
        UINT64 IbrsAllSupport : 1;
        UINT64 Reserved4 : 1;
        UINT64 SsbNo : 1;
        UINT64 RsbANo : 1;
        UINT64 Reserved5 : 1;
        UINT64 RdPidSupport : 1;
        UINT64 UmipSupport : 1;
        UINT64 MdsNoSupport : 1;
        UINT64 MdClearSupport : 1;
        UINT64 TaaNoSupport : 1;
        UINT64 TsxCtrlSupport : 1;
        UINT64 Reserved6 : 1;
    };
    UINT64 AsUINT64;
} WHV_X64_PROCESSOR_FEATURES, WHV_PROCESSOR_FEATURES;

C_ASSERT(sizeof(WHV_X64_PROCESSOR_FEATURES) == sizeof(UINT64));

typedef union WHV_X64_PROCESSOR_FEATURES1 {
    __C89_NAMELESS struct {
        UINT64 ACountMCountSupport : 1;
        UINT64 TscInvariantSupport : 1;
        UINT64 ClZeroSupport : 1;
        UINT64 RdpruSupport : 1;
        UINT64 La57Support : 1;
        UINT64 MbecSupport : 1;
        UINT64 NestedVirtSupport : 1;
        UINT64 PsfdSupport: 1;
        UINT64 CetSsSupport : 1;
        UINT64 CetIbtSupport : 1;
        UINT64 VmxExceptionInjectSupport : 1;
        UINT64 Reserved2 : 1;
        UINT64 UmwaitTpauseSupport : 1;
        UINT64 MovdiriSupport : 1;
        UINT64 Movdir64bSupport : 1;
        UINT64 CldemoteSupport : 1;
        UINT64 SerializeSupport : 1;
        UINT64 TscDeadlineTmrSupport : 1;
        UINT64 TscAdjustSupport : 1;
        UINT64 FZLRepMovsb : 1;
        UINT64 FSRepStosb : 1;
        UINT64 FSRepCmpsb : 1;
        UINT64 TsxLdTrkSupport : 1;
        UINT64 VmxInsOutsExitInfoSupport : 1;
        UINT64 Reserved3 : 1;
        UINT64 SbdrSsdpNoSupport : 1;
        UINT64 FbsdpNoSupport : 1;
        UINT64 PsdpNoSupport : 1;
        UINT64 FbClearSupport : 1;
        UINT64 BtcNoSupport : 1;
        UINT64 IbpbRsbFlushSupport : 1;
        UINT64 StibpAlwaysOnSupport : 1;
        UINT64 PerfGlobalCtrlSupport : 1;
        UINT64 NptExecuteOnlySupport : 1;
        UINT64 NptADFlagsSupport : 1;
        UINT64 Npt1GbPageSupport : 1;
        UINT64 Reserved4 : 1;
        UINT64 Reserved5 : 1;
        UINT64 Reserved6 : 1;
        UINT64 Reserved7 : 1;
        UINT64 CmpccxaddSupport : 1;
        UINT64 Reserved8 : 1;
        UINT64 Reserved9 : 1;
        UINT64 Reserved10 : 1;
        UINT64 Reserved11 : 1;
        UINT64 PrefetchISupport : 1;
        UINT64 Sha512Support : 1;
        UINT64 Reserved12 : 1;
        UINT64 Reserved13 : 1;
        UINT64 Reserved14 : 1;
        UINT64 SM3Support : 1;
        UINT64 SM4Support : 1;
        UINT64 Reserved15 : 12;
    };
    UINT64 AsUINT64;
} WHV_X64_PROCESSOR_FEATURES1, WHV_PROCESSOR_FEATURES1;

C_ASSERT(sizeof(WHV_X64_PROCESSOR_FEATURES1) == sizeof(UINT64));

#elif defined(__aarch64__)

typedef union WHV_ARM64_PROCESSOR_FEATURES {
    __C89_NAMELESS struct {
        UINT64 Asid16 : 1;
        UINT64 TGran16 : 1;
        UINT64 TGran64 : 1;
        UINT64 Haf : 1;
        UINT64 Hdbs : 1;
        UINT64 Pan : 1;
        UINT64 AtS1E1 : 1;
        UINT64 Uao : 1;
        UINT64 El0Aarch32 : 1;
        UINT64 Fp : 1;
        UINT64 FpHp : 1;
        UINT64 AdvSimd : 1;
        UINT64 AdvSimdHp : 1;
        UINT64 GicV3V4 : 1;
        UINT64 GicV41 : 1;
        UINT64 Ras : 1;
        UINT64 PmuV3 : 1;
        UINT64 PmuV3ArmV81 : 1;
        UINT64 PmuV3ArmV84 : 1;
        UINT64 PmuV3ArmV85 : 1;
        UINT64 Aes : 1;
        UINT64 PolyMul : 1;
        UINT64 Sha1 : 1;
        UINT64 Sha256 : 1;
        UINT64 Sha512 : 1;
        UINT64 Crc32 : 1;
        UINT64 Atomic : 1;
        UINT64 Rdm : 1;
        UINT64 Sha3 : 1;
        UINT64 Sm3 : 1;
        UINT64 Sm4 : 1;
        UINT64 Dp : 1;
        UINT64 Fhm : 1;
        UINT64 DcCvap : 1;
        UINT64 DcCvadp : 1;
        UINT64 ApaBase : 1;
        UINT64 ApaEp : 1;
        UINT64 ApaEp2 : 1;
        UINT64 ApaEp2Fp : 1;
        UINT64 ApaEp2Fpc : 1;
        UINT64 Jscvt : 1;
        UINT64 Fcma : 1;
        UINT64 RcpcV83 : 1;
        UINT64 RcpcV84 : 1;
        UINT64 Gpa : 1;
        UINT64 L1ipPipt : 1;
        UINT64 DzPermitted : 1;
        UINT64 Reserved : 17;
    };
    UINT64 AsUINT64;
} WHV_ARM64_PROCESSOR_FEATURES, WHV_PROCESSOR_FEATURES;

typedef union WHV_ARM64_PROCESSOR_FEATURES1 {
    __C89_NAMELESS struct {
        UINT64 Reserved : 64;
    };
    UINT64 AsUINT64;
} WHV_ARM64_PROCESSOR_FEATURES1, WHV_PROCESSOR_FEATURES1;

#endif /* __x86_64__ || __aarch64__ */

#define WHV_PROCESSOR_FEATURES_BANKS_COUNT 2

typedef struct WHV_PROCESSOR_FEATURES_BANKS {
    UINT32 BanksCount;
    UINT32 Reserved0;
    __C89_NAMELESS union {
        __C89_NAMELESS struct {
            WHV_PROCESSOR_FEATURES Bank0;
            WHV_PROCESSOR_FEATURES1 Bank1;
        };
        UINT64 AsUINT64[WHV_PROCESSOR_FEATURES_BANKS_COUNT];
    };
} WHV_PROCESSOR_FEATURES_BANKS;

C_ASSERT(sizeof(WHV_PROCESSOR_FEATURES_BANKS) == sizeof(UINT64) * (WHV_PROCESSOR_FEATURES_BANKS_COUNT + 1));

typedef union WHV_SYNTHETIC_PROCESSOR_FEATURES {
    __C89_NAMELESS struct {
        UINT64 HypervisorPresent : 1;
        UINT64 Hv1 : 1;
        UINT64 AccessVpRunTimeReg : 1;
        UINT64 AccessPartitionReferenceCounter : 1;
        UINT64 AccessSynicRegs : 1;
        UINT64 AccessSyntheticTimerRegs : 1;
        UINT64 AccessIntrCtrlRegs : 1;
        UINT64 AccessHypercallRegs : 1;
        UINT64 AccessVpIndex : 1;
        UINT64 AccessPartitionReferenceTsc : 1;
#ifdef __x86_64__
        UINT64 AccessGuestIdleReg : 1;
        UINT64 AccessFrequencyRegs : 1;
#else
        UINT64 ReservedZ10 : 1;
        UINT64 ReservedZ11 : 1;
#endif
        UINT64 ReservedZ12 : 1;
        UINT64 ReservedZ13 : 1;
        UINT64 ReservedZ14 : 1;
#ifdef __x86_64__
        UINT64 EnableExtendedGvaRangesForFlushVirtualAddressList : 1;
#else
        UINT64 ReservedZ15 : 1;
#endif
        UINT64 ReservedZ16 : 1;
        UINT64 ReservedZ17 : 1;
        UINT64 FastHypercallOutput : 1;
        UINT64 ReservedZ19 : 1;
        UINT64 ReservedZ20 : 1;
        UINT64 ReservedZ21 : 1;
        UINT64 DirectSyntheticTimers : 1;
        UINT64 ReservedZ23 : 1;
        UINT64 ExtendedProcessorMasks : 1;
#ifdef __x86_64__
        UINT64 TbFlushHypercalls : 1;
#else
        UINT64 ReservedZ25 : 1;
#endif
        UINT64 SyntheticClusterIpi : 1;
        UINT64 NotifyLongSpinWait : 1;
        UINT64 QueryNumaDistance : 1;
        UINT64 SignalEvents : 1;
        UINT64 RetargetDeviceInterrupt : 1;
#ifdef __x86_64__
        UINT64 RestoreTime : 1;
        UINT64 EnlightenedVmcs : 1;
        UINT64 NestedDebugCtl : 1;
        UINT64 SyntheticTimeUnhaltedTimer : 1;
        UINT64 IdleSpecCtrl : 1;
#else
        UINT64 ReservedZ31 : 1;
        UINT64 ReservedZ32 : 1;
        UINT64 ReservedZ33 : 1;
        UINT64 ReservedZ34 : 1;
        UINT64 ReservedZ35 : 1;
#endif
        UINT64 ReservedZ36 : 1;
        UINT64 WakeVps : 1;
        UINT64 AccessVpRegs : 1;
#ifdef __aarch64__
        UINT64 SyncContext : 1;
#else
        UINT64 ReservedZ39 : 1;
#endif
        UINT64 ReservedZ40 : 1;
        UINT64 Reserved : 23;
    };
    UINT64 AsUINT64;
} WHV_SYNTHETIC_PROCESSOR_FEATURES;

C_ASSERT(sizeof(WHV_SYNTHETIC_PROCESSOR_FEATURES) == 8);

#define WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS_COUNT 1

typedef struct WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS {
    UINT32 BanksCount;
    UINT32 Reserved0;
    __C89_NAMELESS union {
        __C89_NAMELESS struct {
            WHV_SYNTHETIC_PROCESSOR_FEATURES Bank0;
        };
        UINT64 AsUINT64[WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS_COUNT];
    };
} WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS;

C_ASSERT(sizeof(WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS) == 16);

typedef union _WHV_PROCESSOR_XSAVE_FEATURES {
    __C89_NAMELESS struct {
        UINT64 XsaveSupport : 1;
        UINT64 XsaveoptSupport : 1;
        UINT64 AvxSupport : 1;
        UINT64 Avx2Support : 1;
        UINT64 FmaSupport : 1;
        UINT64 MpxSupport : 1;
        UINT64 Avx512Support : 1;
        UINT64 Avx512DQSupport : 1;
        UINT64 Avx512CDSupport : 1;
        UINT64 Avx512BWSupport : 1;
        UINT64 Avx512VLSupport : 1;
        UINT64 XsaveCompSupport : 1;
        UINT64 XsaveSupervisorSupport : 1;
        UINT64 Xcr1Support : 1;
        UINT64 Avx512BitalgSupport : 1;
        UINT64 Avx512IfmaSupport : 1;
        UINT64 Avx512VBmiSupport : 1;
        UINT64 Avx512VBmi2Support : 1;
        UINT64 Avx512VnniSupport : 1;
        UINT64 GfniSupport : 1;
        UINT64 VaesSupport : 1;
        UINT64 Avx512VPopcntdqSupport : 1;
        UINT64 VpclmulqdqSupport : 1;
        UINT64 Avx512Bf16Support : 1;
        UINT64 Avx512Vp2IntersectSupport : 1;
        UINT64 Avx512Fp16Support : 1;
        UINT64 XfdSupport : 1;
        UINT64 AmxTileSupport : 1;
        UINT64 AmxBf16Support : 1;
        UINT64 AmxInt8Support : 1;
        UINT64 AvxVnniSupport : 1;
        UINT64 Reserved : 33;
    };
    UINT64 AsUINT64;
} WHV_PROCESSOR_XSAVE_FEATURES, *PWHV_PROCESSOR_XSAVE_FEATURES;

C_ASSERT(sizeof(WHV_PROCESSOR_XSAVE_FEATURES) == sizeof(UINT64));

typedef union WHV_PROCESSOR_PERFMON_FEATURES {
    __C89_NAMELESS struct {
        UINT64 PmuSupport : 1;
        UINT64 LbrSupport : 1;
        UINT64 Reserved : 62;
    };
    UINT64 AsUINT64;
} WHV_PROCESSOR_PERFMON_FEATURES, *PWHV_PROCESSOR_PERFMON_FEATURES;

C_ASSERT(sizeof(WHV_PROCESSOR_PERFMON_FEATURES) == 8);

typedef union WHV_X64_MSR_EXIT_BITMAP {
    UINT64 AsUINT64;
    __C89_NAMELESS struct {
        UINT64 UnhandledMsrs : 1;
        UINT64 TscMsrWrite : 1;
        UINT64 TscMsrRead : 1;
        UINT64 ApicBaseMsrWrite : 1;
        UINT64 MiscEnableMsrRead:1;
        UINT64 McUpdatePatchLevelMsrRead:1;
        UINT64 Reserved:58;
    };
} WHV_X64_MSR_EXIT_BITMAP;

C_ASSERT(sizeof(WHV_X64_MSR_EXIT_BITMAP) == sizeof(UINT64));

typedef struct WHV_MEMORY_RANGE_ENTRY {
    UINT64 GuestAddress;
    UINT64 SizeInBytes;
} WHV_MEMORY_RANGE_ENTRY;

C_ASSERT(sizeof(WHV_MEMORY_RANGE_ENTRY) == 16);

typedef union WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS {
    UINT32 AsUINT32;
    __C89_NAMELESS struct {
        UINT32 Prefetch:1;
        UINT32 AvoidHardFaults:1;
        UINT32 Reserved:30;
    };
} WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS;

C_ASSERT(sizeof(WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS) == 4);

typedef enum WHV_MEMORY_ACCESS_TYPE {
    WHvMemoryAccessRead = 0,
    WHvMemoryAccessWrite = 1,
    WHvMemoryAccessExecute = 2
} WHV_MEMORY_ACCESS_TYPE;

typedef struct WHV_ADVISE_GPA_RANGE_POPULATE {
    WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS Flags;
    WHV_MEMORY_ACCESS_TYPE AccessType;
} WHV_ADVISE_GPA_RANGE_POPULATE;

C_ASSERT(sizeof(WHV_ADVISE_GPA_RANGE_POPULATE) == 8);

typedef struct WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP {
    UINT32 IsSupported:1;
    UINT32 Reserved:31;
    UINT32 HighestFrequencyMhz;
    UINT32 NominalFrequencyMhz;
    UINT32 LowestFrequencyMhz;
    UINT32 FrequencyStepMhz;
} WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP;

C_ASSERT(sizeof(WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP) == 20);

typedef union WHV_SCHEDULER_FEATURES {
    __C89_NAMELESS struct {
        UINT64 CpuReserve: 1;
        UINT64 CpuCap: 1;
        UINT64 CpuWeight: 1;
        UINT64 CpuGroupId: 1;
        UINT64 DisableSmt: 1;
        UINT64 Reserved: 59;
    };
    UINT64 AsUINT64;
} WHV_SCHEDULER_FEATURES;

C_ASSERT(sizeof(WHV_SCHEDULER_FEATURES) == 8);

typedef union WHV_CAPABILITY {
    WINBOOL HypervisorPresent;
    WHV_CAPABILITY_FEATURES Features;
    WHV_EXTENDED_VM_EXITS ExtendedVmExits;
    WHV_PROCESSOR_VENDOR ProcessorVendor;
    WHV_PROCESSOR_FEATURES ProcessorFeatures;
    WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS SyntheticProcessorFeaturesBanks;
    WHV_PROCESSOR_XSAVE_FEATURES ProcessorXsaveFeatures;
    UINT8 ProcessorClFlushSize;
    UINT64 ExceptionExitBitmap;
    WHV_X64_MSR_EXIT_BITMAP X64MsrExitBitmap;
    UINT64 ProcessorClockFrequency;
    UINT64 InterruptClockFrequency;
    WHV_PROCESSOR_FEATURES_BANKS ProcessorFeaturesBanks;
    WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS GpaRangePopulateFlags;
    WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP ProcessorFrequencyCap;
    WHV_PROCESSOR_PERFMON_FEATURES ProcessorPerfmonFeatures;
    WHV_SCHEDULER_FEATURES SchedulerFeatures;
} WHV_CAPABILITY;

typedef VOID* WHV_PARTITION_HANDLE;

typedef enum WHV_PARTITION_PROPERTY_CODE {
    WHvPartitionPropertyCodeExtendedVmExits = 0x00000001,
    WHvPartitionPropertyCodeExceptionExitBitmap = 0x00000002,
    WHvPartitionPropertyCodeSeparateSecurityDomain = 0x00000003,
    WHvPartitionPropertyCodeNestedVirtualization = 0x00000004,
    WHvPartitionPropertyCodeX64MsrExitBitmap = 0x00000005,
    WHvPartitionPropertyCodePrimaryNumaNode = 0x00000006,
    WHvPartitionPropertyCodeCpuReserve = 0x00000007,
    WHvPartitionPropertyCodeCpuCap = 0x00000008,
    WHvPartitionPropertyCodeCpuWeight = 0x00000009,
    WHvPartitionPropertyCodeCpuGroupId = 0x0000000A,
    WHvPartitionPropertyCodeProcessorFrequencyCap = 0x0000000B,
    WHvPartitionPropertyCodeAllowDeviceAssignment = 0x0000000C,
    WHvPartitionPropertyCodeDisableSmt = 0x0000000D,
    WHvPartitionPropertyCodeProcessorFeatures = 0x00001001,
    WHvPartitionPropertyCodeProcessorClFlushSize = 0x00001002,
    WHvPartitionPropertyCodeCpuidExitList = 0x00001003,
    WHvPartitionPropertyCodeCpuidResultList = 0x00001004,
    WHvPartitionPropertyCodeLocalApicEmulationMode = 0x00001005,
    WHvPartitionPropertyCodeProcessorXsaveFeatures = 0x00001006,
    WHvPartitionPropertyCodeProcessorClockFrequency = 0x00001007,
    WHvPartitionPropertyCodeInterruptClockFrequency = 0x00001008,
    WHvPartitionPropertyCodeApicRemoteReadSupport = 0x00001009,
    WHvPartitionPropertyCodeProcessorFeaturesBanks = 0x0000100A,
    WHvPartitionPropertyCodeReferenceTime = 0x0000100B,
    WHvPartitionPropertyCodeSyntheticProcessorFeaturesBanks = 0x0000100C,
    WHvPartitionPropertyCodeCpuidResultList2 = 0x0000100D,
    WHvPartitionPropertyCodeProcessorPerfmonFeatures = 0x0000100E,
    WHvPartitionPropertyCodeMsrActionList = 0x0000100F,
    WHvPartitionPropertyCodeUnimplementedMsrAction = 0x00001010,
    WHvPartitionPropertyCodeProcessorCount = 0x00001fff
} WHV_PARTITION_PROPERTY_CODE;

typedef struct WHV_X64_CPUID_RESULT {
    UINT32 Function;
    UINT32 Reserved[3];
    UINT32 Eax;
    UINT32 Ebx;
    UINT32 Ecx;
    UINT32 Edx;
} WHV_X64_CPUID_RESULT;

C_ASSERT(sizeof(WHV_X64_CPUID_RESULT) == 32);

typedef enum WHV_X64_CPUID_RESULT2_FLAGS {
    WHvX64CpuidResult2FlagSubleafSpecific = 0x00000001,
    WHvX64CpuidResult2FlagVpSpecific = 0x00000002
} WHV_X64_CPUID_RESULT2_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(WHV_X64_CPUID_RESULT2_FLAGS);

typedef struct WHV_CPUID_OUTPUT {
    UINT32 Eax;
    UINT32 Ebx;
    UINT32 Ecx;
    UINT32 Edx;
} WHV_CPUID_OUTPUT;

C_ASSERT(sizeof(WHV_CPUID_OUTPUT) == 16);

typedef struct WHV_X64_CPUID_RESULT2 {
    UINT32 Function;
    UINT32 Index;
    UINT32 VpIndex;
    WHV_X64_CPUID_RESULT2_FLAGS Flags;
    WHV_CPUID_OUTPUT Output;
    WHV_CPUID_OUTPUT Mask;
} WHV_X64_CPUID_RESULT2;

C_ASSERT(sizeof(WHV_X64_CPUID_RESULT2) == 48);

typedef struct WHV_MSR_ACTION_ENTRY {
    UINT32 Index;
    UINT8 ReadAction;
    UINT8 WriteAction;
    UINT16 Reserved;
} WHV_MSR_ACTION_ENTRY;

C_ASSERT(sizeof(WHV_MSR_ACTION_ENTRY) == 8);

typedef enum WHV_MSR_ACTION {
    WHvMsrActionArchitectureDefault = 0,
    WHvMsrActionIgnoreWriteReadZero = 1,
    WHvMsrActionExit = 2
} WHV_MSR_ACTION;

typedef enum WHV_EXCEPTION_TYPE {
    WHvX64ExceptionTypeDivideErrorFault = 0x0,
    WHvX64ExceptionTypeDebugTrapOrFault = 0x1,
    WHvX64ExceptionTypeBreakpointTrap = 0x3,
    WHvX64ExceptionTypeOverflowTrap = 0x4,
    WHvX64ExceptionTypeBoundRangeFault = 0x5,
    WHvX64ExceptionTypeInvalidOpcodeFault = 0x6,
    WHvX64ExceptionTypeDeviceNotAvailableFault = 0x7,
    WHvX64ExceptionTypeDoubleFaultAbort = 0x8,
    WHvX64ExceptionTypeInvalidTaskStateSegmentFault = 0x0A,
    WHvX64ExceptionTypeSegmentNotPresentFault = 0x0B,
    WHvX64ExceptionTypeStackFault = 0x0C,
    WHvX64ExceptionTypeGeneralProtectionFault = 0x0D,
    WHvX64ExceptionTypePageFault = 0x0E,
    WHvX64ExceptionTypeFloatingPointErrorFault = 0x10,
    WHvX64ExceptionTypeAlignmentCheckFault = 0x11,
    WHvX64ExceptionTypeMachineCheckAbort = 0x12,
    WHvX64ExceptionTypeSimdFloatingPointFault = 0x13
} WHV_EXCEPTION_TYPE;

typedef enum WHV_X64_LOCAL_APIC_EMULATION_MODE {
    WHvX64LocalApicEmulationModeNone,
    WHvX64LocalApicEmulationModeXApic,
    WHvX64LocalApicEmulationModeX2Apic
} WHV_X64_LOCAL_APIC_EMULATION_MODE;

typedef union WHV_PARTITION_PROPERTY {
    WHV_EXTENDED_VM_EXITS ExtendedVmExits;
    WHV_PROCESSOR_FEATURES ProcessorFeatures;
    WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS SyntheticProcessorFeaturesBanks;
    WHV_PROCESSOR_XSAVE_FEATURES ProcessorXsaveFeatures;
    UINT8 ProcessorClFlushSize;
    UINT32 ProcessorCount;
    UINT32 CpuidExitList[1];
    WHV_X64_CPUID_RESULT CpuidResultList[1];
    WHV_X64_CPUID_RESULT2 CpuidResultList2[1];
    WHV_MSR_ACTION_ENTRY MsrActionList[1];
    WHV_MSR_ACTION UnimplementedMsrAction;
    UINT64 ExceptionExitBitmap;
    WHV_X64_LOCAL_APIC_EMULATION_MODE LocalApicEmulationMode;
    WINBOOL SeparateSecurityDomain;
    WINBOOL NestedVirtualization;
    WHV_X64_MSR_EXIT_BITMAP X64MsrExitBitmap;
    UINT64 ProcessorClockFrequency;
    UINT64 InterruptClockFrequency;
    WINBOOL ApicRemoteRead;
    WHV_PROCESSOR_FEATURES_BANKS ProcessorFeaturesBanks;
    UINT64 ReferenceTime;
    USHORT PrimaryNumaNode;
    UINT32 CpuReserve;
    UINT32 CpuCap;
    UINT32 CpuWeight;
    UINT64 CpuGroupId;
    UINT32 ProcessorFrequencyCap;
    WINBOOL AllowDeviceAssignment;
    WHV_PROCESSOR_PERFMON_FEATURES ProcessorPerfmonFeatures;
    WINBOOL DisableSmt;
} WHV_PARTITION_PROPERTY;

typedef UINT64 WHV_GUEST_PHYSICAL_ADDRESS;
typedef UINT64 WHV_GUEST_VIRTUAL_ADDRESS;

typedef enum WHV_MAP_GPA_RANGE_FLAGS {
    WHvMapGpaRangeFlagNone = 0x00000000,
    WHvMapGpaRangeFlagRead = 0x00000001,
    WHvMapGpaRangeFlagWrite = 0x00000002,
    WHvMapGpaRangeFlagExecute = 0x00000004,
    WHvMapGpaRangeFlagTrackDirtyPages = 0x00000008
} WHV_MAP_GPA_RANGE_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(WHV_MAP_GPA_RANGE_FLAGS);

typedef enum WHV_TRANSLATE_GVA_FLAGS {
    WHvTranslateGvaFlagNone = 0x00000000,
    WHvTranslateGvaFlagValidateRead = 0x00000001,
    WHvTranslateGvaFlagValidateWrite = 0x00000002,
    WHvTranslateGvaFlagValidateExecute = 0x00000004,
    WHvTranslateGvaFlagPrivilegeExempt = 0x00000008,
    WHvTranslateGvaFlagSetPageTableBits = 0x00000010,
    WHvTranslateGvaFlagEnforceSmap = 0x00000100,
    WHvTranslateGvaFlagOverrideSmap = 0x00000200
} WHV_TRANSLATE_GVA_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(WHV_TRANSLATE_GVA_FLAGS);

typedef enum WHV_TRANSLATE_GVA_RESULT_CODE {
    WHvTranslateGvaResultSuccess = 0,
    WHvTranslateGvaResultPageNotPresent = 1,
    WHvTranslateGvaResultPrivilegeViolation = 2,
    WHvTranslateGvaResultInvalidPageTableFlags = 3,
    WHvTranslateGvaResultGpaUnmapped = 4,
    WHvTranslateGvaResultGpaNoReadAccess = 5,
    WHvTranslateGvaResultGpaNoWriteAccess = 6,
    WHvTranslateGvaResultGpaIllegalOverlayAccess = 7,
    WHvTranslateGvaResultIntercept = 8
} WHV_TRANSLATE_GVA_RESULT_CODE;

typedef struct WHV_TRANSLATE_GVA_RESULT {
    WHV_TRANSLATE_GVA_RESULT_CODE ResultCode;
    UINT32 Reserved;
} WHV_TRANSLATE_GVA_RESULT;

C_ASSERT(sizeof(WHV_TRANSLATE_GVA_RESULT) == 8);

typedef union WHV_ADVISE_GPA_RANGE {
    WHV_ADVISE_GPA_RANGE_POPULATE Populate;
} WHV_ADVISE_GPA_RANGE;

C_ASSERT(sizeof(WHV_ADVISE_GPA_RANGE) == 8);

typedef enum WHV_CACHE_TYPE {
    WHvCacheTypeUncached = 0,
    WHvCacheTypeWriteCombining = 1,
    WHvCacheTypeWriteThrough = 4,
#ifdef __x86_64__
    WHvCacheTypeWriteProtected = 5,
#endif
    WHvCacheTypeWriteBack = 6
} WHV_CACHE_TYPE;

typedef union WHV_ACCESS_GPA_CONTROLS {
    UINT64 AsUINT64;
    __C89_NAMELESS struct {
        WHV_CACHE_TYPE CacheType;
        UINT32 Reserved;
    };
} WHV_ACCESS_GPA_CONTROLS;

C_ASSERT(sizeof(WHV_ACCESS_GPA_CONTROLS) == 8);

#define WHV_READ_WRITE_GPA_RANGE_MAX_SIZE 16

#if defined(__x86_64__)

typedef enum WHV_REGISTER_NAME {
    WHvX64RegisterRax = 0x00000000,
    WHvX64RegisterRcx = 0x00000001,
    WHvX64RegisterRdx = 0x00000002,
    WHvX64RegisterRbx = 0x00000003,
    WHvX64RegisterRsp = 0x00000004,
    WHvX64RegisterRbp = 0x00000005,
    WHvX64RegisterRsi = 0x00000006,
    WHvX64RegisterRdi = 0x00000007,
    WHvX64RegisterR8 = 0x00000008,
    WHvX64RegisterR9 = 0x00000009,
    WHvX64RegisterR10 = 0x0000000A,
    WHvX64RegisterR11 = 0x0000000B,
    WHvX64RegisterR12 = 0x0000000C,
    WHvX64RegisterR13 = 0x0000000D,
    WHvX64RegisterR14 = 0x0000000E,
    WHvX64RegisterR15 = 0x0000000F,
    WHvX64RegisterRip = 0x00000010,
    WHvX64RegisterRflags = 0x00000011,
    WHvX64RegisterEs = 0x00000012,
    WHvX64RegisterCs = 0x00000013,
    WHvX64RegisterSs = 0x00000014,
    WHvX64RegisterDs = 0x00000015,
    WHvX64RegisterFs = 0x00000016,
    WHvX64RegisterGs = 0x00000017,
    WHvX64RegisterLdtr = 0x00000018,
    WHvX64RegisterTr = 0x00000019,
    WHvX64RegisterIdtr = 0x0000001A,
    WHvX64RegisterGdtr = 0x0000001B,
    WHvX64RegisterCr0 = 0x0000001C,
    WHvX64RegisterCr2 = 0x0000001D,
    WHvX64RegisterCr3 = 0x0000001E,
    WHvX64RegisterCr4 = 0x0000001F,
    WHvX64RegisterCr8 = 0x00000020,
    WHvX64RegisterDr0 = 0x00000021,
    WHvX64RegisterDr1 = 0x00000022,
    WHvX64RegisterDr2 = 0x00000023,
    WHvX64RegisterDr3 = 0x00000024,
    WHvX64RegisterDr6 = 0x00000025,
    WHvX64RegisterDr7 = 0x00000026,
    WHvX64RegisterXCr0 = 0x00000027,
    WHvX64RegisterVirtualCr0 = 0x00000028,
    WHvX64RegisterVirtualCr3 = 0x00000029,
    WHvX64RegisterVirtualCr4 = 0x0000002A,
    WHvX64RegisterVirtualCr8 = 0x0000002B,
    WHvX64RegisterXmm0 = 0x00001000,
    WHvX64RegisterXmm1 = 0x00001001,
    WHvX64RegisterXmm2 = 0x00001002,
    WHvX64RegisterXmm3 = 0x00001003,
    WHvX64RegisterXmm4 = 0x00001004,
    WHvX64RegisterXmm5 = 0x00001005,
    WHvX64RegisterXmm6 = 0x00001006,
    WHvX64RegisterXmm7 = 0x00001007,
    WHvX64RegisterXmm8 = 0x00001008,
    WHvX64RegisterXmm9 = 0x00001009,
    WHvX64RegisterXmm10 = 0x0000100A,
    WHvX64RegisterXmm11 = 0x0000100B,
    WHvX64RegisterXmm12 = 0x0000100C,
    WHvX64RegisterXmm13 = 0x0000100D,
    WHvX64RegisterXmm14 = 0x0000100E,
    WHvX64RegisterXmm15 = 0x0000100F,
    WHvX64RegisterFpMmx0 = 0x00001010,
    WHvX64RegisterFpMmx1 = 0x00001011,
    WHvX64RegisterFpMmx2 = 0x00001012,
    WHvX64RegisterFpMmx3 = 0x00001013,
    WHvX64RegisterFpMmx4 = 0x00001014,
    WHvX64RegisterFpMmx5 = 0x00001015,
    WHvX64RegisterFpMmx6 = 0x00001016,
    WHvX64RegisterFpMmx7 = 0x00001017,
    WHvX64RegisterFpControlStatus = 0x00001018,
    WHvX64RegisterXmmControlStatus = 0x00001019,
    WHvX64RegisterTsc = 0x00002000,
    WHvX64RegisterEfer = 0x00002001,
    WHvX64RegisterKernelGsBase = 0x00002002,
    WHvX64RegisterApicBase = 0x00002003,
    WHvX64RegisterPat = 0x00002004,
    WHvX64RegisterSysenterCs = 0x00002005,
    WHvX64RegisterSysenterEip = 0x00002006,
    WHvX64RegisterSysenterEsp = 0x00002007,
    WHvX64RegisterStar = 0x00002008,
    WHvX64RegisterLstar = 0x00002009,
    WHvX64RegisterCstar = 0x0000200A,
    WHvX64RegisterSfmask = 0x0000200B,
    WHvX64RegisterInitialApicId = 0x0000200C,
    WHvX64RegisterMsrMtrrCap = 0x0000200D,
    WHvX64RegisterMsrMtrrDefType = 0x0000200E,
    WHvX64RegisterMsrMtrrPhysBase0 = 0x00002010,
    WHvX64RegisterMsrMtrrPhysBase1 = 0x00002011,
    WHvX64RegisterMsrMtrrPhysBase2 = 0x00002012,
    WHvX64RegisterMsrMtrrPhysBase3 = 0x00002013,
    WHvX64RegisterMsrMtrrPhysBase4 = 0x00002014,
    WHvX64RegisterMsrMtrrPhysBase5 = 0x00002015,
    WHvX64RegisterMsrMtrrPhysBase6 = 0x00002016,
    WHvX64RegisterMsrMtrrPhysBase7 = 0x00002017,
    WHvX64RegisterMsrMtrrPhysBase8 = 0x00002018,
    WHvX64RegisterMsrMtrrPhysBase9 = 0x00002019,
    WHvX64RegisterMsrMtrrPhysBaseA = 0x0000201A,
    WHvX64RegisterMsrMtrrPhysBaseB = 0x0000201B,
    WHvX64RegisterMsrMtrrPhysBaseC = 0x0000201C,
    WHvX64RegisterMsrMtrrPhysBaseD = 0x0000201D,
    WHvX64RegisterMsrMtrrPhysBaseE = 0x0000201E,
    WHvX64RegisterMsrMtrrPhysBaseF = 0x0000201F,
    WHvX64RegisterMsrMtrrPhysMask0 = 0x00002040,
    WHvX64RegisterMsrMtrrPhysMask1 = 0x00002041,
    WHvX64RegisterMsrMtrrPhysMask2 = 0x00002042,
    WHvX64RegisterMsrMtrrPhysMask3 = 0x00002043,
    WHvX64RegisterMsrMtrrPhysMask4 = 0x00002044,
    WHvX64RegisterMsrMtrrPhysMask5 = 0x00002045,
    WHvX64RegisterMsrMtrrPhysMask6 = 0x00002046,
    WHvX64RegisterMsrMtrrPhysMask7 = 0x00002047,
    WHvX64RegisterMsrMtrrPhysMask8 = 0x00002048,
    WHvX64RegisterMsrMtrrPhysMask9 = 0x00002049,
    WHvX64RegisterMsrMtrrPhysMaskA = 0x0000204A,
    WHvX64RegisterMsrMtrrPhysMaskB = 0x0000204B,
    WHvX64RegisterMsrMtrrPhysMaskC = 0x0000204C,
    WHvX64RegisterMsrMtrrPhysMaskD = 0x0000204D,
    WHvX64RegisterMsrMtrrPhysMaskE = 0x0000204E,
    WHvX64RegisterMsrMtrrPhysMaskF = 0x0000204F,
    WHvX64RegisterMsrMtrrFix64k00000 = 0x00002070,
    WHvX64RegisterMsrMtrrFix16k80000 = 0x00002071,
    WHvX64RegisterMsrMtrrFix16kA0000 = 0x00002072,
    WHvX64RegisterMsrMtrrFix4kC0000 = 0x00002073,
    WHvX64RegisterMsrMtrrFix4kC8000 = 0x00002074,
    WHvX64RegisterMsrMtrrFix4kD0000 = 0x00002075,
    WHvX64RegisterMsrMtrrFix4kD8000 = 0x00002076,
    WHvX64RegisterMsrMtrrFix4kE0000 = 0x00002077,
    WHvX64RegisterMsrMtrrFix4kE8000 = 0x00002078,
    WHvX64RegisterMsrMtrrFix4kF0000 = 0x00002079,
    WHvX64RegisterMsrMtrrFix4kF8000 = 0x0000207A,
    WHvX64RegisterTscAux = 0x0000207B,
    WHvX64RegisterBndcfgs = 0x0000207C,
    WHvX64RegisterMCount = 0x0000207E,
    WHvX64RegisterACount = 0x0000207F,
    WHvX64RegisterSpecCtrl = 0x00002084,
    WHvX64RegisterPredCmd = 0x00002085,
    WHvX64RegisterTscVirtualOffset = 0x00002087,
    WHvX64RegisterTsxCtrl = 0x00002088,
    WHvX64RegisterXss = 0x0000208B,
    WHvX64RegisterUCet = 0x0000208C,
    WHvX64RegisterSCet = 0x0000208D,
    WHvX64RegisterSsp = 0x0000208E,
    WHvX64RegisterPl0Ssp = 0x0000208F,
    WHvX64RegisterPl1Ssp = 0x00002090,
    WHvX64RegisterPl2Ssp = 0x00002091,
    WHvX64RegisterPl3Ssp = 0x00002092,
    WHvX64RegisterInterruptSspTableAddr = 0x00002093,
    WHvX64RegisterTscDeadline = 0x00002095,
    WHvX64RegisterTscAdjust = 0x00002096,
    WHvX64RegisterUmwaitControl = 0x00002098,
    WHvX64RegisterXfd = 0x00002099,
    WHvX64RegisterXfdErr = 0x0000209A,
    WHvX64RegisterMsrIa32MiscEnable = 0x000020A0,
    WHvX64RegisterIa32FeatureControl = 0x000020A1,
    WHvX64RegisterIa32VmxBasic = 0x000020A2,
    WHvX64RegisterIa32VmxPinbasedCtls = 0x000020A3,
    WHvX64RegisterIa32VmxProcbasedCtls = 0x000020A4,
    WHvX64RegisterIa32VmxExitCtls = 0x000020A5,
    WHvX64RegisterIa32VmxEntryCtls = 0x000020A6,
    WHvX64RegisterIa32VmxMisc = 0x000020A7,
    WHvX64RegisterIa32VmxCr0Fixed0 = 0x000020A8,
    WHvX64RegisterIa32VmxCr0Fixed1 = 0x000020A9,
    WHvX64RegisterIa32VmxCr4Fixed0 = 0x000020AA,
    WHvX64RegisterIa32VmxCr4Fixed1 = 0x000020AB,
    WHvX64RegisterIa32VmxVmcsEnum = 0x000020AC,
    WHvX64RegisterIa32VmxProcbasedCtls2 = 0x000020AD,
    WHvX64RegisterIa32VmxEptVpidCap = 0x000020AE,
    WHvX64RegisterIa32VmxTruePinbasedCtls = 0x000020AF,
    WHvX64RegisterIa32VmxTrueProcbasedCtls = 0x000020B0,
    WHvX64RegisterIa32VmxTrueExitCtls = 0x000020B1,
    WHvX64RegisterIa32VmxTrueEntryCtls = 0x000020B2,
    WHvX64RegisterAmdVmHsavePa = 0x000020B3,
    WHvX64RegisterAmdVmCr = 0x000020B4,
    WHvX64RegisterApicId = 0x00003002,
    WHvX64RegisterApicVersion = 0x00003003,
    WHvX64RegisterApicTpr = 0x00003008,
    WHvX64RegisterApicPpr = 0x0000300A,
    WHvX64RegisterApicEoi = 0x0000300B,
    WHvX64RegisterApicLdr = 0x0000300D,
    WHvX64RegisterApicSpurious = 0x0000300F,
    WHvX64RegisterApicIsr0 = 0x00003010,
    WHvX64RegisterApicIsr1 = 0x00003011,
    WHvX64RegisterApicIsr2 = 0x00003012,
    WHvX64RegisterApicIsr3 = 0x00003013,
    WHvX64RegisterApicIsr4 = 0x00003014,
    WHvX64RegisterApicIsr5 = 0x00003015,
    WHvX64RegisterApicIsr6 = 0x00003016,
    WHvX64RegisterApicIsr7 = 0x00003017,
    WHvX64RegisterApicTmr0 = 0x00003018,
    WHvX64RegisterApicTmr1 = 0x00003019,
    WHvX64RegisterApicTmr2 = 0x0000301A,
    WHvX64RegisterApicTmr3 = 0x0000301B,
    WHvX64RegisterApicTmr4 = 0x0000301C,
    WHvX64RegisterApicTmr5 = 0x0000301D,
    WHvX64RegisterApicTmr6 = 0x0000301E,
    WHvX64RegisterApicTmr7 = 0x0000301F,
    WHvX64RegisterApicIrr0 = 0x00003020,
    WHvX64RegisterApicIrr1 = 0x00003021,
    WHvX64RegisterApicIrr2 = 0x00003022,
    WHvX64RegisterApicIrr3 = 0x00003023,
    WHvX64RegisterApicIrr4 = 0x00003024,
    WHvX64RegisterApicIrr5 = 0x00003025,
    WHvX64RegisterApicIrr6 = 0x00003026,
    WHvX64RegisterApicIrr7 = 0x00003027,
    WHvX64RegisterApicEse = 0x00003028,
    WHvX64RegisterApicIcr = 0x00003030,
    WHvX64RegisterApicLvtTimer = 0x00003032,
    WHvX64RegisterApicLvtThermal = 0x00003033,
    WHvX64RegisterApicLvtPerfmon = 0x00003034,
    WHvX64RegisterApicLvtLint0 = 0x00003035,
    WHvX64RegisterApicLvtLint1 = 0x00003036,
    WHvX64RegisterApicLvtError = 0x00003037,
    WHvX64RegisterApicInitCount = 0x00003038,
    WHvX64RegisterApicCurrentCount = 0x00003039,
    WHvX64RegisterApicDivide = 0x0000303E,
    WHvX64RegisterApicSelfIpi = 0x0000303F,
    WHvRegisterSint0 = 0x00004000,
    WHvRegisterSint1 = 0x00004001,
    WHvRegisterSint2 = 0x00004002,
    WHvRegisterSint3 = 0x00004003,
    WHvRegisterSint4 = 0x00004004,
    WHvRegisterSint5 = 0x00004005,
    WHvRegisterSint6 = 0x00004006,
    WHvRegisterSint7 = 0x00004007,
    WHvRegisterSint8 = 0x00004008,
    WHvRegisterSint9 = 0x00004009,
    WHvRegisterSint10 = 0x0000400A,
    WHvRegisterSint11 = 0x0000400B,
    WHvRegisterSint12 = 0x0000400C,
    WHvRegisterSint13 = 0x0000400D,
    WHvRegisterSint14 = 0x0000400E,
    WHvRegisterSint15 = 0x0000400F,
    WHvRegisterScontrol = 0x00004010,
    WHvRegisterSversion = 0x00004011,
    WHvRegisterSiefp = 0x00004012,
    WHvRegisterSimp = 0x00004013,
    WHvRegisterEom = 0x00004014,
    WHvRegisterVpRuntime = 0x00005000,
    WHvX64RegisterHypercall = 0x00005001,
    WHvRegisterGuestOsId = 0x00005002,
    WHvRegisterVpAssistPage = 0x00005013,
    WHvRegisterReferenceTsc = 0x00005017,
    WHvRegisterReferenceTscSequence = 0x0000501A,
    WHvX64RegisterNestedGuestState = 0x00005050,
    WHvX64RegisterNestedCurrentVmGpa = 0x00005051,
    WHvX64RegisterNestedVmxInvEpt = 0x00005052,
    WHvX64RegisterNestedVmxInvVpid = 0x00005053,
    WHvRegisterPendingInterruption = 0x80000000,
    WHvRegisterInterruptState = 0x80000001,
    WHvRegisterPendingEvent = 0x80000002,
    WHvRegisterPendingEvent1 = 0x80000003,
    WHvX64RegisterDeliverabilityNotifications = 0x80000004,
    WHvRegisterDeliverabilityNotifications = 0x80000004,
    WHvRegisterInternalActivityState = 0x80000005,
    WHvX64RegisterPendingDebugException = 0x80000006,
    WHvRegisterPendingEvent2 = 0x80000007,
    WHvRegisterPendingEvent3 = 0x80000008
} WHV_REGISTER_NAME;

#elif defined (__aarch64__)

typedef enum WHV_REGISTER_NAME {
    WHvArm64RegisterX0 = 0x00020000,
    WHvArm64RegisterX1 = 0x00020001,
    WHvArm64RegisterX2 = 0x00020002,
    WHvArm64RegisterX3 = 0x00020003,
    WHvArm64RegisterX4 = 0x00020004,
    WHvArm64RegisterX5 = 0x00020005,
    WHvArm64RegisterX6 = 0x00020006,
    WHvArm64RegisterX7 = 0x00020007,
    WHvArm64RegisterX8 = 0x00020008,
    WHvArm64RegisterX9 = 0x00020009,
    WHvArm64RegisterX10 = 0x0002000A,
    WHvArm64RegisterX11 = 0x0002000B,
    WHvArm64RegisterX12 = 0x0002000C,
    WHvArm64RegisterX13 = 0x0002000D,
    WHvArm64RegisterX14 = 0x0002000E,
    WHvArm64RegisterX15 = 0x0002000F,
    WHvArm64RegisterX16 = 0x00020010,
    WHvArm64RegisterX17 = 0x00020011,
    WHvArm64RegisterX18 = 0x00020012,
    WHvArm64RegisterX19 = 0x00020013,
    WHvArm64RegisterX20 = 0x00020014,
    WHvArm64RegisterX21 = 0x00020015,
    WHvArm64RegisterX22 = 0x00020016,
    WHvArm64RegisterX23 = 0x00020017,
    WHvArm64RegisterX24 = 0x00020018,
    WHvArm64RegisterX25 = 0x00020019,
    WHvArm64RegisterX26 = 0x0002001A,
    WHvArm64RegisterX27 = 0x0002001B,
    WHvArm64RegisterX28 = 0x0002001C,
    WHvArm64RegisterFp = 0x0002001D,
    WHvArm64RegisterLr = 0x0002001E,
    WHvArm64RegisterPc = 0x00020022,
    WHvArm64RegisterXzr = 0x0002FFFE,
    WHvArm64RegisterQ0 = 0x00030000,
    WHvArm64RegisterQ1 = 0x00030001,
    WHvArm64RegisterQ2 = 0x00030002,
    WHvArm64RegisterQ3 = 0x00030003,
    WHvArm64RegisterQ4 = 0x00030004,
    WHvArm64RegisterQ5 = 0x00030005,
    WHvArm64RegisterQ6 = 0x00030006,
    WHvArm64RegisterQ7 = 0x00030007,
    WHvArm64RegisterQ8 = 0x00030008,
    WHvArm64RegisterQ9 = 0x00030009,
    WHvArm64RegisterQ10 = 0x0003000A,
    WHvArm64RegisterQ11 = 0x0003000B,
    WHvArm64RegisterQ12 = 0x0003000C,
    WHvArm64RegisterQ13 = 0x0003000D,
    WHvArm64RegisterQ14 = 0x0003000E,
    WHvArm64RegisterQ15 = 0x0003000F,
    WHvArm64RegisterQ16 = 0x00030010,
    WHvArm64RegisterQ17 = 0x00030011,
    WHvArm64RegisterQ18 = 0x00030012,
    WHvArm64RegisterQ19 = 0x00030013,
    WHvArm64RegisterQ20 = 0x00030014,
    WHvArm64RegisterQ21 = 0x00030015,
    WHvArm64RegisterQ22 = 0x00030016,
    WHvArm64RegisterQ23 = 0x00030017,
    WHvArm64RegisterQ24 = 0x00030018,
    WHvArm64RegisterQ25 = 0x00030019,
    WHvArm64RegisterQ26 = 0x0003001A,
    WHvArm64RegisterQ27 = 0x0003001B,
    WHvArm64RegisterQ28 = 0x0003001C,
    WHvArm64RegisterQ29 = 0x0003001D,
    WHvArm64RegisterQ30 = 0x0003001E,
    WHvArm64RegisterQ31 = 0x0003001F,
    WHvArm64RegisterCurrentEl = 0x00021003,
    WHvArm64RegisterDaif = 0x00021004,
    WHvArm64RegisterDit = 0x00021005,
    WHvArm64RegisterPstate = 0x00020023,
    WHvArm64RegisterElrEl1 = 0x00040015,
    WHvArm64RegisterFpcr = 0x00040012,
    WHvArm64RegisterFpsr = 0x00040013,
    WHvArm64RegisterNzcv = 0x00021006,
    WHvArm64RegisterPan = 0x00021007,
    WHvArm64RegisterSp = 0x0002001F,
    WHvArm64RegisterSpEl0 = 0x00020020,
    WHvArm64RegisterSpEl1 = 0x00020021,
    WHvArm64RegisterSpSel = 0x00021008,
    WHvArm64RegisterSpsrEl1 = 0x00040014,
    WHvArm64RegisterSsbs = 0x00021009,
    WHvArm64RegisterTco = 0x0002100A,
    WHvArm64RegisterUao = 0x0002100B,
    WHvArm64RegisterIdAa64Dfr0El1 = 0x00022028,
    WHvArm64RegisterIdAa64Dfr1El1 = 0x00022029,
    WHvArm64RegisterIdAa64Isar0El1 = 0x00022030,
    WHvArm64RegisterIdAa64Isar1El1 = 0x00022031,
    WHvArm64RegisterIdAa64Isar2El1 = 0x00022032,
    WHvArm64RegisterIdAa64Mmfr0El1 = 0x00022038,
    WHvArm64RegisterIdAa64Mmfr1El1 = 0x00022039,
    WHvArm64RegisterIdAa64Mmfr2El1 = 0x0002203A,
    WHvArm64RegisterIdAa64Mmfr3El1 = 0x0002203B,
    WHvArm64RegisterIdAa64Mmfr4El1 = 0x0002203C,
    WHvArm64RegisterIdAa64Pfr0El1 = 0x00022020,
    WHvArm64RegisterIdAa64Pfr1El1 = 0x00022021,
    WHvArm64RegisterIdAa64Pfr2El1 = 0x00022022,
    WHvArm64RegisterIdAa64Smfr0El1 = 0x00022025,
    WHvArm64RegisterIdAa64Zfr0El1 = 0x00022024,
    WHvArm64RegisterIdDfr0El1 = 0x0002200A,
    WHvArm64RegisterIdIsar0El1 = 0x00022010,
    WHvArm64RegisterIdIsar1El1 = 0x00022011,
    WHvArm64RegisterIdIsar2El1 = 0x00022012,
    WHvArm64RegisterIdIsar3El1 = 0x00022013,
    WHvArm64RegisterIdIsar4El1 = 0x00022014,
    WHvArm64RegisterIdIsar5El1 = 0x00022015,
    WHvArm64RegisterIdMmfr0El1 = 0x0002200C,
    WHvArm64RegisterIdMmfr1El1 = 0x0002200D,
    WHvArm64RegisterIdMmfr2El1 = 0x0002200E,
    WHvArm64RegisterIdMmfr3El1 = 0x0002200F,
    WHvArm64RegisterIdPfr0El1 = 0x00022008,
    WHvArm64RegisterIdPfr1El1 = 0x00022009,
    WHvArm64RegisterIdPfr2El1 = 0x0002201C,
    WHvArm64RegisterApdAKeyHiEl1 = 0x00040026,
    WHvArm64RegisterApdAKeyLoEl1 = 0x00040027,
    WHvArm64RegisterApdBKeyHiEl1 = 0x00040028,
    WHvArm64RegisterApdBKeyLoEl1 = 0x00040029,
    WHvArm64RegisterApgAKeyHiEl1 = 0x0004002A,
    WHvArm64RegisterApgAKeyLoEl1 = 0x0004002B,
    WHvArm64RegisterApiAKeyHiEl1 = 0x0004002C,
    WHvArm64RegisterApiAKeyLoEl1 = 0x0004002D,
    WHvArm64RegisterApiBKeyHiEl1 = 0x0004002E,
    WHvArm64RegisterApiBKeyLoEl1 = 0x0004002F,
    WHvArm64RegisterCcsidrEl1 = 0x00040030,
    WHvArm64RegisterCcsidr2El1 = 0x00040031,
    WHvArm64RegisterClidrEl1 = 0x00040032,
    WHvArm64RegisterContextidrEl1 = 0x0004000D,
    WHvArm64RegisterCpacrEl1 = 0x00040004,
    WHvArm64RegisterCsselrEl1 = 0x00040035,
    WHvArm64RegisterCtrEl0 = 0x00040036,
    WHvArm64RegisterDczidEl0 = 0x00040038,
    WHvArm64RegisterEsrEl1 = 0x00040008,
    WHvArm64RegisterFarEl1 = 0x00040009,
    WHvArm64RegisterIsrEl1 = 0x0004004A,
    WHvArm64RegisterMairEl1 = 0x0004000B,
    WHvArm64RegisterMidrEl1 = 0x00040051,
    WHvArm64RegisterMpidrEl1 = 0x00040001,
    WHvArm64RegisterMvfr0El1 = 0x00040052,
    WHvArm64RegisterMvfr1El1 = 0x00040053,
    WHvArm64RegisterMvfr2El1 = 0x00040054,
    WHvArm64RegisterParEl1 = 0x0004000A,
    WHvArm64RegisterRevidrEl1 = 0x00040055,
    WHvArm64RegisterRgsrEl1 = 0x00040056,
    WHvArm64RegisterRndr = 0x00040057,
    WHvArm64RegisterRndrrs = 0x00040058,
    WHvArm64RegisterSctlrEl1 = 0x00040002,
    WHvArm64RegisterTcrEl1 = 0x00040007,
    WHvArm64RegisterTpidrEl0 = 0x00040011,
    WHvArm64RegisterTpidrEl1 = 0x0004000E,
    WHvArm64RegisterTpidrroEl0 = 0x00040010,
    WHvArm64RegisterTtbr0El1 = 0x00040005,
    WHvArm64RegisterTtbr1El1 = 0x00040006,
    WHvArm64RegisterVbarEl1 = 0x0004000C,
    WHvArm64RegisterDbgbcr0El1 = 0x00050000,
    WHvArm64RegisterDbgbcr1El1 = 0x00050001,
    WHvArm64RegisterDbgbcr2El1 = 0x00050002,
    WHvArm64RegisterDbgbcr3El1 = 0x00050003,
    WHvArm64RegisterDbgbcr4El1 = 0x00050004,
    WHvArm64RegisterDbgbcr5El1 = 0x00050005,
    WHvArm64RegisterDbgbcr6El1 = 0x00050006,
    WHvArm64RegisterDbgbcr7El1 = 0x00050007,
    WHvArm64RegisterDbgbcr8El1 = 0x00050008,
    WHvArm64RegisterDbgbcr9El1 = 0x00050009,
    WHvArm64RegisterDbgbcr10El1 = 0x0005000A,
    WHvArm64RegisterDbgbcr11El1 = 0x0005000B,
    WHvArm64RegisterDbgbcr12El1 = 0x0005000C,
    WHvArm64RegisterDbgbcr13El1 = 0x0005000D,
    WHvArm64RegisterDbgbcr14El1 = 0x0005000E,
    WHvArm64RegisterDbgbcr15El1 = 0x0005000F,
    WHvArm64RegisterDbgbvr0El1 = 0x00050020,
    WHvArm64RegisterDbgbvr1El1 = 0x00050021,
    WHvArm64RegisterDbgbvr2El1 = 0x00050022,
    WHvArm64RegisterDbgbvr3El1 = 0x00050023,
    WHvArm64RegisterDbgbvr4El1 = 0x00050024,
    WHvArm64RegisterDbgbvr5El1 = 0x00050025,
    WHvArm64RegisterDbgbvr6El1 = 0x00050026,
    WHvArm64RegisterDbgbvr7El1 = 0x00050027,
    WHvArm64RegisterDbgbvr8El1 = 0x00050028,
    WHvArm64RegisterDbgbvr9El1 = 0x00050029,
    WHvArm64RegisterDbgbvr10El1 = 0x0005002A,
    WHvArm64RegisterDbgbvr11El1 = 0x0005002B,
    WHvArm64RegisterDbgbvr12El1 = 0x0005002C,
    WHvArm64RegisterDbgbvr13El1 = 0x0005002D,
    WHvArm64RegisterDbgbvr14El1 = 0x0005002E,
    WHvArm64RegisterDbgbvr15El1 = 0x0005002F,
    WHvArm64RegisterDbgprcrEl1 = 0x00050045,
    WHvArm64RegisterDbgwcr0El1 = 0x00050010,
    WHvArm64RegisterDbgwcr1El1 = 0x00050011,
    WHvArm64RegisterDbgwcr2El1 = 0x00050012,
    WHvArm64RegisterDbgwcr3El1 = 0x00050013,
    WHvArm64RegisterDbgwcr4El1 = 0x00050014,
    WHvArm64RegisterDbgwcr5El1 = 0x00050015,
    WHvArm64RegisterDbgwcr6El1 = 0x00050016,
    WHvArm64RegisterDbgwcr7El1 = 0x00050017,
    WHvArm64RegisterDbgwcr8El1 = 0x00050018,
    WHvArm64RegisterDbgwcr9El1 = 0x00050019,
    WHvArm64RegisterDbgwcr10El1 = 0x0005001A,
    WHvArm64RegisterDbgwcr11El1 = 0x0005001B,
    WHvArm64RegisterDbgwcr12El1 = 0x0005001C,
    WHvArm64RegisterDbgwcr13El1 = 0x0005001D,
    WHvArm64RegisterDbgwcr14El1 = 0x0005001E,
    WHvArm64RegisterDbgwcr15El1 = 0x0005001F,
    WHvArm64RegisterDbgwvr0El1 = 0x00050030,
    WHvArm64RegisterDbgwvr1El1 = 0x00050031,
    WHvArm64RegisterDbgwvr2El1 = 0x00050032,
    WHvArm64RegisterDbgwvr3El1 = 0x00050033,
    WHvArm64RegisterDbgwvr4El1 = 0x00050034,
    WHvArm64RegisterDbgwvr5El1 = 0x00050035,
    WHvArm64RegisterDbgwvr6El1 = 0x00050036,
    WHvArm64RegisterDbgwvr7El1 = 0x00050037,
    WHvArm64RegisterDbgwvr8El1 = 0x00050038,
    WHvArm64RegisterDbgwvr9El1 = 0x00050039,
    WHvArm64RegisterDbgwvr10El1 = 0x0005003A,
    WHvArm64RegisterDbgwvr11El1 = 0x0005003B,
    WHvArm64RegisterDbgwvr12El1 = 0x0005003C,
    WHvArm64RegisterDbgwvr13El1 = 0x0005003D,
    WHvArm64RegisterDbgwvr14El1 = 0x0005003E,
    WHvArm64RegisterDbgwvr15El1 = 0x0005003F,
    WHvArm64RegisterMdrarEl1 = 0x0005004C,
    WHvArm64RegisterMdscrEl1 = 0x0005004D,
    WHvArm64RegisterOsdlrEl1 = 0x0005004E,
    WHvArm64RegisterOslarEl1 = 0x00050052,
    WHvArm64RegisterOslsrEl1 = 0x00050053,
    WHvArm64RegisterPmccfiltrEl0 = 0x00052000,
    WHvArm64RegisterPmccntrEl0 = 0x00052001,
    WHvArm64RegisterPmceid0El0 = 0x00052002,
    WHvArm64RegisterPmceid1El0 = 0x00052003,
    WHvArm64RegisterPmcntenclrEl0 = 0x00052004,
    WHvArm64RegisterPmcntensetEl0 = 0x00052005,
    WHvArm64RegisterPmcrEl0 = 0x00052006,
    WHvArm64RegisterPmevcntr0El0 = 0x00052007,
    WHvArm64RegisterPmevcntr1El0 = 0x00052008,
    WHvArm64RegisterPmevcntr2El0 = 0x00052009,
    WHvArm64RegisterPmevcntr3El0 = 0x0005200A,
    WHvArm64RegisterPmevcntr4El0 = 0x0005200B,
    WHvArm64RegisterPmevcntr5El0 = 0x0005200C,
    WHvArm64RegisterPmevcntr6El0 = 0x0005200D,
    WHvArm64RegisterPmevcntr7El0 = 0x0005200E,
    WHvArm64RegisterPmevcntr8El0 = 0x0005200F,
    WHvArm64RegisterPmevcntr9El0 = 0x00052010,
    WHvArm64RegisterPmevcntr10El0 = 0x00052011,
    WHvArm64RegisterPmevcntr11El0 = 0x00052012,
    WHvArm64RegisterPmevcntr12El0 = 0x00052013,
    WHvArm64RegisterPmevcntr13El0 = 0x00052014,
    WHvArm64RegisterPmevcntr14El0 = 0x00052015,
    WHvArm64RegisterPmevcntr15El0 = 0x00052016,
    WHvArm64RegisterPmevcntr16El0 = 0x00052017,
    WHvArm64RegisterPmevcntr17El0 = 0x00052018,
    WHvArm64RegisterPmevcntr18El0 = 0x00052019,
    WHvArm64RegisterPmevcntr19El0 = 0x0005201A,
    WHvArm64RegisterPmevcntr20El0 = 0x0005201B,
    WHvArm64RegisterPmevcntr21El0 = 0x0005201C,
    WHvArm64RegisterPmevcntr22El0 = 0x0005201D,
    WHvArm64RegisterPmevcntr23El0 = 0x0005201E,
    WHvArm64RegisterPmevcntr24El0 = 0x0005201F,
    WHvArm64RegisterPmevcntr25El0 = 0x00052020,
    WHvArm64RegisterPmevcntr26El0 = 0x00052021,
    WHvArm64RegisterPmevcntr27El0 = 0x00052022,
    WHvArm64RegisterPmevcntr28El0 = 0x00052023,
    WHvArm64RegisterPmevcntr29El0 = 0x00052024,
    WHvArm64RegisterPmevcntr30El0 = 0x00052025,
    WHvArm64RegisterPmevtyper0El0 = 0x00052026,
    WHvArm64RegisterPmevtyper1El0 = 0x00052027,
    WHvArm64RegisterPmevtyper2El0 = 0x00052028,
    WHvArm64RegisterPmevtyper3El0 = 0x00052029,
    WHvArm64RegisterPmevtyper4El0 = 0x0005202A,
    WHvArm64RegisterPmevtyper5El0 = 0x0005202B,
    WHvArm64RegisterPmevtyper6El0 = 0x0005202C,
    WHvArm64RegisterPmevtyper7El0 = 0x0005202D,
    WHvArm64RegisterPmevtyper8El0 = 0x0005202E,
    WHvArm64RegisterPmevtyper9El0 = 0x0005202F,
    WHvArm64RegisterPmevtyper10El0 = 0x00052030,
    WHvArm64RegisterPmevtyper11El0 = 0x00052031,
    WHvArm64RegisterPmevtyper12El0 = 0x00052032,
    WHvArm64RegisterPmevtyper13El0 = 0x00052033,
    WHvArm64RegisterPmevtyper14El0 = 0x00052034,
    WHvArm64RegisterPmevtyper15El0 = 0x00052035,
    WHvArm64RegisterPmevtyper16El0 = 0x00052036,
    WHvArm64RegisterPmevtyper17El0 = 0x00052037,
    WHvArm64RegisterPmevtyper18El0 = 0x00052038,
    WHvArm64RegisterPmevtyper19El0 = 0x00052039,
    WHvArm64RegisterPmevtyper20El0 = 0x0005203A,
    WHvArm64RegisterPmevtyper21El0 = 0x0005203B,
    WHvArm64RegisterPmevtyper22El0 = 0x0005203C,
    WHvArm64RegisterPmevtyper23El0 = 0x0005203D,
    WHvArm64RegisterPmevtyper24El0 = 0x0005203E,
    WHvArm64RegisterPmevtyper25El0 = 0x0005203F,
    WHvArm64RegisterPmevtyper26El0 = 0x00052040,
    WHvArm64RegisterPmevtyper27El0 = 0x00052041,
    WHvArm64RegisterPmevtyper28El0 = 0x00052042,
    WHvArm64RegisterPmevtyper29El0 = 0x00052043,
    WHvArm64RegisterPmevtyper30El0 = 0x00052044,
    WHvArm64RegisterPmintenclrEl1 = 0x00052045,
    WHvArm64RegisterPmintensetEl1 = 0x00052046,
    WHvArm64RegisterPmovsclrEl0 = 0x00052048,
    WHvArm64RegisterPmovssetEl0 = 0x00052049,
    WHvArm64RegisterPmselrEl0 = 0x0005204A,
    WHvArm64RegisterPmswincEl0 = 0x0005204B,
    WHvArm64RegisterPmuserenrEl0 = 0x0005204C,
    WHvArm64RegisterPmxevcntrEl0 = 0x0005204D,
    WHvArm64RegisterPmxevtyperEl0 = 0x0005204E,
    WHvArm64RegisterCntfrqEl0 = 0x00058000,
    WHvArm64RegisterCntkctlEl1 = 0x00058008,
    WHvArm64RegisterCntvCtlEl0 = 0x0005800E,
    WHvArm64RegisterCntvCvalEl0 = 0x0005800F,
    WHvArm64RegisterCntvTvalEl0 = 0x00058010,
    WHvArm64RegisterCntvctEl0 = 0x00058011,
    WHvArm64RegisterIccAp1R0El1 = 0x00060000,
    WHvArm64RegisterIccAp1R1El1 = 0x00060001,
    WHvArm64RegisterIccAp1R2El1 = 0x00060002,
    WHvArm64RegisterIccAp1R3El1 = 0x00060003,
    WHvArm64RegisterIccAsgi1REl1 = 0x00060004,
    WHvArm64RegisterIccBpr1El1 = 0x00060005,
    WHvArm64RegisterIccCtlrEl1 = 0x00060006,
    WHvArm64RegisterIccDirEl1 = 0x00060007,
    WHvArm64RegisterIccEoir1El1 = 0x00060008,
    WHvArm64RegisterIccHppir1El1 = 0x00060009,
    WHvArm64RegisterIccIar1El1 = 0x0006000A,
    WHvArm64RegisterIccIgrpen1El1 = 0x0006000B,
    WHvArm64RegisterIccPmrEl1 = 0x0006000C,
    WHvArm64RegisterIccRprEl1 = 0x0006000D,
    WHvArm64RegisterIccSgi1REl1 = 0x0006000E,
    WHvArm64RegisterIccSreEl1 = 0x0006000F,
    WHvRegisterSint0 = 0x000A0000,
    WHvRegisterSint1 = 0x000A0001,
    WHvRegisterSint2 = 0x000A0002,
    WHvRegisterSint3 = 0x000A0003,
    WHvRegisterSint4 = 0x000A0004,
    WHvRegisterSint5 = 0x000A0005,
    WHvRegisterSint6 = 0x000A0006,
    WHvRegisterSint7 = 0x000A0007,
    WHvRegisterSint8 = 0x000A0008,
    WHvRegisterSint9 = 0x000A0009,
    WHvRegisterSint10 = 0x000A000A,
    WHvRegisterSint11 = 0x000A000B,
    WHvRegisterSint12 = 0x000A000C,
    WHvRegisterSint13 = 0x000A000D,
    WHvRegisterSint14 = 0x000A000E,
    WHvRegisterSint15 = 0x000A000F,
    WHvRegisterScontrol = 0x000A0010,
    WHvRegisterSversion = 0x000A0011,
    WHvRegisterSifp = 0x000A0012,
    WHvRegisterSipp = 0x000A0013,
    WHvRegisterEom = 0x000A0014,
    WHvRegisterVpRuntime = 0x00090000,
    WHvRegisterGuestOsId = 0x00090002,
    WHvRegisterVpAssistPage = 0x00090013,
    WHvArm64RegisterPartitionInfoPage = 0x00090015,
    WHvRegisterReferenceTsc = 0x00090017,
    WHvRegisterReferenceTscSequence = 0x0009001A,
    WHvRegisterPendingEvent0 = 0x00010004,
    WHvRegisterPendingEvent1 = 0x00010005,
    WHvRegisterDeliverabilityNotifications = 0x00010006,
    WHvRegisterInternalActivityState = 0x00000004,
    WHvRegisterPendingEvent2 = 0x00010008,
    WHvRegisterPendingEvent3 = 0x00010009
} WHV_REGISTER_NAME;

#define WHvRegisterSiefp WHvRegisterSifp
#define WHvRegisterSimp WHvRegisterSipp
#define WHvRegisterPendingEvent WHvRegisterPendingEvent0

#endif /* __x86_64__ || __aarch64__ */

typedef union DECLSPEC_ALIGN(16) WHV_UINT128 {
    __C89_NAMELESS struct {
        UINT64 Low64;
        UINT64 High64;
    };
    UINT32 Dword[4];
} WHV_UINT128;

C_ASSERT(sizeof(WHV_UINT128) == 16);

typedef union WHV_X64_FP_REGISTER {
    __C89_NAMELESS struct {
        UINT64 Mantissa;
        UINT64 BiasedExponent:15;
        UINT64 Sign:1;
        UINT64 Reserved:48;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_FP_REGISTER;

C_ASSERT(sizeof(WHV_X64_FP_REGISTER) == 16);

typedef union WHV_X64_FP_CONTROL_STATUS_REGISTER {
    __C89_NAMELESS struct {
        UINT16 FpControl;
        UINT16 FpStatus;
        UINT8 FpTag;
        UINT8 Reserved;
        UINT16 LastFpOp;
        __C89_NAMELESS union {
            UINT64 LastFpRip;
            __C89_NAMELESS struct {
                UINT32 LastFpEip;
                UINT16 LastFpCs;
                UINT16 Reserved2;
            };
        };
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_FP_CONTROL_STATUS_REGISTER;

C_ASSERT(sizeof(WHV_X64_FP_CONTROL_STATUS_REGISTER) == 16);

typedef union WHV_X64_XMM_CONTROL_STATUS_REGISTER {
    __C89_NAMELESS struct {
        __C89_NAMELESS union {
            UINT64 LastFpRdp;
            __C89_NAMELESS struct {
                UINT32 LastFpDp;
                UINT16 LastFpDs;
                UINT16 Reserved;
            };
        };
        UINT32 XmmStatusControl;
        UINT32 XmmStatusControlMask;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_XMM_CONTROL_STATUS_REGISTER;

C_ASSERT(sizeof(WHV_X64_FP_CONTROL_STATUS_REGISTER) == 16);

typedef struct WHV_X64_SEGMENT_REGISTER {
    UINT64 Base;
    UINT32 Limit;
    UINT16 Selector;
    __C89_NAMELESS union {
        __C89_NAMELESS struct {
            UINT16 SegmentType:4;
            UINT16 NonSystemSegment:1;
            UINT16 DescriptorPrivilegeLevel:2;
            UINT16 Present:1;
            UINT16 Reserved:4;
            UINT16 Available:1;
            UINT16 Long:1;
            UINT16 Default:1;
            UINT16 Granularity:1;
        };
        UINT16 Attributes;
    };
} WHV_X64_SEGMENT_REGISTER;

C_ASSERT(sizeof(WHV_X64_SEGMENT_REGISTER) == 16);

typedef struct WHV_X64_TABLE_REGISTER {
    UINT16 Pad[3];
    UINT16 Limit;
    UINT64 Base;
} WHV_X64_TABLE_REGISTER;

C_ASSERT(sizeof(WHV_X64_TABLE_REGISTER) == 16);

typedef union WHV_X64_INTERRUPT_STATE_REGISTER {
    __C89_NAMELESS struct {
        UINT64 InterruptShadow:1;
        UINT64 NmiMasked:1;
        UINT64 Reserved:62;
    };
    UINT64 AsUINT64;
} WHV_X64_INTERRUPT_STATE_REGISTER;

C_ASSERT(sizeof(WHV_X64_INTERRUPT_STATE_REGISTER) == 8);

typedef union WHV_X64_PENDING_INTERRUPTION_REGISTER {
    __C89_NAMELESS struct {
        UINT32 InterruptionPending:1;
        UINT32 InterruptionType:3;
        UINT32 DeliverErrorCode:1;
        UINT32 InstructionLength:4;
        UINT32 NestedEvent:1;
        UINT32 Reserved:6;
        UINT32 InterruptionVector:16;
        UINT32 ErrorCode;
    };
    UINT64 AsUINT64;
} WHV_X64_PENDING_INTERRUPTION_REGISTER;

C_ASSERT(sizeof(WHV_X64_PENDING_INTERRUPTION_REGISTER) == sizeof(UINT64));

typedef union WHV_DELIVERABILITY_NOTIFICATIONS_REGISTER {
    __C89_NAMELESS struct {
#if defined(__x86_64__)
        UINT64 NmiNotification:1;
        UINT64 InterruptNotification:1;
        UINT64 InterruptPriority:4;
        UINT64 Reserved:42;
#elif defined(__aarch64__)
        UINT64 Reserved:48;
#endif
        UINT64 Sint:16;
    };
    UINT64 AsUINT64;
} WHV_DELIVERABILITY_NOTIFICATIONS_REGISTER, WHV_X64_DELIVERABILITY_NOTIFICATIONS_REGISTER;

C_ASSERT(sizeof(WHV_DELIVERABILITY_NOTIFICATIONS_REGISTER) == sizeof(UINT64));

typedef enum WHV_X64_PENDING_EVENT_TYPE {
    WHvX64PendingEventException = 0,
    WHvX64PendingEventExtInt = 5,
    WHvX64PendingEventSvmNestedExit = 7,
    WHvX64PendingEventVmxNestedExit = 8
} WHV_X64_PENDING_EVENT_TYPE;

typedef union WHV_X64_PENDING_EXCEPTION_EVENT {
    __C89_NAMELESS struct {
        UINT32 EventPending : 1;
        UINT32 EventType : 3;
        UINT32 Reserved0 : 4;
        UINT32 DeliverErrorCode : 1;
        UINT32 Reserved1 : 7;
        UINT32 Vector : 16;
        UINT32 ErrorCode;
        UINT64 ExceptionParameter;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_PENDING_EXCEPTION_EVENT;

C_ASSERT(sizeof(WHV_X64_PENDING_EXCEPTION_EVENT) == sizeof(WHV_UINT128));

typedef union WHV_X64_PENDING_EXT_INT_EVENT {
    __C89_NAMELESS struct {
        UINT64 EventPending : 1;
        UINT64 EventType : 3;
        UINT64 Reserved0 : 4;
        UINT64 Vector : 8;
        UINT64 Reserved1 : 48;
        UINT64 Reserved2;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_PENDING_EXT_INT_EVENT;

C_ASSERT(sizeof(WHV_X64_PENDING_EXT_INT_EVENT) == sizeof(WHV_UINT128));

typedef union WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT0 {
    __C89_NAMELESS struct {
        UINT64 EventPending : 1;
        UINT64 EventType : 4;
        UINT64 Reserved0 : 3;
        UINT64 InstructionBytesValid : 1;
        UINT64 Reserved1 : 55;
        UINT64 ExitCode;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT0;

typedef union WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT1 {
    __C89_NAMELESS struct {
        UINT64 ExitInfo1;
        UINT64 ExitInfo2;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT1;

typedef union WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT2 {
    __C89_NAMELESS struct {
        UINT64 NextRip;
        UINT8 InstructionBytesFetchedCount;
        UINT8 InstructionBytes[7];
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT2;

typedef union WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT3 {
    __C89_NAMELESS struct {
        UINT8 InstructionBytes[8];
        UINT64 Reserved2;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT3;

C_ASSERT(sizeof(WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT0) == 16);
C_ASSERT(sizeof(WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT1) == 16);
C_ASSERT(sizeof(WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT2) == 16);
C_ASSERT(sizeof(WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT3) == 16);

typedef union WHV_X64_PENDING_VMX_NESTED_EXIT_EVENT0 {
    __C89_NAMELESS struct {
        UINT32 EventPending : 1;
        UINT32 EventType : 4;
        UINT32 Reserved0 : 27;
        UINT32 ExitReason;
        UINT64 ExitQualification;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_PENDING_VMX_NESTED_EXIT_EVENT0;

typedef union WHV_X64_PENDING_VMX_NESTED_EXIT_EVENT1 {
    __C89_NAMELESS struct {
        UINT32 InstructionLength;
        UINT32 InstructionInfo;
        UINT32 ExitInterruptionInfo;
        UINT32 ExitExceptionErrorCode;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_PENDING_VMX_NESTED_EXIT_EVENT1;

typedef union WHV_X64_PENDING_VMX_NESTED_EXIT_EVENT2 {
    __C89_NAMELESS struct {
        UINT64 GuestLinearAddress;
        UINT64 GuestPhysicalAddress;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_PENDING_VMX_NESTED_EXIT_EVENT2;

C_ASSERT(sizeof(WHV_X64_PENDING_VMX_NESTED_EXIT_EVENT0) == 16);
C_ASSERT(sizeof(WHV_X64_PENDING_VMX_NESTED_EXIT_EVENT1) == 16);
C_ASSERT(sizeof(WHV_X64_PENDING_VMX_NESTED_EXIT_EVENT2) == 16);

typedef union WHV_X64_NESTED_INVEPT_REGISTER {
    __C89_NAMELESS struct {
        UINT8 Type;
        UINT8 Reserved[7];
        UINT64 Eptp;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_NESTED_INVEPT_REGISTER;

C_ASSERT(sizeof(WHV_X64_NESTED_INVEPT_REGISTER) == 16);

typedef union WHV_X64_NESTED_INVVPID_REGISTER {
    __C89_NAMELESS struct {
        UINT8 Type;
        UINT8 Reserved[3];
        UINT32 Vpid;
        UINT64 LinearAddress;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_NESTED_INVVPID_REGISTER;

C_ASSERT(sizeof(WHV_X64_NESTED_INVVPID_REGISTER) == 16);

typedef union WHV_X64_NESTED_GUEST_STATE {
    __C89_NAMELESS struct {
        UINT64 NestedVirtActive : 1;
        UINT64 NestedGuestMode : 1;
        UINT64 VmEntryPending : 1;
        UINT64 Reserved0 : 61;
        UINT64 Reserved1;
    };
    WHV_UINT128 AsUINT128;
} WHV_X64_NESTED_GUEST_STATE;

C_ASSERT(sizeof(WHV_X64_NESTED_GUEST_STATE) == 16);

typedef union WHV_INTERNAL_ACTIVITY_REGISTER {
    __C89_NAMELESS struct {
        UINT64 StartupSuspend : 1;
        UINT64 HaltSuspend : 1;
        UINT64 IdleSuspend : 1;
        UINT64 Reserved :61;
    };
    UINT64 AsUINT64;
} WHV_INTERNAL_ACTIVITY_REGISTER;

C_ASSERT(sizeof(WHV_INTERNAL_ACTIVITY_REGISTER) == sizeof(UINT64));

typedef union WHV_X64_PENDING_DEBUG_EXCEPTION {
    UINT64 AsUINT64;
    __C89_NAMELESS struct {
        UINT64 Breakpoint0 : 1;
        UINT64 Breakpoint1 : 1;
        UINT64 Breakpoint2 : 1;
        UINT64 Breakpoint3 : 1;
        UINT64 SingleStep : 1;
        UINT64 Reserved0 : 59;
    };
} WHV_X64_PENDING_DEBUG_EXCEPTION;

C_ASSERT(sizeof(WHV_X64_PENDING_DEBUG_EXCEPTION) == sizeof(UINT64));

typedef struct WHV_SYNIC_SINT_DELIVERABLE_CONTEXT {
    UINT16 DeliverableSints;
    UINT16 Reserved1;
    UINT32 Reserved2;
} WHV_SYNIC_SINT_DELIVERABLE_CONTEXT;

C_ASSERT(sizeof(WHV_SYNIC_SINT_DELIVERABLE_CONTEXT) == 8);

typedef union WHV_REGISTER_VALUE {
    WHV_UINT128 Reg128;
    UINT64 Reg64;
    UINT32 Reg32;
    UINT16 Reg16;
    UINT8 Reg8;
    WHV_INTERNAL_ACTIVITY_REGISTER InternalActivity;
    WHV_DELIVERABILITY_NOTIFICATIONS_REGISTER DeliverabilityNotifications;
#if defined(__x86_64__)
    WHV_X64_FP_REGISTER Fp;
    WHV_X64_FP_CONTROL_STATUS_REGISTER FpControlStatus;
    WHV_X64_XMM_CONTROL_STATUS_REGISTER XmmControlStatus;
    WHV_X64_SEGMENT_REGISTER Segment;
    WHV_X64_TABLE_REGISTER Table;
    WHV_X64_INTERRUPT_STATE_REGISTER InterruptState;
    WHV_X64_PENDING_INTERRUPTION_REGISTER PendingInterruption;
    WHV_X64_PENDING_EXCEPTION_EVENT ExceptionEvent;
    WHV_X64_PENDING_EXT_INT_EVENT ExtIntEvent;
    WHV_X64_PENDING_DEBUG_EXCEPTION PendingDebugException;
    WHV_X64_NESTED_GUEST_STATE NestedState;
    WHV_X64_NESTED_INVEPT_REGISTER InvEpt;
    WHV_X64_NESTED_INVVPID_REGISTER InvVpid;
    WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT0 SvmNestedExit0;
    WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT1 SvmNestedExit1;
    WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT2 SvmNestedExit2;
    WHV_X64_PENDING_SVM_NESTED_EXIT_EVENT3 SvmNestedExit3;
    WHV_X64_PENDING_VMX_NESTED_EXIT_EVENT0 VmxNestedExit0;
    WHV_X64_PENDING_VMX_NESTED_EXIT_EVENT1 VmxNestedExit1;
    WHV_X64_PENDING_VMX_NESTED_EXIT_EVENT2 VmxNestedExit2;
#endif
} WHV_REGISTER_VALUE;

C_ASSERT(sizeof(WHV_REGISTER_VALUE) == 16);

typedef enum WHV_RUN_VP_EXIT_REASON {
    WHvRunVpExitReasonNone = 0x00000000,
    WHvRunVpExitReasonMemoryAccess = 0x00000001,
    WHvRunVpExitReasonX64IoPortAccess = 0x00000002,
    WHvRunVpExitReasonUnrecoverableException = 0x00000004,
    WHvRunVpExitReasonInvalidVpRegisterValue = 0x00000005,
    WHvRunVpExitReasonUnsupportedFeature = 0x00000006,
    WHvRunVpExitReasonX64InterruptWindow = 0x00000007,
    WHvRunVpExitReasonX64Halt = 0x00000008,
    WHvRunVpExitReasonX64ApicEoi = 0x00000009,
    WHvRunVpExitReasonSynicSintDeliverable = 0x0000000A,
    WHvRunVpExitReasonX64MsrAccess = 0x00001000,
    WHvRunVpExitReasonX64Cpuid = 0x00001001,
    WHvRunVpExitReasonException = 0x00001002,
    WHvRunVpExitReasonX64Rdtsc = 0x00001003,
    WHvRunVpExitReasonX64ApicSmiTrap = 0x00001004,
    WHvRunVpExitReasonHypercall = 0x00001005,
    WHvRunVpExitReasonX64ApicInitSipiTrap = 0x00001006,
    WHvRunVpExitReasonX64ApicWriteTrap = 0x00001007,
    WHvRunVpExitReasonCanceled = 0x00002001
} WHV_RUN_VP_EXIT_REASON;

typedef union WHV_X64_VP_EXECUTION_STATE {
    __C89_NAMELESS struct {
        UINT16 Cpl : 2;
        UINT16 Cr0Pe : 1;
        UINT16 Cr0Am : 1;
        UINT16 EferLma : 1;
        UINT16 DebugActive : 1;
        UINT16 InterruptionPending : 1;
        UINT16 Reserved0 : 5;
        UINT16 InterruptShadow : 1;
        UINT16 Reserved1 : 3;
    };
    UINT16 AsUINT16;
} WHV_X64_VP_EXECUTION_STATE;

C_ASSERT(sizeof(WHV_X64_VP_EXECUTION_STATE) == sizeof(UINT16));

typedef struct WHV_VP_EXIT_CONTEXT {
    WHV_X64_VP_EXECUTION_STATE ExecutionState;
    UINT8 InstructionLength : 4;
    UINT8 Cr8 : 4;
    UINT8 Reserved;
    UINT32 Reserved2;
    WHV_X64_SEGMENT_REGISTER Cs;
    UINT64 Rip;
    UINT64 Rflags;
} WHV_VP_EXIT_CONTEXT;

C_ASSERT(sizeof(WHV_VP_EXIT_CONTEXT) == 40);

typedef union WHV_MEMORY_ACCESS_INFO {
    __C89_NAMELESS struct {
        UINT32 AccessType : 2;
        UINT32 GpaUnmapped : 1;
        UINT32 GvaValid : 1;
        UINT32 Reserved : 28;
    };
    UINT32 AsUINT32;
} WHV_MEMORY_ACCESS_INFO;

C_ASSERT(sizeof(WHV_MEMORY_ACCESS_INFO) == 4);

typedef struct WHV_MEMORY_ACCESS_CONTEXT {
    UINT8 InstructionByteCount;
    UINT8 Reserved[3];
    UINT8 InstructionBytes[16];
    WHV_MEMORY_ACCESS_INFO AccessInfo;
    WHV_GUEST_PHYSICAL_ADDRESS Gpa;
    WHV_GUEST_VIRTUAL_ADDRESS Gva;
} WHV_MEMORY_ACCESS_CONTEXT;

C_ASSERT(sizeof(WHV_MEMORY_ACCESS_CONTEXT) == 40);

typedef union WHV_X64_IO_PORT_ACCESS_INFO {
    __C89_NAMELESS struct {
        UINT32 IsWrite : 1;
        UINT32 AccessSize: 3;
        UINT32 StringOp : 1;
        UINT32 RepPrefix : 1;
        UINT32 Reserved : 26;
    };
    UINT32 AsUINT32;
} WHV_X64_IO_PORT_ACCESS_INFO;

C_ASSERT(sizeof(WHV_X64_IO_PORT_ACCESS_INFO) == sizeof(UINT32));

typedef struct WHV_X64_IO_PORT_ACCESS_CONTEXT {
    UINT8 InstructionByteCount;
    UINT8 Reserved[3];
    UINT8 InstructionBytes[16];
    WHV_X64_IO_PORT_ACCESS_INFO AccessInfo;
    UINT16 PortNumber;
    UINT16 Reserved2[3];
    UINT64 Rax;
    UINT64 Rcx;
    UINT64 Rsi;
    UINT64 Rdi;
    WHV_X64_SEGMENT_REGISTER Ds;
    WHV_X64_SEGMENT_REGISTER Es;
} WHV_X64_IO_PORT_ACCESS_CONTEXT;

C_ASSERT(sizeof(WHV_X64_IO_PORT_ACCESS_CONTEXT) == 96);

typedef union WHV_X64_MSR_ACCESS_INFO {
    __C89_NAMELESS struct {
        UINT32 IsWrite : 1;
        UINT32 Reserved : 31;
    };
    UINT32 AsUINT32;
} WHV_X64_MSR_ACCESS_INFO;

C_ASSERT(sizeof(WHV_X64_MSR_ACCESS_INFO) == sizeof(UINT32));

typedef struct WHV_X64_MSR_ACCESS_CONTEXT {
    WHV_X64_MSR_ACCESS_INFO AccessInfo;
    UINT32 MsrNumber;
    UINT64 Rax;
    UINT64 Rdx;
} WHV_X64_MSR_ACCESS_CONTEXT;

C_ASSERT(sizeof(WHV_X64_MSR_ACCESS_CONTEXT) == 24);

typedef struct WHV_X64_CPUID_ACCESS_CONTEXT {
    UINT64 Rax;
    UINT64 Rcx;
    UINT64 Rdx;
    UINT64 Rbx;
    UINT64 DefaultResultRax;
    UINT64 DefaultResultRcx;
    UINT64 DefaultResultRdx;
    UINT64 DefaultResultRbx;
} WHV_X64_CPUID_ACCESS_CONTEXT;

C_ASSERT(sizeof(WHV_X64_CPUID_ACCESS_CONTEXT) == 64);

typedef union WHV_VP_EXCEPTION_INFO {
    __C89_NAMELESS struct {
        UINT32 ErrorCodeValid : 1;
        UINT32 SoftwareException : 1;
        UINT32 Reserved : 30;
    };
    UINT32 AsUINT32;
} WHV_VP_EXCEPTION_INFO;

C_ASSERT(sizeof(WHV_VP_EXCEPTION_INFO) == sizeof(UINT32));

typedef struct WHV_VP_EXCEPTION_CONTEXT {
    UINT8 InstructionByteCount;
    UINT8 Reserved[3];
    UINT8 InstructionBytes[16];
    WHV_VP_EXCEPTION_INFO ExceptionInfo;
    UINT8 ExceptionType;
    UINT8 Reserved2[3];
    UINT32 ErrorCode;
    UINT64 ExceptionParameter;
} WHV_VP_EXCEPTION_CONTEXT;

C_ASSERT(sizeof(WHV_VP_EXCEPTION_CONTEXT) == 40);

typedef enum WHV_X64_UNSUPPORTED_FEATURE_CODE {
    WHvUnsupportedFeatureIntercept = 1,
    WHvUnsupportedFeatureTaskSwitchTss = 2
} WHV_X64_UNSUPPORTED_FEATURE_CODE;

typedef struct WHV_X64_UNSUPPORTED_FEATURE_CONTEXT {
    WHV_X64_UNSUPPORTED_FEATURE_CODE FeatureCode;
    UINT32 Reserved;
    UINT64 FeatureParameter;
} WHV_X64_UNSUPPORTED_FEATURE_CONTEXT;

C_ASSERT(sizeof(WHV_X64_UNSUPPORTED_FEATURE_CONTEXT) == 16);

typedef enum WHV_RUN_VP_CANCEL_REASON {
    WhvRunVpCancelReasonUser = 0
} WHV_RUN_VP_CANCEL_REASON;

typedef struct WHV_RUN_VP_CANCELED_CONTEXT {
    WHV_RUN_VP_CANCEL_REASON CancelReason;
} WHV_RUN_VP_CANCELED_CONTEXT;

C_ASSERT(sizeof(WHV_RUN_VP_CANCELED_CONTEXT) == 4);

typedef enum WHV_X64_PENDING_INTERRUPTION_TYPE {
    WHvX64PendingInterrupt = 0,
    WHvX64PendingNmi = 2,
    WHvX64PendingException = 3
} WHV_X64_PENDING_INTERRUPTION_TYPE, *PWHV_X64_PENDING_INTERRUPTION_TYPE;

typedef struct WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT {
    WHV_X64_PENDING_INTERRUPTION_TYPE DeliverableType;
} WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT, *PWHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT;

C_ASSERT(sizeof(WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT) == 4);

typedef struct WHV_X64_APIC_EOI_CONTEXT {
    UINT32 InterruptVector;
} WHV_X64_APIC_EOI_CONTEXT;

C_ASSERT(sizeof(WHV_X64_APIC_EOI_CONTEXT) == 4);

typedef union WHV_X64_RDTSC_INFO {
    __C89_NAMELESS struct {
        UINT64 IsRdtscp : 1;
        UINT64 Reserved : 63;
    };
    UINT64 AsUINT64;
} WHV_X64_RDTSC_INFO;

C_ASSERT(sizeof(WHV_X64_RDTSC_INFO) == 8);

typedef struct WHV_X64_RDTSC_CONTEXT {
    UINT64 TscAux;
    UINT64 VirtualOffset;
    UINT64 Tsc;
    UINT64 ReferenceTime;
    WHV_X64_RDTSC_INFO RdtscInfo;
} WHV_X64_RDTSC_CONTEXT;

C_ASSERT(sizeof(WHV_X64_RDTSC_CONTEXT) == 40);

typedef struct WHV_X64_APIC_SMI_CONTEXT {
    UINT64 ApicIcr;
} WHV_X64_APIC_SMI_CONTEXT;

C_ASSERT(sizeof(WHV_X64_APIC_SMI_CONTEXT) == 8);

#define WHV_HYPERCALL_CONTEXT_MAX_XMM_REGISTERS 6

typedef struct _WHV_HYPERCALL_CONTEXT {
    UINT64 Rax;
    UINT64 Rbx;
    UINT64 Rcx;
    UINT64 Rdx;
    UINT64 R8;
    UINT64 Rsi;
    UINT64 Rdi;
    UINT64 Reserved0;
    WHV_UINT128 XmmRegisters[WHV_HYPERCALL_CONTEXT_MAX_XMM_REGISTERS];
    UINT64 Reserved1[2];
} WHV_HYPERCALL_CONTEXT, *PWHV_HYPERCALL_CONTEXT;

C_ASSERT(sizeof(WHV_HYPERCALL_CONTEXT) == 176);

typedef struct WHV_X64_APIC_INIT_SIPI_CONTEXT {
    UINT64 ApicIcr;
} WHV_X64_APIC_INIT_SIPI_CONTEXT;

C_ASSERT(sizeof(WHV_X64_APIC_INIT_SIPI_CONTEXT) == 8);

typedef enum WHV_X64_APIC_WRITE_TYPE {
    WHvX64ApicWriteTypeLdr = 0xD0,
    WHvX64ApicWriteTypeDfr = 0xE0,
    WHvX64ApicWriteTypeSvr = 0xF0,
    WHvX64ApicWriteTypeLint0 = 0x350,
    WHvX64ApicWriteTypeLint1 = 0x360
} WHV_X64_APIC_WRITE_TYPE;

typedef struct WHV_X64_APIC_WRITE_CONTEXT {
    WHV_X64_APIC_WRITE_TYPE Type;
    UINT32 Reserved;
    UINT64 WriteValue;
} WHV_X64_APIC_WRITE_CONTEXT;

C_ASSERT(sizeof(WHV_X64_APIC_WRITE_CONTEXT) == 16);

typedef struct WHV_RUN_VP_EXIT_CONTEXT {
    WHV_RUN_VP_EXIT_REASON ExitReason;
    UINT32 Reserved;
    WHV_VP_EXIT_CONTEXT VpContext;
    __C89_NAMELESS union {
        WHV_MEMORY_ACCESS_CONTEXT MemoryAccess;
        WHV_X64_IO_PORT_ACCESS_CONTEXT IoPortAccess;
        WHV_X64_MSR_ACCESS_CONTEXT MsrAccess;
        WHV_X64_CPUID_ACCESS_CONTEXT CpuidAccess;
        WHV_VP_EXCEPTION_CONTEXT VpException;
        WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT InterruptWindow;
        WHV_X64_UNSUPPORTED_FEATURE_CONTEXT UnsupportedFeature;
        WHV_RUN_VP_CANCELED_CONTEXT CancelReason;
        WHV_X64_APIC_EOI_CONTEXT ApicEoi;
        WHV_X64_RDTSC_CONTEXT ReadTsc;
        WHV_X64_APIC_SMI_CONTEXT ApicSmi;
        WHV_HYPERCALL_CONTEXT Hypercall;
        WHV_X64_APIC_INIT_SIPI_CONTEXT ApicInitSipi;
        WHV_X64_APIC_WRITE_CONTEXT ApicWrite;
        WHV_SYNIC_SINT_DELIVERABLE_CONTEXT SynicSintDeliverable;
    };
} WHV_RUN_VP_EXIT_CONTEXT;

C_ASSERT(sizeof(WHV_RUN_VP_EXIT_CONTEXT) == 224);

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;
    UINT64 DestinationMode : 4;
    UINT64 TriggerMode : 4;
    UINT64 Reserved : 48;
    UINT32 Destination;
    UINT32 Vector;
} WHV_INTERRUPT_CONTROL;

C_ASSERT(sizeof(WHV_INTERRUPT_CONTROL) == 16);

typedef struct WHV_DOORBELL_MATCH_DATA {
    WHV_GUEST_PHYSICAL_ADDRESS GuestAddress;
    UINT64 Value;
    UINT32 Length;
    UINT32 MatchOnValue : 1;
    UINT32 MatchOnLength : 1;
    UINT32 Reserved : 30;
} WHV_DOORBELL_MATCH_DATA;

C_ASSERT(sizeof(WHV_DOORBELL_MATCH_DATA) == 24);

typedef enum WHV_PARTITION_COUNTER_SET {
    WHvPartitionCounterSetMemory
} WHV_PARTITION_COUNTER_SET;

typedef struct WHV_PARTITION_MEMORY_COUNTERS {
    UINT64 Mapped4KPageCount;
    UINT64 Mapped2MPageCount;
    UINT64 Mapped1GPageCount;
} WHV_PARTITION_MEMORY_COUNTERS;

C_ASSERT(sizeof(WHV_PARTITION_MEMORY_COUNTERS) == 24);

typedef enum WHV_PROCESSOR_COUNTER_SET {
    WHvProcessorCounterSetRuntime,
    WHvProcessorCounterSetIntercepts,
    WHvProcessorCounterSetEvents,
    WHvProcessorCounterSetApic,
    WHvProcessorCounterSetSyntheticFeatures
} WHV_PROCESSOR_COUNTER_SET;

typedef struct WHV_PROCESSOR_RUNTIME_COUNTERS {
    UINT64 TotalRuntime100ns;
    UINT64 HypervisorRuntime100ns;
} WHV_PROCESSOR_RUNTIME_COUNTERS;

C_ASSERT(sizeof(WHV_PROCESSOR_RUNTIME_COUNTERS) == 16);

typedef struct WHV_PROCESSOR_INTERCEPT_COUNTER {
    UINT64 Count;
    UINT64 Time100ns;
} WHV_PROCESSOR_INTERCEPT_COUNTER;

C_ASSERT(sizeof(WHV_PROCESSOR_INTERCEPT_COUNTER) == 16);

typedef struct WHV_PROCESSOR_INTERCEPT_COUNTERS {
    WHV_PROCESSOR_INTERCEPT_COUNTER PageInvalidations;
    WHV_PROCESSOR_INTERCEPT_COUNTER ControlRegisterAccesses;
    WHV_PROCESSOR_INTERCEPT_COUNTER IoInstructions;
    WHV_PROCESSOR_INTERCEPT_COUNTER HaltInstructions;
    WHV_PROCESSOR_INTERCEPT_COUNTER CpuidInstructions;
    WHV_PROCESSOR_INTERCEPT_COUNTER MsrAccesses;
    WHV_PROCESSOR_INTERCEPT_COUNTER OtherIntercepts;
    WHV_PROCESSOR_INTERCEPT_COUNTER PendingInterrupts;
    WHV_PROCESSOR_INTERCEPT_COUNTER EmulatedInstructions;
    WHV_PROCESSOR_INTERCEPT_COUNTER DebugRegisterAccesses;
    WHV_PROCESSOR_INTERCEPT_COUNTER PageFaultIntercepts;
    WHV_PROCESSOR_INTERCEPT_COUNTER NestedPageFaultIntercepts;
    WHV_PROCESSOR_INTERCEPT_COUNTER Hypercalls;
    WHV_PROCESSOR_INTERCEPT_COUNTER RdpmcInstructions;
} WHV_PROCESSOR_ACTIVITY_COUNTERS;

C_ASSERT(sizeof(WHV_PROCESSOR_ACTIVITY_COUNTERS) == 224);

typedef struct WHV_PROCESSOR_EVENT_COUNTERS {
    UINT64 PageFaultCount;
    UINT64 ExceptionCount;
    UINT64 InterruptCount;
} WHV_PROCESSOR_GUEST_EVENT_COUNTERS;

C_ASSERT(sizeof(WHV_PROCESSOR_GUEST_EVENT_COUNTERS) == 24);

typedef struct WHV_PROCESSOR_APIC_COUNTERS {
    UINT64 MmioAccessCount;
    UINT64 EoiAccessCount;
    UINT64 TprAccessCount;
    UINT64 SentIpiCount;
    UINT64 SelfIpiCount;
} WHV_PROCESSOR_APIC_COUNTERS;

C_ASSERT(sizeof(WHV_PROCESSOR_APIC_COUNTERS) == 40);

typedef struct WHV_PROCESSOR_SYNTHETIC_FEATURES_COUNTERS {
    UINT64 SyntheticInterruptsCount;
    UINT64 LongSpinWaitHypercallsCount;
    UINT64 OtherHypercallsCount;
    UINT64 SyntheticInterruptHypercallsCount;
    UINT64 VirtualInterruptHypercallsCount;
    UINT64 VirtualMmuHypercallsCount;
} WHV_PROCESSOR_SYNTHETIC_FEATURES_COUNTERS;

C_ASSERT(sizeof(WHV_PROCESSOR_SYNTHETIC_FEATURES_COUNTERS) == 48);

typedef enum WHV_ADVISE_GPA_RANGE_CODE {
    WHvAdviseGpaRangeCodePopulate = 0x00000000,
    WHvAdviseGpaRangeCodePin = 0x00000001,
    WHvAdviseGpaRangeCodeUnpin = 0x00000002
} WHV_ADVISE_GPA_RANGE_CODE;

typedef enum WHV_VIRTUAL_PROCESSOR_STATE_TYPE {
    WHvVirtualProcessorStateTypeSynicMessagePage = 0x00000000,
    WHvVirtualProcessorStateTypeSynicEventFlagPage = 0x00000001,
    WHvVirtualProcessorStateTypeSynicTimerState = 0x00000002,
    WHvVirtualProcessorStateTypeInterruptControllerState2 = 0x00001000,
    WHvVirtualProcessorStateTypeXsaveState = 0x00001001
} WHV_VIRTUAL_PROCESSOR_STATE_TYPE;

typedef struct WHV_SYNIC_EVENT_PARAMETERS {
    UINT32 VpIndex;
    UINT8 TargetSint;
    UINT8 Reserved;
    UINT16 FlagNumber;
} WHV_SYNIC_EVENT_PARAMETERS;

C_ASSERT(sizeof(WHV_SYNIC_EVENT_PARAMETERS) == 8);

typedef enum WHV_ALLOCATE_VPCI_RESOURCE_FLAGS {
    WHvAllocateVpciResourceFlagNone = 0x00000000,
    WHvAllocateVpciResourceFlagAllowDirectP2P = 0x00000001
} WHV_ALLOCATE_VPCI_RESOURCE_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(WHV_ALLOCATE_VPCI_RESOURCE_FLAGS);

#define WHV_MAX_DEVICE_ID_SIZE_IN_CHARS 200

typedef struct WHV_SRIOV_RESOURCE_DESCRIPTOR {
    WCHAR PnpInstanceId[WHV_MAX_DEVICE_ID_SIZE_IN_CHARS];
    LUID VirtualFunctionId;
    UINT16 VirtualFunctionIndex;
    UINT16 Reserved;
} WHV_SRIOV_RESOURCE_DESCRIPTOR;

C_ASSERT(sizeof(WHV_SRIOV_RESOURCE_DESCRIPTOR) == 412);

typedef enum WHV_VPCI_DEVICE_NOTIFICATION_TYPE {
    WHvVpciDeviceNotificationUndefined = 0,
    WHvVpciDeviceNotificationMmioRemapping = 1,
    WHvVpciDeviceNotificationSurpriseRemoval = 2
} WHV_VPCI_DEVICE_NOTIFICATION_TYPE;

typedef struct WHV_VPCI_DEVICE_NOTIFICATION {
    WHV_VPCI_DEVICE_NOTIFICATION_TYPE NotificationType;
    UINT32 Reserved1;
    __C89_NAMELESS union {
        UINT64 Reserved2;
    };
} WHV_VPCI_DEVICE_NOTIFICATION;

C_ASSERT(sizeof(WHV_VPCI_DEVICE_NOTIFICATION) == 16);

typedef enum WHV_CREATE_VPCI_DEVICE_FLAGS {
    WHvCreateVpciDeviceFlagNone = 0x00000000,
    WHvCreateVpciDeviceFlagPhysicallyBacked = 0x00000001,
    WHvCreateVpciDeviceFlagUseLogicalInterrupts = 0x00000002
} WHV_CREATE_VPCI_DEVICE_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(WHV_CREATE_VPCI_DEVICE_FLAGS);

typedef enum WHV_VPCI_DEVICE_PROPERTY_CODE {
    WHvVpciDevicePropertyCodeUndefined = 0,
    WHvVpciDevicePropertyCodeHardwareIDs = 1,
    WHvVpciDevicePropertyCodeProbedBARs = 2
} WHV_VPCI_DEVICE_PROPERTY_CODE;

typedef struct WHV_VPCI_HARDWARE_IDS {
    UINT16 VendorID;
    UINT16 DeviceID;
    UINT8 RevisionID;
    UINT8 ProgIf;
    UINT8 SubClass;
    UINT8 BaseClass;
    UINT16 SubVendorID;
    UINT16 SubSystemID;
} WHV_VPCI_HARDWARE_IDS;

C_ASSERT(sizeof(WHV_VPCI_HARDWARE_IDS) == 12);

#define WHV_VPCI_TYPE0_BAR_COUNT 6

typedef struct WHV_VPCI_PROBED_BARS {
    UINT32 Value[WHV_VPCI_TYPE0_BAR_COUNT];
} WHV_VPCI_PROBED_BARS;

C_ASSERT(sizeof(WHV_VPCI_PROBED_BARS) == 24);

typedef enum WHV_VPCI_MMIO_RANGE_FLAGS {
    WHvVpciMmioRangeFlagReadAccess = 0x00000001,
    WHvVpciMmioRangeFlagWriteAccess = 0x00000002
} WHV_VPCI_MMIO_RANGE_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(WHV_VPCI_MMIO_RANGE_FLAGS);

typedef enum WHV_VPCI_DEVICE_REGISTER_SPACE {
    WHvVpciConfigSpace = -1,
    WHvVpciBar0 = 0,
    WHvVpciBar1 = 1,
    WHvVpciBar2 = 2,
    WHvVpciBar3 = 3,
    WHvVpciBar4 = 4,
    WHvVpciBar5 = 5
} WHV_VPCI_DEVICE_REGISTER_SPACE;

typedef struct WHV_VPCI_MMIO_MAPPING {
    WHV_VPCI_DEVICE_REGISTER_SPACE Location;
    WHV_VPCI_MMIO_RANGE_FLAGS Flags;
    UINT64 SizeInBytes;
    UINT64 OffsetInBytes;
    PVOID VirtualAddress;
} WHV_VPCI_MMIO_MAPPING;

C_ASSERT(sizeof(WHV_VPCI_MMIO_MAPPING) == 32);

typedef struct WHV_VPCI_DEVICE_REGISTER {
    WHV_VPCI_DEVICE_REGISTER_SPACE Location;
    UINT32 SizeInBytes;
    UINT64 OffsetInBytes;
} WHV_VPCI_DEVICE_REGISTER;

C_ASSERT(sizeof(WHV_VPCI_DEVICE_REGISTER) == 16);

typedef enum WHV_VPCI_INTERRUPT_TARGET_FLAGS {
    WHvVpciInterruptTargetFlagNone = 0x00000000,
    WHvVpciInterruptTargetFlagMulticast = 0x00000001
} WHV_VPCI_INTERRUPT_TARGET_FLAGS;

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;

C_ASSERT(sizeof(WHV_VPCI_INTERRUPT_TARGET) == 16);

typedef enum WHV_TRIGGER_TYPE {
    WHvTriggerTypeInterrupt = 0,
    WHvTriggerTypeSynicEvent = 1,
    WHvTriggerTypeDeviceInterrupt = 2
} WHV_TRIGGER_TYPE;

typedef struct WHV_TRIGGER_PARAMETERS {
    WHV_TRIGGER_TYPE TriggerType;
    UINT32 Reserved;
    __C89_NAMELESS union {
        WHV_INTERRUPT_CONTROL Interrupt;
        WHV_SYNIC_EVENT_PARAMETERS SynicEvent;
        __C89_NAMELESS struct {
            UINT64 LogicalDeviceId;
            UINT64 MsiAddress;
            UINT32 MsiData;
            UINT32 Reserved;
        } DeviceInterrupt;
    };
} WHV_TRIGGER_PARAMETERS;

C_ASSERT(sizeof(WHV_TRIGGER_PARAMETERS) == 32);

typedef PVOID WHV_TRIGGER_HANDLE;

typedef enum WHV_VIRTUAL_PROCESSOR_PROPERTY_CODE {
    WHvVirtualProcessorPropertyCodeNumaNode = 0x00000000
} WHV_VIRTUAL_PROCESSOR_PROPERTY_CODE;

typedef struct WHV_VIRTUAL_PROCESSOR_PROPERTY {
    WHV_VIRTUAL_PROCESSOR_PROPERTY_CODE PropertyCode;
    UINT32 Reserved;
    __C89_NAMELESS union {
        USHORT NumaNode;
        UINT64 Padding;
    };
} WHV_VIRTUAL_PROCESSOR_PROPERTY;

C_ASSERT(sizeof(WHV_VIRTUAL_PROCESSOR_PROPERTY) == 16);

typedef enum WHV_NOTIFICATION_PORT_TYPE {
    WHvNotificationPortTypeEvent = 2,
    WHvNotificationPortTypeDoorbell = 4
} WHV_NOTIFICATION_PORT_TYPE;

typedef struct WHV_NOTIFICATION_PORT_PARAMETERS {
    WHV_NOTIFICATION_PORT_TYPE NotificationPortType;
    UINT32 Reserved;
    __C89_NAMELESS union {
        WHV_DOORBELL_MATCH_DATA Doorbell;
        __C89_NAMELESS struct {
            UINT32 ConnectionId;
        } Event;
    };
} WHV_NOTIFICATION_PORT_PARAMETERS;

C_ASSERT(sizeof(WHV_NOTIFICATION_PORT_PARAMETERS) == 32);

typedef enum WHV_NOTIFICATION_PORT_PROPERTY_CODE {
    WHvNotificationPortPropertyPreferredTargetVp = 1,
    WHvNotificationPortPropertyPreferredTargetDuration = 5
} WHV_NOTIFICATION_PORT_PROPERTY_CODE;

typedef UINT64 WHV_NOTIFICATION_PORT_PROPERTY;

#define WHV_ANY_VP (0xFFFFFFFF)

#define WHV_NOTIFICATION_PORT_PREFERRED_DURATION_MAX (0xFFFFFFFFFFFFFFFFULL)

typedef PVOID WHV_NOTIFICATION_PORT_HANDLE;

#define WHV_SYNIC_MESSAGE_SIZE 256

#endif /* _WINHVAPIDEFS_H_ */
