[1166] | 1 | /**
|
---|
| 2 | * This file is part of the mingw-w64 runtime package.
|
---|
| 3 | * No warranty is given; refer to the file DISCLAIMER within this package.
|
---|
| 4 | */
|
---|
| 5 |
|
---|
| 6 | #ifndef _WINHVAPIDEFS_H_
|
---|
| 7 | #define _WINHVAPIDEFS_H_
|
---|
| 8 |
|
---|
| 9 | typedef enum WHV_CAPABILITY_CODE {
|
---|
| 10 | WHvCapabilityCodeHypervisorPresent = 0x00000000,
|
---|
| 11 | WHvCapabilityCodeFeatures = 0x00000001,
|
---|
| 12 | WHvCapabilityCodeExtendedVmExits = 0x00000002,
|
---|
| 13 | WHvCapabilityCodeExceptionExitBitmap = 0x00000003,
|
---|
| 14 | WHvCapabilityCodeX64MsrExitBitmap = 0x00000004,
|
---|
| 15 | WHvCapabilityCodeGpaRangePopulateFlags = 0x00000005,
|
---|
| 16 | WHvCapabilityCodeSchedulerFeatures = 0x00000006,
|
---|
| 17 | WHvCapabilityCodeProcessorVendor = 0x00001000,
|
---|
| 18 | WHvCapabilityCodeProcessorFeatures = 0x00001001,
|
---|
| 19 | WHvCapabilityCodeProcessorClFlushSize = 0x00001002,
|
---|
| 20 | WHvCapabilityCodeProcessorXsaveFeatures = 0x00001003,
|
---|
| 21 | WHvCapabilityCodeProcessorClockFrequency = 0x00001004,
|
---|
| 22 | WHvCapabilityCodeInterruptClockFrequency = 0x00001005,
|
---|
| 23 | WHvCapabilityCodeProcessorFeaturesBanks = 0x00001006,
|
---|
| 24 | WHvCapabilityCodeProcessorFrequencyCap = 0x00001007,
|
---|
| 25 | WHvCapabilityCodeSyntheticProcessorFeaturesBanks = 0x00001008,
|
---|
| 26 | WHvCapabilityCodeProcessorPerfmonFeatures = 0x00001009
|
---|
| 27 | } WHV_CAPABILITY_CODE;
|
---|
| 28 |
|
---|
| 29 | typedef union WHV_CAPABILITY_FEATURES {
|
---|
| 30 | __C89_NAMELESS struct {
|
---|
| 31 | UINT64 PartialUnmap : 1;
|
---|
| 32 | UINT64 LocalApicEmulation : 1;
|
---|
| 33 | UINT64 Xsave : 1;
|
---|
| 34 | UINT64 DirtyPageTracking : 1;
|
---|
| 35 | UINT64 SpeculationControl : 1;
|
---|
| 36 | UINT64 ApicRemoteRead : 1;
|
---|
| 37 | UINT64 IdleSuspend : 1;
|
---|
| 38 | UINT64 VirtualPciDeviceSupport : 1;
|
---|
| 39 | UINT64 IommuSupport : 1;
|
---|
| 40 | UINT64 VpHotAddRemove : 1;
|
---|
| 41 | UINT64 Reserved : 54;
|
---|
| 42 | };
|
---|
| 43 | UINT64 AsUINT64;
|
---|
| 44 | } WHV_CAPABILITY_FEATURES;
|
---|
| 45 |
|
---|
| 46 | C_ASSERT(sizeof(WHV_CAPABILITY_FEATURES) == sizeof(UINT64));
|
---|
| 47 |
|
---|
| 48 | typedef union WHV_EXTENDED_VM_EXITS {
|
---|
| 49 | __C89_NAMELESS struct {
|
---|
| 50 | UINT64 X64CpuidExit : 1;
|
---|
| 51 | UINT64 X64MsrExit : 1;
|
---|
| 52 | UINT64 ExceptionExit : 1;
|
---|
| 53 | UINT64 X64RdtscExit : 1;
|
---|
| 54 | UINT64 X64ApicSmiExitTrap : 1;
|
---|
| 55 | UINT64 HypercallExit : 1;
|
---|
| 56 | UINT64 X64ApicInitSipiExitTrap : 1;
|
---|
| 57 | UINT64 X64ApicWriteLint0ExitTrap : 1;
|
---|
| 58 | UINT64 X64ApicWriteLint1ExitTrap : 1;
|
---|
| 59 | UINT64 X64ApicWriteSvrExitTrap : 1;
|
---|
| 60 | UINT64 UnknownSynicConnection : 1;
|
---|
| 61 | UINT64 RetargetUnknownVpciDevice : 1;
|
---|
| 62 | UINT64 X64ApicWriteLdrExitTrap : 1;
|
---|
| 63 | UINT64 X64ApicWriteDfrExitTrap : 1;
|
---|
| 64 | UINT64 GpaAccessFaultExit : 1;
|
---|
| 65 | UINT64 Reserved : 49;
|
---|
| 66 | };
|
---|
| 67 | UINT64 AsUINT64;
|
---|
| 68 | } WHV_EXTENDED_VM_EXITS;
|
---|
| 69 |
|
---|
| 70 | C_ASSERT(sizeof(WHV_EXTENDED_VM_EXITS) == sizeof(UINT64));
|
---|
| 71 |
|
---|
| 72 | typedef enum WHV_PROCESSOR_VENDOR {
|
---|
| 73 | WHvProcessorVendorAmd = 0x0000,
|
---|
| 74 | WHvProcessorVendorIntel = 0x0001,
|
---|
| 75 | WHvProcessorVendorHygon = 0x0002
|
---|
| 76 | } WHV_PROCESSOR_VENDOR;
|
---|
| 77 |
|
---|
| 78 | typedef union WHV_PROCESSOR_FEATURES {
|
---|
| 79 | __C89_NAMELESS struct {
|
---|
| 80 | UINT64 Sse3Support : 1;
|
---|
| 81 | UINT64 LahfSahfSupport : 1;
|
---|
| 82 | UINT64 Ssse3Support : 1;
|
---|
| 83 | UINT64 Sse4_1Support : 1;
|
---|
| 84 | UINT64 Sse4_2Support : 1;
|
---|
| 85 | UINT64 Sse4aSupport : 1;
|
---|
| 86 | UINT64 XopSupport : 1;
|
---|
| 87 | UINT64 PopCntSupport : 1;
|
---|
| 88 | UINT64 Cmpxchg16bSupport : 1;
|
---|
| 89 | UINT64 Altmovcr8Support : 1;
|
---|
| 90 | UINT64 LzcntSupport : 1;
|
---|
| 91 | UINT64 MisAlignSseSupport : 1;
|
---|
| 92 | UINT64 MmxExtSupport : 1;
|
---|
| 93 | UINT64 Amd3DNowSupport : 1;
|
---|
| 94 | UINT64 ExtendedAmd3DNowSupport : 1;
|
---|
| 95 | UINT64 Page1GbSupport : 1;
|
---|
| 96 | UINT64 AesSupport : 1;
|
---|
| 97 | UINT64 PclmulqdqSupport : 1;
|
---|
| 98 | UINT64 PcidSupport : 1;
|
---|
| 99 | UINT64 Fma4Support : 1;
|
---|
| 100 | UINT64 F16CSupport : 1;
|
---|
| 101 | UINT64 RdRandSupport : 1;
|
---|
| 102 | UINT64 RdWrFsGsSupport : 1;
|
---|
| 103 | UINT64 SmepSupport : 1;
|
---|
| 104 | UINT64 EnhancedFastStringSupport : 1;
|
---|
| 105 | UINT64 Bmi1Support : 1;
|
---|
| 106 | UINT64 Bmi2Support : 1;
|
---|
| 107 | UINT64 Reserved1 : 2;
|
---|
| 108 | UINT64 MovbeSupport : 1;
|
---|
| 109 | UINT64 Npiep1Support : 1;
|
---|
| 110 | UINT64 DepX87FPUSaveSupport : 1;
|
---|
| 111 | UINT64 RdSeedSupport : 1;
|
---|
| 112 | UINT64 AdxSupport : 1;
|
---|
| 113 | UINT64 IntelPrefetchSupport : 1;
|
---|
| 114 | UINT64 SmapSupport : 1;
|
---|
| 115 | UINT64 HleSupport : 1;
|
---|
| 116 | UINT64 RtmSupport : 1;
|
---|
| 117 | UINT64 RdtscpSupport : 1;
|
---|
| 118 | UINT64 ClflushoptSupport : 1;
|
---|
| 119 | UINT64 ClwbSupport : 1;
|
---|
| 120 | UINT64 ShaSupport : 1;
|
---|
| 121 | UINT64 X87PointersSavedSupport : 1;
|
---|
| 122 | UINT64 InvpcidSupport : 1;
|
---|
| 123 | UINT64 IbrsSupport : 1;
|
---|
| 124 | UINT64 StibpSupport : 1;
|
---|
| 125 | UINT64 IbpbSupport : 1;
|
---|
| 126 | UINT64 Reserved2 : 1;
|
---|
| 127 | UINT64 SsbdSupport : 1;
|
---|
| 128 | UINT64 FastShortRepMovSupport : 1;
|
---|
| 129 | UINT64 Reserved3 : 1;
|
---|
| 130 | UINT64 RdclNo : 1;
|
---|
| 131 | UINT64 IbrsAllSupport : 1;
|
---|
| 132 | UINT64 Reserved4 : 1;
|
---|
| 133 | UINT64 SsbNo : 1;
|
---|
| 134 | UINT64 RsbANo : 1;
|
---|
| 135 | UINT64 Reserved5 : 1;
|
---|
| 136 | UINT64 RdPidSupport : 1;
|
---|
| 137 | UINT64 UmipSupport : 1;
|
---|
| 138 | UINT64 MdsNoSupport : 1;
|
---|
| 139 | UINT64 MdClearSupport : 1;
|
---|
| 140 | UINT64 TaaNoSupport : 1;
|
---|
| 141 | UINT64 TsxCtrlSupport : 1;
|
---|
| 142 | UINT64 Reserved6 : 1;
|
---|
| 143 | };
|
---|
| 144 | UINT64 AsUINT64;
|
---|
| 145 | } WHV_PROCESSOR_FEATURES;
|
---|
| 146 |
|
---|
| 147 | C_ASSERT(sizeof(WHV_PROCESSOR_FEATURES) == sizeof(UINT64));
|
---|
| 148 |
|
---|
| 149 | typedef union WHV_PROCESSOR_FEATURES1 {
|
---|
| 150 | __C89_NAMELESS struct {
|
---|
| 151 | UINT64 ACountMCountSupport : 1;
|
---|
| 152 | UINT64 TscInvariantSupport : 1;
|
---|
| 153 | UINT64 ClZeroSupport : 1;
|
---|
| 154 | UINT64 RdpruSupport : 1;
|
---|
| 155 | UINT64 Reserved2 : 2;
|
---|
| 156 | UINT64 NestedVirtSupport : 1;
|
---|
| 157 | UINT64 PsfdSupport: 1;
|
---|
| 158 | UINT64 CetSsSupport : 1;
|
---|
| 159 | UINT64 CetIbtSupport : 1;
|
---|
| 160 | UINT64 VmxExceptionInjectSupport : 1;
|
---|
| 161 | UINT64 Reserved4 : 1;
|
---|
| 162 | UINT64 UmwaitTpauseSupport : 1;
|
---|
| 163 | UINT64 MovdiriSupport : 1;
|
---|
| 164 | UINT64 Movdir64bSupport : 1;
|
---|
| 165 | UINT64 CldemoteSupport : 1;
|
---|
| 166 | UINT64 SerializeSupport : 1;
|
---|
| 167 | UINT64 TscDeadlineTmrSupport : 1;
|
---|
| 168 | UINT64 TscAdjustSupport : 1;
|
---|
| 169 | UINT64 FZLRepMovsb : 1;
|
---|
| 170 | UINT64 FSRepStosb : 1;
|
---|
| 171 | UINT64 FSRepCmpsb : 1;
|
---|
| 172 | UINT64 Reserved5 : 42;
|
---|
| 173 | };
|
---|
| 174 | UINT64 AsUINT64;
|
---|
| 175 | } WHV_PROCESSOR_FEATURES1;
|
---|
| 176 |
|
---|
| 177 | C_ASSERT(sizeof(WHV_PROCESSOR_FEATURES1) == sizeof(UINT64));
|
---|
| 178 |
|
---|
| 179 | #define WHV_PROCESSOR_FEATURES_BANKS_COUNT 2
|
---|
| 180 |
|
---|
| 181 | typedef struct WHV_PROCESSOR_FEATURES_BANKS {
|
---|
| 182 | UINT32 BanksCount;
|
---|
| 183 | UINT32 Reserved0;
|
---|
| 184 | __C89_NAMELESS union {
|
---|
| 185 | __C89_NAMELESS struct {
|
---|
| 186 | WHV_PROCESSOR_FEATURES Bank0;
|
---|
| 187 | WHV_PROCESSOR_FEATURES1 Bank1;
|
---|
| 188 | };
|
---|
| 189 | UINT64 AsUINT64[WHV_PROCESSOR_FEATURES_BANKS_COUNT];
|
---|
| 190 | };
|
---|
| 191 | } WHV_PROCESSOR_FEATURES_BANKS;
|
---|
| 192 |
|
---|
| 193 | C_ASSERT(sizeof(WHV_PROCESSOR_FEATURES_BANKS) == sizeof(UINT64) * (WHV_PROCESSOR_FEATURES_BANKS_COUNT + 1));
|
---|
| 194 |
|
---|
| 195 | typedef union WHV_SYNTHETIC_PROCESSOR_FEATURES {
|
---|
| 196 | __C89_NAMELESS struct {
|
---|
| 197 | UINT64 HypervisorPresent:1;
|
---|
| 198 | UINT64 Hv1:1;
|
---|
| 199 | UINT64 AccessVpRunTimeReg:1;
|
---|
| 200 | UINT64 AccessPartitionReferenceCounter:1;
|
---|
| 201 | UINT64 AccessSynicRegs:1;
|
---|
| 202 | UINT64 AccessSyntheticTimerRegs:1;
|
---|
| 203 | #ifdef __x86_64__
|
---|
| 204 | UINT64 AccessIntrCtrlRegs:1;
|
---|
| 205 | #else
|
---|
| 206 | UINT64 ReservedZ6:1;
|
---|
| 207 | #endif
|
---|
| 208 | UINT64 AccessHypercallRegs:1;
|
---|
| 209 | UINT64 AccessVpIndex:1;
|
---|
| 210 | UINT64 AccessPartitionReferenceTsc:1;
|
---|
| 211 | #ifdef __x86_64__
|
---|
| 212 | UINT64 AccessGuestIdleReg:1;
|
---|
| 213 | UINT64 AccessFrequencyRegs:1;
|
---|
| 214 | #else
|
---|
| 215 | UINT64 ReservedZ10:1;
|
---|
| 216 | UINT64 ReservedZ11:1;
|
---|
| 217 | #endif
|
---|
| 218 | UINT64 ReservedZ12:1;
|
---|
| 219 | UINT64 ReservedZ13:1;
|
---|
| 220 | UINT64 ReservedZ14:1;
|
---|
| 221 | #ifdef __x86_64__
|
---|
| 222 | UINT64 EnableExtendedGvaRangesForFlushVirtualAddressList:1;
|
---|
| 223 | #else
|
---|
| 224 | UINT64 ReservedZ15:1;
|
---|
| 225 | #endif
|
---|
| 226 | UINT64 ReservedZ16:1;
|
---|
| 227 | UINT64 ReservedZ17:1;
|
---|
| 228 | UINT64 FastHypercallOutput:1;
|
---|
| 229 | UINT64 ReservedZ19:1;
|
---|
| 230 | UINT64 ReservedZ20:1;
|
---|
| 231 | UINT64 ReservedZ21:1;
|
---|
| 232 | UINT64 DirectSyntheticTimers:1;
|
---|
| 233 | UINT64 ReservedZ23:1;
|
---|
| 234 | UINT64 ExtendedProcessorMasks:1;
|
---|
| 235 | #ifdef __x86_64__
|
---|
| 236 | UINT64 TbFlushHypercalls:1;
|
---|
| 237 | #else
|
---|
| 238 | UINT64 ReservedZ25:1;
|
---|
| 239 | #endif
|
---|
| 240 | UINT64 SyntheticClusterIpi:1;
|
---|
| 241 | UINT64 NotifyLongSpinWait:1;
|
---|
| 242 | UINT64 QueryNumaDistance:1;
|
---|
| 243 | UINT64 SignalEvents:1;
|
---|
| 244 | UINT64 RetargetDeviceInterrupt:1;
|
---|
| 245 | UINT64 Reserved:33;
|
---|
| 246 | };
|
---|
| 247 | UINT64 AsUINT64;
|
---|
| 248 | } WHV_SYNTHETIC_PROCESSOR_FEATURES;
|
---|
| 249 |
|
---|
| 250 | C_ASSERT(sizeof(WHV_SYNTHETIC_PROCESSOR_FEATURES) == 8);
|
---|
| 251 |
|
---|
| 252 | #define WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS_COUNT 1
|
---|
| 253 |
|
---|
| 254 | typedef struct WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS {
|
---|
| 255 | UINT32 BanksCount;
|
---|
| 256 | UINT32 Reserved0;
|
---|
| 257 | __C89_NAMELESS union {
|
---|
| 258 | __C89_NAMELESS struct {
|
---|
| 259 | WHV_SYNTHETIC_PROCESSOR_FEATURES Bank0;
|
---|
| 260 | };
|
---|
| 261 | UINT64 AsUINT64[WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS_COUNT];
|
---|
| 262 | };
|
---|
| 263 | } WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS;
|
---|
| 264 |
|
---|
| 265 | C_ASSERT(sizeof(WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS) == 16);
|
---|
| 266 |
|
---|
| 267 | typedef union _WHV_PROCESSOR_XSAVE_FEATURES {
|
---|
| 268 | __C89_NAMELESS struct {
|
---|
| 269 | UINT64 XsaveSupport : 1;
|
---|
| 270 | UINT64 XsaveoptSupport : 1;
|
---|
| 271 | UINT64 AvxSupport : 1;
|
---|
| 272 | UINT64 Avx2Support : 1;
|
---|
| 273 | UINT64 FmaSupport : 1;
|
---|
| 274 | UINT64 MpxSupport : 1;
|
---|
| 275 | UINT64 Avx512Support : 1;
|
---|
| 276 | UINT64 Avx512DQSupport : 1;
|
---|
| 277 | UINT64 Avx512CDSupport : 1;
|
---|
| 278 | UINT64 Avx512BWSupport : 1;
|
---|
| 279 | UINT64 Avx512VLSupport : 1;
|
---|
| 280 | UINT64 XsaveCompSupport : 1;
|
---|
| 281 | UINT64 XsaveSupervisorSupport : 1;
|
---|
| 282 | UINT64 Xcr1Support : 1;
|
---|
| 283 | UINT64 Avx512BitalgSupport : 1;
|
---|
| 284 | UINT64 Avx512IfmaSupport : 1;
|
---|
| 285 | UINT64 Avx512VBmiSupport : 1;
|
---|
| 286 | UINT64 Avx512VBmi2Support : 1;
|
---|
| 287 | UINT64 Avx512VnniSupport : 1;
|
---|
| 288 | UINT64 GfniSupport : 1;
|
---|
| 289 | UINT64 VaesSupport : 1;
|
---|
| 290 | UINT64 Avx512VPopcntdqSupport : 1;
|
---|
| 291 | UINT64 VpclmulqdqSupport : 1;
|
---|
| 292 | UINT64 Avx512Bf16Support : 1;
|
---|
| 293 | UINT64 Avx512Vp2IntersectSupport : 1;
|
---|
| 294 | UINT64 Avx512Fp16Support : 1;
|
---|
| 295 | UINT64 XfdSupport : 1;
|
---|
| 296 | UINT64 AmxTileSupport : 1;
|
---|
| 297 | UINT64 AmxBf16Support : 1;
|
---|
| 298 | UINT64 AmxInt8Support : 1;
|
---|
| 299 | UINT64 AvxVnniSupport : 1;
|
---|
| 300 | UINT64 Reserved : 33;
|
---|
| 301 | };
|
---|
| 302 | UINT64 AsUINT64;
|
---|
| 303 | } WHV_PROCESSOR_XSAVE_FEATURES, *PWHV_PROCESSOR_XSAVE_FEATURES;
|
---|
| 304 |
|
---|
| 305 | C_ASSERT(sizeof(WHV_PROCESSOR_XSAVE_FEATURES) == sizeof(UINT64));
|
---|
| 306 |
|
---|
| 307 | typedef union WHV_PROCESSOR_PERFMON_FEATURES {
|
---|
| 308 | __C89_NAMELESS struct {
|
---|
| 309 | UINT64 PmuSupport : 1;
|
---|
| 310 | UINT64 LbrSupport : 1;
|
---|
| 311 | UINT64 Reserved : 62;
|
---|
| 312 | };
|
---|
| 313 | UINT64 AsUINT64;
|
---|
| 314 | } WHV_PROCESSOR_PERFMON_FEATURES, *PWHV_PROCESSOR_PERFMON_FEATURES;
|
---|
| 315 |
|
---|
| 316 | C_ASSERT(sizeof(WHV_PROCESSOR_PERFMON_FEATURES) == 8);
|
---|
| 317 |
|
---|
| 318 | typedef union WHV_X64_MSR_EXIT_BITMAP {
|
---|
| 319 | UINT64 AsUINT64;
|
---|
| 320 | __C89_NAMELESS struct {
|
---|
| 321 | UINT64 UnhandledMsrs : 1;
|
---|
| 322 | UINT64 TscMsrWrite : 1;
|
---|
| 323 | UINT64 TscMsrRead : 1;
|
---|
| 324 | UINT64 ApicBaseMsrWrite : 1;
|
---|
| 325 | UINT64 MiscEnableMsrRead:1;
|
---|
| 326 | UINT64 McUpdatePatchLevelMsrRead:1;
|
---|
| 327 | UINT64 Reserved:58;
|
---|
| 328 | };
|
---|
| 329 | } WHV_X64_MSR_EXIT_BITMAP;
|
---|
| 330 |
|
---|
| 331 | C_ASSERT(sizeof(WHV_X64_MSR_EXIT_BITMAP) == sizeof(UINT64));
|
---|
| 332 |
|
---|
| 333 | typedef struct WHV_MEMORY_RANGE_ENTRY {
|
---|
| 334 | UINT64 GuestAddress;
|
---|
| 335 | UINT64 SizeInBytes;
|
---|
| 336 | } WHV_MEMORY_RANGE_ENTRY;
|
---|
| 337 |
|
---|
| 338 | C_ASSERT(sizeof(WHV_MEMORY_RANGE_ENTRY) == 16);
|
---|
| 339 |
|
---|
| 340 | typedef union WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS {
|
---|
| 341 | UINT32 AsUINT32;
|
---|
| 342 | __C89_NAMELESS struct {
|
---|
| 343 | UINT32 Prefetch:1;
|
---|
| 344 | UINT32 AvoidHardFaults:1;
|
---|
| 345 | UINT32 Reserved:30;
|
---|
| 346 | };
|
---|
| 347 | } WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS;
|
---|
| 348 |
|
---|
| 349 | C_ASSERT(sizeof(WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS) == 4);
|
---|
| 350 |
|
---|
| 351 | typedef enum WHV_MEMORY_ACCESS_TYPE {
|
---|
| 352 | WHvMemoryAccessRead = 0,
|
---|
| 353 | WHvMemoryAccessWrite = 1,
|
---|
| 354 | WHvMemoryAccessExecute = 2
|
---|
| 355 | } WHV_MEMORY_ACCESS_TYPE;
|
---|
| 356 |
|
---|
| 357 | typedef struct WHV_ADVISE_GPA_RANGE_POPULATE {
|
---|
| 358 | WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS Flags;
|
---|
| 359 | WHV_MEMORY_ACCESS_TYPE AccessType;
|
---|
| 360 | } WHV_ADVISE_GPA_RANGE_POPULATE;
|
---|
| 361 |
|
---|
| 362 | C_ASSERT(sizeof(WHV_ADVISE_GPA_RANGE_POPULATE) == 8);
|
---|
| 363 |
|
---|
| 364 | typedef struct WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP {
|
---|
| 365 | UINT32 IsSupported:1;
|
---|
| 366 | UINT32 Reserved:31;
|
---|
| 367 | UINT32 HighestFrequencyMhz;
|
---|
| 368 | UINT32 NominalFrequencyMhz;
|
---|
| 369 | UINT32 LowestFrequencyMhz;
|
---|
| 370 | UINT32 FrequencyStepMhz;
|
---|
| 371 | } WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP;
|
---|
| 372 |
|
---|
| 373 | C_ASSERT(sizeof(WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP) == 20);
|
---|
| 374 |
|
---|
| 375 | typedef union WHV_SCHEDULER_FEATURES {
|
---|
| 376 | __C89_NAMELESS struct {
|
---|
| 377 | UINT64 CpuReserve: 1;
|
---|
| 378 | UINT64 CpuCap: 1;
|
---|
| 379 | UINT64 CpuWeight: 1;
|
---|
| 380 | UINT64 CpuGroupId: 1;
|
---|
| 381 | UINT64 DisableSmt: 1;
|
---|
| 382 | UINT64 Reserved: 59;
|
---|
| 383 | };
|
---|
| 384 | UINT64 AsUINT64;
|
---|
| 385 | } WHV_SCHEDULER_FEATURES;
|
---|
| 386 |
|
---|
| 387 | C_ASSERT(sizeof(WHV_SCHEDULER_FEATURES) == 8);
|
---|
| 388 |
|
---|
| 389 | typedef union WHV_CAPABILITY {
|
---|
| 390 | WINBOOL HypervisorPresent;
|
---|
| 391 | WHV_CAPABILITY_FEATURES Features;
|
---|
| 392 | WHV_EXTENDED_VM_EXITS ExtendedVmExits;
|
---|
| 393 | WHV_PROCESSOR_VENDOR ProcessorVendor;
|
---|
| 394 | WHV_PROCESSOR_FEATURES ProcessorFeatures;
|
---|
| 395 | WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS SyntheticProcessorFeaturesBanks;
|
---|
| 396 | WHV_PROCESSOR_XSAVE_FEATURES ProcessorXsaveFeatures;
|
---|
| 397 | UINT8 ProcessorClFlushSize;
|
---|
| 398 | UINT64 ExceptionExitBitmap;
|
---|
| 399 | WHV_X64_MSR_EXIT_BITMAP X64MsrExitBitmap;
|
---|
| 400 | UINT64 ProcessorClockFrequency;
|
---|
| 401 | UINT64 InterruptClockFrequency;
|
---|
| 402 | WHV_PROCESSOR_FEATURES_BANKS ProcessorFeaturesBanks;
|
---|
| 403 | WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS GpaRangePopulateFlags;
|
---|
| 404 | WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP ProcessorFrequencyCap;
|
---|
| 405 | WHV_PROCESSOR_PERFMON_FEATURES ProcessorPerfmonFeatures;
|
---|
| 406 | WHV_SCHEDULER_FEATURES SchedulerFeatures;
|
---|
| 407 | } WHV_CAPABILITY;
|
---|
| 408 |
|
---|
| 409 | typedef VOID* WHV_PARTITION_HANDLE;
|
---|
| 410 |
|
---|
| 411 | typedef enum WHV_PARTITION_PROPERTY_CODE {
|
---|
| 412 | WHvPartitionPropertyCodeExtendedVmExits = 0x00000001,
|
---|
| 413 | WHvPartitionPropertyCodeExceptionExitBitmap = 0x00000002,
|
---|
| 414 | WHvPartitionPropertyCodeSeparateSecurityDomain = 0x00000003,
|
---|
| 415 | WHvPartitionPropertyCodeNestedVirtualization = 0x00000004,
|
---|
| 416 | WHvPartitionPropertyCodeX64MsrExitBitmap = 0x00000005,
|
---|
| 417 | WHvPartitionPropertyCodePrimaryNumaNode = 0x00000006,
|
---|
| 418 | WHvPartitionPropertyCodeCpuReserve = 0x00000007,
|
---|
| 419 | WHvPartitionPropertyCodeCpuCap = 0x00000008,
|
---|
| 420 | WHvPartitionPropertyCodeCpuWeight = 0x00000009,
|
---|
| 421 | WHvPartitionPropertyCodeCpuGroupId = 0x0000000A,
|
---|
| 422 | WHvPartitionPropertyCodeProcessorFrequencyCap = 0x0000000B,
|
---|
| 423 | WHvPartitionPropertyCodeAllowDeviceAssignment = 0x0000000C,
|
---|
| 424 | WHvPartitionPropertyCodeDisableSmt = 0x0000000D,
|
---|
| 425 | WHvPartitionPropertyCodeProcessorFeatures = 0x00001001,
|
---|
| 426 | WHvPartitionPropertyCodeProcessorClFlushSize = 0x00001002,
|
---|
| 427 | WHvPartitionPropertyCodeCpuidExitList = 0x00001003,
|
---|
| 428 | WHvPartitionPropertyCodeCpuidResultList = 0x00001004,
|
---|
| 429 | WHvPartitionPropertyCodeLocalApicEmulationMode = 0x00001005,
|
---|
| 430 | WHvPartitionPropertyCodeProcessorXsaveFeatures = 0x00001006,
|
---|
| 431 | WHvPartitionPropertyCodeProcessorClockFrequency = 0x00001007,
|
---|
| 432 | WHvPartitionPropertyCodeInterruptClockFrequency = 0x00001008,
|
---|
| 433 | WHvPartitionPropertyCodeApicRemoteReadSupport = 0x00001009,
|
---|
| 434 | WHvPartitionPropertyCodeProcessorFeaturesBanks = 0x0000100A,
|
---|
| 435 | WHvPartitionPropertyCodeReferenceTime = 0x0000100B,
|
---|
| 436 | WHvPartitionPropertyCodeSyntheticProcessorFeaturesBanks = 0x0000100C,
|
---|
| 437 | WHvPartitionPropertyCodeCpuidResultList2 = 0x0000100D,
|
---|
| 438 | WHvPartitionPropertyCodeProcessorPerfmonFeatures = 0x0000100E,
|
---|
| 439 | WHvPartitionPropertyCodeMsrActionList = 0x0000100F,
|
---|
| 440 | WHvPartitionPropertyCodeUnimplementedMsrAction = 0x00001010,
|
---|
| 441 | WHvPartitionPropertyCodeProcessorCount = 0x00001fff
|
---|
| 442 | } WHV_PARTITION_PROPERTY_CODE;
|
---|
| 443 |
|
---|
| 444 | typedef struct WHV_X64_CPUID_RESULT {
|
---|
| 445 | UINT32 Function;
|
---|
| 446 | UINT32 Reserved[3];
|
---|
| 447 | UINT32 Eax;
|
---|
| 448 | UINT32 Ebx;
|
---|
| 449 | UINT32 Ecx;
|
---|
| 450 | UINT32 Edx;
|
---|
| 451 | } WHV_X64_CPUID_RESULT;
|
---|
| 452 |
|
---|
| 453 | C_ASSERT(sizeof(WHV_X64_CPUID_RESULT) == 32);
|
---|
| 454 |
|
---|
| 455 | typedef enum WHV_X64_CPUID_RESULT2_FLAGS {
|
---|
| 456 | WHvX64CpuidResult2FlagSubleafSpecific = 0x00000001,
|
---|
| 457 | WHvX64CpuidResult2FlagVpSpecific = 0x00000002
|
---|
| 458 | } WHV_X64_CPUID_RESULT2_FLAGS;
|
---|
| 459 |
|
---|
| 460 | DEFINE_ENUM_FLAG_OPERATORS(WHV_X64_CPUID_RESULT2_FLAGS);
|
---|
| 461 |
|
---|
| 462 | typedef struct WHV_CPUID_OUTPUT {
|
---|
| 463 | UINT32 Eax;
|
---|
| 464 | UINT32 Ebx;
|
---|
| 465 | UINT32 Ecx;
|
---|
| 466 | UINT32 Edx;
|
---|
| 467 | } WHV_CPUID_OUTPUT;
|
---|
| 468 |
|
---|
| 469 | C_ASSERT(sizeof(WHV_CPUID_OUTPUT) == 16);
|
---|
| 470 |
|
---|
| 471 | typedef struct WHV_X64_CPUID_RESULT2 {
|
---|
| 472 | UINT32 Function;
|
---|
| 473 | UINT32 Index;
|
---|
| 474 | UINT32 VpIndex;
|
---|
| 475 | WHV_X64_CPUID_RESULT2_FLAGS Flags;
|
---|
| 476 | WHV_CPUID_OUTPUT Output;
|
---|
| 477 | WHV_CPUID_OUTPUT Mask;
|
---|
| 478 | } WHV_X64_CPUID_RESULT2;
|
---|
| 479 |
|
---|
| 480 | C_ASSERT(sizeof(WHV_X64_CPUID_RESULT2) == 48);
|
---|
| 481 |
|
---|
| 482 | typedef struct WHV_MSR_ACTION_ENTRY {
|
---|
| 483 | UINT32 Index;
|
---|
| 484 | UINT8 ReadAction;
|
---|
| 485 | UINT8 WriteAction;
|
---|
| 486 | UINT16 Reserved;
|
---|
| 487 | } WHV_MSR_ACTION_ENTRY;
|
---|
| 488 |
|
---|
| 489 | C_ASSERT(sizeof(WHV_MSR_ACTION_ENTRY) == 8);
|
---|
| 490 |
|
---|
| 491 | typedef enum WHV_MSR_ACTION {
|
---|
| 492 | WHvMsrActionArchitectureDefault = 0,
|
---|
| 493 | WHvMsrActionIgnoreWriteReadZero = 1,
|
---|
| 494 | WHvMsrActionExit = 2
|
---|
| 495 | } WHV_MSR_ACTION;
|
---|
| 496 |
|
---|
| 497 | typedef enum WHV_EXCEPTION_TYPE {
|
---|
| 498 | WHvX64ExceptionTypeDivideErrorFault = 0x0,
|
---|
| 499 | WHvX64ExceptionTypeDebugTrapOrFault = 0x1,
|
---|
| 500 | WHvX64ExceptionTypeBreakpointTrap = 0x3,
|
---|
| 501 | WHvX64ExceptionTypeOverflowTrap = 0x4,
|
---|
| 502 | WHvX64ExceptionTypeBoundRangeFault = 0x5,
|
---|
| 503 | WHvX64ExceptionTypeInvalidOpcodeFault = 0x6,
|
---|
| 504 | WHvX64ExceptionTypeDeviceNotAvailableFault = 0x7,
|
---|
| 505 | WHvX64ExceptionTypeDoubleFaultAbort = 0x8,
|
---|
| 506 | WHvX64ExceptionTypeInvalidTaskStateSegmentFault = 0x0A,
|
---|
| 507 | WHvX64ExceptionTypeSegmentNotPresentFault = 0x0B,
|
---|
| 508 | WHvX64ExceptionTypeStackFault = 0x0C,
|
---|
| 509 | WHvX64ExceptionTypeGeneralProtectionFault = 0x0D,
|
---|
| 510 | WHvX64ExceptionTypePageFault = 0x0E,
|
---|
| 511 | WHvX64ExceptionTypeFloatingPointErrorFault = 0x10,
|
---|
| 512 | WHvX64ExceptionTypeAlignmentCheckFault = 0x11,
|
---|
| 513 | WHvX64ExceptionTypeMachineCheckAbort = 0x12,
|
---|
| 514 | WHvX64ExceptionTypeSimdFloatingPointFault = 0x13
|
---|
| 515 | } WHV_EXCEPTION_TYPE;
|
---|
| 516 |
|
---|
| 517 | typedef enum WHV_X64_LOCAL_APIC_EMULATION_MODE {
|
---|
| 518 | WHvX64LocalApicEmulationModeNone,
|
---|
| 519 | WHvX64LocalApicEmulationModeXApic,
|
---|
| 520 | WHvX64LocalApicEmulationModeX2Apic
|
---|
| 521 | } WHV_X64_LOCAL_APIC_EMULATION_MODE;
|
---|
| 522 |
|
---|
| 523 | typedef union WHV_PARTITION_PROPERTY {
|
---|
| 524 | WHV_EXTENDED_VM_EXITS ExtendedVmExits;
|
---|
| 525 | WHV_PROCESSOR_FEATURES ProcessorFeatures;
|
---|
| 526 | WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS SyntheticProcessorFeaturesBanks;
|
---|
| 527 | WHV_PROCESSOR_XSAVE_FEATURES ProcessorXsaveFeatures;
|
---|
| 528 | UINT8 ProcessorClFlushSize;
|
---|
| 529 | UINT32 ProcessorCount;
|
---|
| 530 | UINT32 CpuidExitList[1];
|
---|
| 531 | WHV_X64_CPUID_RESULT CpuidResultList[1];
|
---|
| 532 | WHV_X64_CPUID_RESULT2 CpuidResultList2[1];
|
---|
| 533 | WHV_MSR_ACTION_ENTRY MsrActionList[1];
|
---|
| 534 | WHV_MSR_ACTION UnimplementedMsrAction;
|
---|
| 535 | UINT64 ExceptionExitBitmap;
|
---|
| 536 | WHV_X64_LOCAL_APIC_EMULATION_MODE LocalApicEmulationMode;
|
---|
| 537 | WINBOOL SeparateSecurityDomain;
|
---|
| 538 | WINBOOL NestedVirtualization;
|
---|
| 539 | WHV_X64_MSR_EXIT_BITMAP X64MsrExitBitmap;
|
---|
| 540 | UINT64 ProcessorClockFrequency;
|
---|
| 541 | UINT64 InterruptClockFrequency;
|
---|
| 542 | WINBOOL ApicRemoteRead;
|
---|
| 543 | WHV_PROCESSOR_FEATURES_BANKS ProcessorFeaturesBanks;
|
---|
| 544 | UINT64 ReferenceTime;
|
---|
| 545 | USHORT PrimaryNumaNode;
|
---|
| 546 | UINT32 CpuReserve;
|
---|
| 547 | UINT32 CpuCap;
|
---|
| 548 | UINT32 CpuWeight;
|
---|
| 549 | UINT64 CpuGroupId;
|
---|
| 550 | UINT32 ProcessorFrequencyCap;
|
---|
| 551 | WINBOOL AllowDeviceAssignment;
|
---|
| 552 | WHV_PROCESSOR_PERFMON_FEATURES ProcessorPerfmonFeatures;
|
---|
| 553 | WINBOOL DisableSmt;
|
---|
| 554 | } WHV_PARTITION_PROPERTY;
|
---|
| 555 |
|
---|
| 556 | typedef UINT64 WHV_GUEST_PHYSICAL_ADDRESS;
|
---|
| 557 | typedef UINT64 WHV_GUEST_VIRTUAL_ADDRESS;
|
---|
| 558 |
|
---|
| 559 | typedef enum WHV_MAP_GPA_RANGE_FLAGS {
|
---|
| 560 | WHvMapGpaRangeFlagNone = 0x00000000,
|
---|
| 561 | WHvMapGpaRangeFlagRead = 0x00000001,
|
---|
| 562 | WHvMapGpaRangeFlagWrite = 0x00000002,
|
---|
| 563 | WHvMapGpaRangeFlagExecute = 0x00000004,
|
---|
| 564 | WHvMapGpaRangeFlagTrackDirtyPages = 0x00000008
|
---|
| 565 | } WHV_MAP_GPA_RANGE_FLAGS;
|
---|
| 566 |
|
---|
| 567 | DEFINE_ENUM_FLAG_OPERATORS(WHV_MAP_GPA_RANGE_FLAGS);
|
---|
| 568 |
|
---|
| 569 | typedef enum WHV_TRANSLATE_GVA_FLAGS {
|
---|
| 570 | WHvTranslateGvaFlagNone = 0x00000000,
|
---|
| 571 | WHvTranslateGvaFlagValidateRead = 0x00000001,
|
---|
| 572 | WHvTranslateGvaFlagValidateWrite = 0x00000002,
|
---|
| 573 | WHvTranslateGvaFlagValidateExecute = 0x00000004,
|
---|
| 574 | WHvTranslateGvaFlagPrivilegeExempt = 0x00000008,
|
---|
| 575 | WHvTranslateGvaFlagSetPageTableBits = 0x00000010,
|
---|
| 576 | WHvTranslateGvaFlagEnforceSmap = 0x00000100,
|
---|
| 577 | WHvTranslateGvaFlagOverrideSmap = 0x00000200
|
---|
| 578 | } WHV_TRANSLATE_GVA_FLAGS;
|
---|
| 579 |
|
---|
| 580 | DEFINE_ENUM_FLAG_OPERATORS(WHV_TRANSLATE_GVA_FLAGS);
|
---|
| 581 |
|
---|
| 582 | typedef enum WHV_TRANSLATE_GVA_RESULT_CODE {
|
---|
| 583 | WHvTranslateGvaResultSuccess = 0,
|
---|
| 584 | WHvTranslateGvaResultPageNotPresent = 1,
|
---|
| 585 | WHvTranslateGvaResultPrivilegeViolation = 2,
|
---|
| 586 | WHvTranslateGvaResultInvalidPageTableFlags = 3,
|
---|
| 587 | WHvTranslateGvaResultGpaUnmapped = 4,
|
---|
| 588 | WHvTranslateGvaResultGpaNoReadAccess = 5,
|
---|
| 589 | WHvTranslateGvaResultGpaNoWriteAccess = 6,
|
---|
| 590 | WHvTranslateGvaResultGpaIllegalOverlayAccess = 7,
|
---|
| 591 | WHvTranslateGvaResultIntercept = 8
|
---|
| 592 | } WHV_TRANSLATE_GVA_RESULT_CODE;
|
---|
| 593 |
|
---|
| 594 | typedef struct WHV_TRANSLATE_GVA_RESULT {
|
---|
| 595 | WHV_TRANSLATE_GVA_RESULT_CODE ResultCode;
|
---|
| 596 | UINT32 Reserved;
|
---|
| 597 | } WHV_TRANSLATE_GVA_RESULT;
|
---|
| 598 |
|
---|
| 599 | C_ASSERT(sizeof(WHV_TRANSLATE_GVA_RESULT) == 8);
|
---|
| 600 |
|
---|
| 601 | typedef union WHV_ADVISE_GPA_RANGE {
|
---|
| 602 | WHV_ADVISE_GPA_RANGE_POPULATE Populate;
|
---|
| 603 | } WHV_ADVISE_GPA_RANGE;
|
---|
| 604 |
|
---|
| 605 | C_ASSERT(sizeof(WHV_ADVISE_GPA_RANGE) == 8);
|
---|
| 606 |
|
---|
| 607 | typedef enum WHV_CACHE_TYPE {
|
---|
| 608 | WHvCacheTypeUncached = 0,
|
---|
| 609 | WHvCacheTypeWriteCombining = 1,
|
---|
| 610 | WHvCacheTypeWriteThrough = 4,
|
---|
| 611 | #ifdef __x86_64__
|
---|
| 612 | WHvCacheTypeWriteProtected = 5,
|
---|
| 613 | #endif
|
---|
| 614 | WHvCacheTypeWriteBack = 6
|
---|
| 615 | } WHV_CACHE_TYPE;
|
---|
| 616 |
|
---|
| 617 | typedef union WHV_ACCESS_GPA_CONTROLS {
|
---|
| 618 | UINT64 AsUINT64;
|
---|
| 619 | __C89_NAMELESS struct {
|
---|
| 620 | WHV_CACHE_TYPE CacheType;
|
---|
| 621 | UINT32 Reserved;
|
---|
| 622 | };
|
---|
| 623 | } WHV_ACCESS_GPA_CONTROLS;
|
---|
| 624 |
|
---|
| 625 | C_ASSERT(sizeof(WHV_ACCESS_GPA_CONTROLS) == 8);
|
---|
| 626 |
|
---|
| 627 | #define WHV_READ_WRITE_GPA_RANGE_MAX_SIZE 16
|
---|
| 628 |
|
---|
| 629 | typedef enum WHV_REGISTER_NAME {
|
---|
| 630 | WHvX64RegisterRax = 0x00000000,
|
---|
| 631 | WHvX64RegisterRcx = 0x00000001,
|
---|
| 632 | WHvX64RegisterRdx = 0x00000002,
|
---|
| 633 | WHvX64RegisterRbx = 0x00000003,
|
---|
| 634 | WHvX64RegisterRsp = 0x00000004,
|
---|
| 635 | WHvX64RegisterRbp = 0x00000005,
|
---|
| 636 | WHvX64RegisterRsi = 0x00000006,
|
---|
| 637 | WHvX64RegisterRdi = 0x00000007,
|
---|
| 638 | WHvX64RegisterR8 = 0x00000008,
|
---|
| 639 | WHvX64RegisterR9 = 0x00000009,
|
---|
| 640 | WHvX64RegisterR10 = 0x0000000A,
|
---|
| 641 | WHvX64RegisterR11 = 0x0000000B,
|
---|
| 642 | WHvX64RegisterR12 = 0x0000000C,
|
---|
| 643 | WHvX64RegisterR13 = 0x0000000D,
|
---|
| 644 | WHvX64RegisterR14 = 0x0000000E,
|
---|
| 645 | WHvX64RegisterR15 = 0x0000000F,
|
---|
| 646 | WHvX64RegisterRip = 0x00000010,
|
---|
| 647 | WHvX64RegisterRflags = 0x00000011,
|
---|
| 648 | WHvX64RegisterEs = 0x00000012,
|
---|
| 649 | WHvX64RegisterCs = 0x00000013,
|
---|
| 650 | WHvX64RegisterSs = 0x00000014,
|
---|
| 651 | WHvX64RegisterDs = 0x00000015,
|
---|
| 652 | WHvX64RegisterFs = 0x00000016,
|
---|
| 653 | WHvX64RegisterGs = 0x00000017,
|
---|
| 654 | WHvX64RegisterLdtr = 0x00000018,
|
---|
| 655 | WHvX64RegisterTr = 0x00000019,
|
---|
| 656 | WHvX64RegisterIdtr = 0x0000001A,
|
---|
| 657 | WHvX64RegisterGdtr = 0x0000001B,
|
---|
| 658 | WHvX64RegisterCr0 = 0x0000001C,
|
---|
| 659 | WHvX64RegisterCr2 = 0x0000001D,
|
---|
| 660 | WHvX64RegisterCr3 = 0x0000001E,
|
---|
| 661 | WHvX64RegisterCr4 = 0x0000001F,
|
---|
| 662 | WHvX64RegisterCr8 = 0x00000020,
|
---|
| 663 | WHvX64RegisterDr0 = 0x00000021,
|
---|
| 664 | WHvX64RegisterDr1 = 0x00000022,
|
---|
| 665 | WHvX64RegisterDr2 = 0x00000023,
|
---|
| 666 | WHvX64RegisterDr3 = 0x00000024,
|
---|
| 667 | WHvX64RegisterDr6 = 0x00000025,
|
---|
| 668 | WHvX64RegisterDr7 = 0x00000026,
|
---|
| 669 | WHvX64RegisterXCr0 = 0x00000027,
|
---|
| 670 | WHvX64RegisterVirtualCr0 = 0x00000028,
|
---|
| 671 | WHvX64RegisterVirtualCr3 = 0x00000029,
|
---|
| 672 | WHvX64RegisterVirtualCr4 = 0x0000002A,
|
---|
| 673 | WHvX64RegisterVirtualCr8 = 0x0000002B,
|
---|
| 674 | WHvX64RegisterXmm0 = 0x00001000,
|
---|
| 675 | WHvX64RegisterXmm1 = 0x00001001,
|
---|
| 676 | WHvX64RegisterXmm2 = 0x00001002,
|
---|
| 677 | WHvX64RegisterXmm3 = 0x00001003,
|
---|
| 678 | WHvX64RegisterXmm4 = 0x00001004,
|
---|
| 679 | WHvX64RegisterXmm5 = 0x00001005,
|
---|
| 680 | WHvX64RegisterXmm6 = 0x00001006,
|
---|
| 681 | WHvX64RegisterXmm7 = 0x00001007,
|
---|
| 682 | WHvX64RegisterXmm8 = 0x00001008,
|
---|
| 683 | WHvX64RegisterXmm9 = 0x00001009,
|
---|
| 684 | WHvX64RegisterXmm10 = 0x0000100A,
|
---|
| 685 | WHvX64RegisterXmm11 = 0x0000100B,
|
---|
| 686 | WHvX64RegisterXmm12 = 0x0000100C,
|
---|
| 687 | WHvX64RegisterXmm13 = 0x0000100D,
|
---|
| 688 | WHvX64RegisterXmm14 = 0x0000100E,
|
---|
| 689 | WHvX64RegisterXmm15 = 0x0000100F,
|
---|
| 690 | WHvX64RegisterFpMmx0 = 0x00001010,
|
---|
| 691 | WHvX64RegisterFpMmx1 = 0x00001011,
|
---|
| 692 | WHvX64RegisterFpMmx2 = 0x00001012,
|
---|
| 693 | WHvX64RegisterFpMmx3 = 0x00001013,
|
---|
| 694 | WHvX64RegisterFpMmx4 = 0x00001014,
|
---|
| 695 | WHvX64RegisterFpMmx5 = 0x00001015,
|
---|
| 696 | WHvX64RegisterFpMmx6 = 0x00001016,
|
---|
| 697 | WHvX64RegisterFpMmx7 = 0x00001017,
|
---|
| 698 | WHvX64RegisterFpControlStatus = 0x00001018,
|
---|
| 699 | WHvX64RegisterXmmControlStatus = 0x00001019,
|
---|
| 700 | WHvX64RegisterTsc = 0x00002000,
|
---|
| 701 | WHvX64RegisterEfer = 0x00002001,
|
---|
| 702 | WHvX64RegisterKernelGsBase = 0x00002002,
|
---|
| 703 | WHvX64RegisterApicBase = 0x00002003,
|
---|
| 704 | WHvX64RegisterPat = 0x00002004,
|
---|
| 705 | WHvX64RegisterSysenterCs = 0x00002005,
|
---|
| 706 | WHvX64RegisterSysenterEip = 0x00002006,
|
---|
| 707 | WHvX64RegisterSysenterEsp = 0x00002007,
|
---|
| 708 | WHvX64RegisterStar = 0x00002008,
|
---|
| 709 | WHvX64RegisterLstar = 0x00002009,
|
---|
| 710 | WHvX64RegisterCstar = 0x0000200A,
|
---|
| 711 | WHvX64RegisterSfmask = 0x0000200B,
|
---|
| 712 | WHvX64RegisterInitialApicId = 0x0000200C,
|
---|
| 713 | WHvX64RegisterMsrMtrrCap = 0x0000200D,
|
---|
| 714 | WHvX64RegisterMsrMtrrDefType = 0x0000200E,
|
---|
| 715 | WHvX64RegisterMsrMtrrPhysBase0 = 0x00002010,
|
---|
| 716 | WHvX64RegisterMsrMtrrPhysBase1 = 0x00002011,
|
---|
| 717 | WHvX64RegisterMsrMtrrPhysBase2 = 0x00002012,
|
---|
| 718 | WHvX64RegisterMsrMtrrPhysBase3 = 0x00002013,
|
---|
| 719 | WHvX64RegisterMsrMtrrPhysBase4 = 0x00002014,
|
---|
| 720 | WHvX64RegisterMsrMtrrPhysBase5 = 0x00002015,
|
---|
| 721 | WHvX64RegisterMsrMtrrPhysBase6 = 0x00002016,
|
---|
| 722 | WHvX64RegisterMsrMtrrPhysBase7 = 0x00002017,
|
---|
| 723 | WHvX64RegisterMsrMtrrPhysBase8 = 0x00002018,
|
---|
| 724 | WHvX64RegisterMsrMtrrPhysBase9 = 0x00002019,
|
---|
| 725 | WHvX64RegisterMsrMtrrPhysBaseA = 0x0000201A,
|
---|
| 726 | WHvX64RegisterMsrMtrrPhysBaseB = 0x0000201B,
|
---|
| 727 | WHvX64RegisterMsrMtrrPhysBaseC = 0x0000201C,
|
---|
| 728 | WHvX64RegisterMsrMtrrPhysBaseD = 0x0000201D,
|
---|
| 729 | WHvX64RegisterMsrMtrrPhysBaseE = 0x0000201E,
|
---|
| 730 | WHvX64RegisterMsrMtrrPhysBaseF = 0x0000201F,
|
---|
| 731 | WHvX64RegisterMsrMtrrPhysMask0 = 0x00002040,
|
---|
| 732 | WHvX64RegisterMsrMtrrPhysMask1 = 0x00002041,
|
---|
| 733 | WHvX64RegisterMsrMtrrPhysMask2 = 0x00002042,
|
---|
| 734 | WHvX64RegisterMsrMtrrPhysMask3 = 0x00002043,
|
---|
| 735 | WHvX64RegisterMsrMtrrPhysMask4 = 0x00002044,
|
---|
| 736 | WHvX64RegisterMsrMtrrPhysMask5 = 0x00002045,
|
---|
| 737 | WHvX64RegisterMsrMtrrPhysMask6 = 0x00002046,
|
---|
| 738 | WHvX64RegisterMsrMtrrPhysMask7 = 0x00002047,
|
---|
| 739 | WHvX64RegisterMsrMtrrPhysMask8 = 0x00002048,
|
---|
| 740 | WHvX64RegisterMsrMtrrPhysMask9 = 0x00002049,
|
---|
| 741 | WHvX64RegisterMsrMtrrPhysMaskA = 0x0000204A,
|
---|
| 742 | WHvX64RegisterMsrMtrrPhysMaskB = 0x0000204B,
|
---|
| 743 | WHvX64RegisterMsrMtrrPhysMaskC = 0x0000204C,
|
---|
| 744 | WHvX64RegisterMsrMtrrPhysMaskD = 0x0000204D,
|
---|
| 745 | WHvX64RegisterMsrMtrrPhysMaskE = 0x0000204E,
|
---|
| 746 | WHvX64RegisterMsrMtrrPhysMaskF = 0x0000204F,
|
---|
| 747 | WHvX64RegisterMsrMtrrFix64k00000 = 0x00002070,
|
---|
| 748 | WHvX64RegisterMsrMtrrFix16k80000 = 0x00002071,
|
---|
| 749 | WHvX64RegisterMsrMtrrFix16kA0000 = 0x00002072,
|
---|
| 750 | WHvX64RegisterMsrMtrrFix4kC0000 = 0x00002073,
|
---|
| 751 | WHvX64RegisterMsrMtrrFix4kC8000 = 0x00002074,
|
---|
| 752 | WHvX64RegisterMsrMtrrFix4kD0000 = 0x00002075,
|
---|
| 753 | WHvX64RegisterMsrMtrrFix4kD8000 = 0x00002076,
|
---|
| 754 | WHvX64RegisterMsrMtrrFix4kE0000 = 0x00002077,
|
---|
| 755 | WHvX64RegisterMsrMtrrFix4kE8000 = 0x00002078,
|
---|
| 756 | WHvX64RegisterMsrMtrrFix4kF0000 = 0x00002079,
|
---|
| 757 | WHvX64RegisterMsrMtrrFix4kF8000 = 0x0000207A,
|
---|
| 758 | WHvX64RegisterTscAux = 0x0000207B,
|
---|
| 759 | WHvX64RegisterBndcfgs = 0x0000207C,
|
---|
| 760 | WHvX64RegisterMCount = 0x0000207E,
|
---|
| 761 | WHvX64RegisterACount = 0x0000207F,
|
---|
| 762 | WHvX64RegisterSpecCtrl = 0x00002084,
|
---|
| 763 | WHvX64RegisterPredCmd = 0x00002085,
|
---|
| 764 | WHvX64RegisterTscVirtualOffset = 0x00002087,
|
---|
| 765 | WHvX64RegisterTsxCtrl = 0x00002088,
|
---|
| 766 | WHvX64RegisterXss = 0x0000208B,
|
---|
| 767 | WHvX64RegisterUCet = 0x0000208C,
|
---|
| 768 | WHvX64RegisterSCet = 0x0000208D,
|
---|
| 769 | WHvX64RegisterSsp = 0x0000208E,
|
---|
| 770 | WHvX64RegisterPl0Ssp = 0x0000208F,
|
---|
| 771 | WHvX64RegisterPl1Ssp = 0x00002090,
|
---|
| 772 | WHvX64RegisterPl2Ssp = 0x00002091,
|
---|
| 773 | WHvX64RegisterPl3Ssp = 0x00002092,
|
---|
| 774 | WHvX64RegisterInterruptSspTableAddr = 0x00002093,
|
---|
| 775 | WHvX64RegisterTscDeadline = 0x00002095,
|
---|
| 776 | WHvX64RegisterTscAdjust = 0x00002096,
|
---|
| 777 | WHvX64RegisterUmwaitControl = 0x00002098,
|
---|
| 778 | WHvX64RegisterXfd = 0x00002099,
|
---|
| 779 | WHvX64RegisterXfdErr = 0x0000209A,
|
---|
| 780 | WHvX64RegisterApicId = 0x00003002,
|
---|
| 781 | WHvX64RegisterApicVersion = 0x00003003,
|
---|
| 782 | WHvX64RegisterApicTpr = 0x00003008,
|
---|
| 783 | WHvX64RegisterApicPpr = 0x0000300A,
|
---|
| 784 | WHvX64RegisterApicEoi = 0x0000300B,
|
---|
| 785 | WHvX64RegisterApicLdr = 0x0000300D,
|
---|
| 786 | WHvX64RegisterApicSpurious = 0x0000300F,
|
---|
| 787 | WHvX64RegisterApicIsr0 = 0x00003010,
|
---|
| 788 | WHvX64RegisterApicIsr1 = 0x00003011,
|
---|
| 789 | WHvX64RegisterApicIsr2 = 0x00003012,
|
---|
| 790 | WHvX64RegisterApicIsr3 = 0x00003013,
|
---|
| 791 | WHvX64RegisterApicIsr4 = 0x00003014,
|
---|
| 792 | WHvX64RegisterApicIsr5 = 0x00003015,
|
---|
| 793 | WHvX64RegisterApicIsr6 = 0x00003016,
|
---|
| 794 | WHvX64RegisterApicIsr7 = 0x00003017,
|
---|
| 795 | WHvX64RegisterApicTmr0 = 0x00003018,
|
---|
| 796 | WHvX64RegisterApicTmr1 = 0x00003019,
|
---|
| 797 | WHvX64RegisterApicTmr2 = 0x0000301A,
|
---|
| 798 | WHvX64RegisterApicTmr3 = 0x0000301B,
|
---|
| 799 | WHvX64RegisterApicTmr4 = 0x0000301C,
|
---|
| 800 | WHvX64RegisterApicTmr5 = 0x0000301D,
|
---|
| 801 | WHvX64RegisterApicTmr6 = 0x0000301E,
|
---|
| 802 | WHvX64RegisterApicTmr7 = 0x0000301F,
|
---|
| 803 | WHvX64RegisterApicIrr0 = 0x00003020,
|
---|
| 804 | WHvX64RegisterApicIrr1 = 0x00003021,
|
---|
| 805 | WHvX64RegisterApicIrr2 = 0x00003022,
|
---|
| 806 | WHvX64RegisterApicIrr3 = 0x00003023,
|
---|
| 807 | WHvX64RegisterApicIrr4 = 0x00003024,
|
---|
| 808 | WHvX64RegisterApicIrr5 = 0x00003025,
|
---|
| 809 | WHvX64RegisterApicIrr6 = 0x00003026,
|
---|
| 810 | WHvX64RegisterApicIrr7 = 0x00003027,
|
---|
| 811 | WHvX64RegisterApicEse = 0x00003028,
|
---|
| 812 | WHvX64RegisterApicIcr = 0x00003030,
|
---|
| 813 | WHvX64RegisterApicLvtTimer = 0x00003032,
|
---|
| 814 | WHvX64RegisterApicLvtThermal = 0x00003033,
|
---|
| 815 | WHvX64RegisterApicLvtPerfmon = 0x00003034,
|
---|
| 816 | WHvX64RegisterApicLvtLint0 = 0x00003035,
|
---|
| 817 | WHvX64RegisterApicLvtLint1 = 0x00003036,
|
---|
| 818 | WHvX64RegisterApicLvtError = 0x00003037,
|
---|
| 819 | WHvX64RegisterApicInitCount = 0x00003038,
|
---|
| 820 | WHvX64RegisterApicCurrentCount = 0x00003039,
|
---|
| 821 | WHvX64RegisterApicDivide = 0x0000303E,
|
---|
| 822 | WHvX64RegisterApicSelfIpi = 0x0000303F,
|
---|
| 823 | WHvRegisterSint0 = 0x00004000,
|
---|
| 824 | WHvRegisterSint1 = 0x00004001,
|
---|
| 825 | WHvRegisterSint2 = 0x00004002,
|
---|
| 826 | WHvRegisterSint3 = 0x00004003,
|
---|
| 827 | WHvRegisterSint4 = 0x00004004,
|
---|
| 828 | WHvRegisterSint5 = 0x00004005,
|
---|
| 829 | WHvRegisterSint6 = 0x00004006,
|
---|
| 830 | WHvRegisterSint7 = 0x00004007,
|
---|
| 831 | WHvRegisterSint8 = 0x00004008,
|
---|
| 832 | WHvRegisterSint9 = 0x00004009,
|
---|
| 833 | WHvRegisterSint10 = 0x0000400A,
|
---|
| 834 | WHvRegisterSint11 = 0x0000400B,
|
---|
| 835 | WHvRegisterSint12 = 0x0000400C,
|
---|
| 836 | WHvRegisterSint13 = 0x0000400D,
|
---|
| 837 | WHvRegisterSint14 = 0x0000400E,
|
---|
| 838 | WHvRegisterSint15 = 0x0000400F,
|
---|
| 839 | WHvRegisterScontrol = 0x00004010,
|
---|
| 840 | WHvRegisterSversion = 0x00004011,
|
---|
| 841 | WHvRegisterSiefp = 0x00004012,
|
---|
| 842 | WHvRegisterSimp = 0x00004013,
|
---|
| 843 | WHvRegisterEom = 0x00004014,
|
---|
| 844 | WHvRegisterVpRuntime = 0x00005000,
|
---|
| 845 | WHvX64RegisterHypercall = 0x00005001,
|
---|
| 846 | WHvRegisterGuestOsId = 0x00005002,
|
---|
| 847 | WHvRegisterVpAssistPage = 0x00005013,
|
---|
| 848 | WHvRegisterReferenceTsc = 0x00005017,
|
---|
| 849 | WHvRegisterReferenceTscSequence = 0x0000501A,
|
---|
| 850 | WHvRegisterPendingInterruption = 0x80000000,
|
---|
| 851 | WHvRegisterInterruptState = 0x80000001,
|
---|
| 852 | WHvRegisterPendingEvent = 0x80000002,
|
---|
| 853 | WHvX64RegisterDeliverabilityNotifications = 0x80000004,
|
---|
| 854 | WHvRegisterInternalActivityState = 0x80000005,
|
---|
| 855 | WHvX64RegisterPendingDebugException = 0x80000006
|
---|
| 856 | } WHV_REGISTER_NAME;
|
---|
| 857 |
|
---|
| 858 | typedef union DECLSPEC_ALIGN(16) WHV_UINT128 {
|
---|
| 859 | __C89_NAMELESS struct {
|
---|
| 860 | UINT64 Low64;
|
---|
| 861 | UINT64 High64;
|
---|
| 862 | };
|
---|
| 863 | UINT32 Dword[4];
|
---|
| 864 | } WHV_UINT128;
|
---|
| 865 |
|
---|
| 866 | C_ASSERT(sizeof(WHV_UINT128) == 16);
|
---|
| 867 |
|
---|
| 868 | typedef union WHV_X64_FP_REGISTER {
|
---|
| 869 | __C89_NAMELESS struct {
|
---|
| 870 | UINT64 Mantissa;
|
---|
| 871 | UINT64 BiasedExponent:15;
|
---|
| 872 | UINT64 Sign:1;
|
---|
| 873 | UINT64 Reserved:48;
|
---|
| 874 | };
|
---|
| 875 | WHV_UINT128 AsUINT128;
|
---|
| 876 | } WHV_X64_FP_REGISTER;
|
---|
| 877 |
|
---|
| 878 | C_ASSERT(sizeof(WHV_X64_FP_REGISTER) == 16);
|
---|
| 879 |
|
---|
| 880 | typedef union WHV_X64_FP_CONTROL_STATUS_REGISTER {
|
---|
| 881 | __C89_NAMELESS struct {
|
---|
| 882 | UINT16 FpControl;
|
---|
| 883 | UINT16 FpStatus;
|
---|
| 884 | UINT8 FpTag;
|
---|
| 885 | UINT8 Reserved;
|
---|
| 886 | UINT16 LastFpOp;
|
---|
| 887 | __C89_NAMELESS union {
|
---|
| 888 | UINT64 LastFpRip;
|
---|
| 889 | __C89_NAMELESS struct {
|
---|
| 890 | UINT32 LastFpEip;
|
---|
| 891 | UINT16 LastFpCs;
|
---|
| 892 | UINT16 Reserved2;
|
---|
| 893 | };
|
---|
| 894 | };
|
---|
| 895 | };
|
---|
| 896 | WHV_UINT128 AsUINT128;
|
---|
| 897 | } WHV_X64_FP_CONTROL_STATUS_REGISTER;
|
---|
| 898 |
|
---|
| 899 | C_ASSERT(sizeof(WHV_X64_FP_CONTROL_STATUS_REGISTER) == 16);
|
---|
| 900 |
|
---|
| 901 | typedef union WHV_X64_XMM_CONTROL_STATUS_REGISTER {
|
---|
| 902 | __C89_NAMELESS struct {
|
---|
| 903 | __C89_NAMELESS union {
|
---|
| 904 | UINT64 LastFpRdp;
|
---|
| 905 | __C89_NAMELESS struct {
|
---|
| 906 | UINT32 LastFpDp;
|
---|
| 907 | UINT16 LastFpDs;
|
---|
| 908 | UINT16 Reserved;
|
---|
| 909 | };
|
---|
| 910 | };
|
---|
| 911 | UINT32 XmmStatusControl;
|
---|
| 912 | UINT32 XmmStatusControlMask;
|
---|
| 913 | };
|
---|
| 914 | WHV_UINT128 AsUINT128;
|
---|
| 915 | } WHV_X64_XMM_CONTROL_STATUS_REGISTER;
|
---|
| 916 |
|
---|
| 917 | C_ASSERT(sizeof(WHV_X64_FP_CONTROL_STATUS_REGISTER) == 16);
|
---|
| 918 |
|
---|
| 919 | typedef struct WHV_X64_SEGMENT_REGISTER {
|
---|
| 920 | UINT64 Base;
|
---|
| 921 | UINT32 Limit;
|
---|
| 922 | UINT16 Selector;
|
---|
| 923 | __C89_NAMELESS union {
|
---|
| 924 | __C89_NAMELESS struct {
|
---|
| 925 | UINT16 SegmentType:4;
|
---|
| 926 | UINT16 NonSystemSegment:1;
|
---|
| 927 | UINT16 DescriptorPrivilegeLevel:2;
|
---|
| 928 | UINT16 Present:1;
|
---|
| 929 | UINT16 Reserved:4;
|
---|
| 930 | UINT16 Available:1;
|
---|
| 931 | UINT16 Long:1;
|
---|
| 932 | UINT16 Default:1;
|
---|
| 933 | UINT16 Granularity:1;
|
---|
| 934 | };
|
---|
| 935 | UINT16 Attributes;
|
---|
| 936 | };
|
---|
| 937 | } WHV_X64_SEGMENT_REGISTER;
|
---|
| 938 |
|
---|
| 939 | C_ASSERT(sizeof(WHV_X64_SEGMENT_REGISTER) == 16);
|
---|
| 940 |
|
---|
| 941 | typedef struct WHV_X64_TABLE_REGISTER {
|
---|
| 942 | UINT16 Pad[3];
|
---|
| 943 | UINT16 Limit;
|
---|
| 944 | UINT64 Base;
|
---|
| 945 | } WHV_X64_TABLE_REGISTER;
|
---|
| 946 |
|
---|
| 947 | C_ASSERT(sizeof(WHV_X64_TABLE_REGISTER) == 16);
|
---|
| 948 |
|
---|
| 949 | typedef union WHV_X64_INTERRUPT_STATE_REGISTER {
|
---|
| 950 | __C89_NAMELESS struct {
|
---|
| 951 | UINT64 InterruptShadow:1;
|
---|
| 952 | UINT64 NmiMasked:1;
|
---|
| 953 | UINT64 Reserved:62;
|
---|
| 954 | };
|
---|
| 955 | UINT64 AsUINT64;
|
---|
| 956 | } WHV_X64_INTERRUPT_STATE_REGISTER;
|
---|
| 957 |
|
---|
| 958 | C_ASSERT(sizeof(WHV_X64_INTERRUPT_STATE_REGISTER) == 8);
|
---|
| 959 |
|
---|
| 960 | typedef union WHV_X64_PENDING_INTERRUPTION_REGISTER {
|
---|
| 961 | __C89_NAMELESS struct {
|
---|
| 962 | UINT32 InterruptionPending:1;
|
---|
| 963 | UINT32 InterruptionType:3;
|
---|
| 964 | UINT32 DeliverErrorCode:1;
|
---|
| 965 | UINT32 InstructionLength:4;
|
---|
| 966 | UINT32 NestedEvent:1;
|
---|
| 967 | UINT32 Reserved:6;
|
---|
| 968 | UINT32 InterruptionVector:16;
|
---|
| 969 | UINT32 ErrorCode;
|
---|
| 970 | };
|
---|
| 971 | UINT64 AsUINT64;
|
---|
| 972 | } WHV_X64_PENDING_INTERRUPTION_REGISTER;
|
---|
| 973 |
|
---|
| 974 | C_ASSERT(sizeof(WHV_X64_PENDING_INTERRUPTION_REGISTER) == sizeof(UINT64));
|
---|
| 975 |
|
---|
| 976 | typedef union WHV_X64_DELIVERABILITY_NOTIFICATIONS_REGISTER {
|
---|
| 977 | __C89_NAMELESS struct {
|
---|
| 978 | UINT64 NmiNotification:1;
|
---|
| 979 | UINT64 InterruptNotification:1;
|
---|
| 980 | UINT64 InterruptPriority:4;
|
---|
| 981 | UINT64 Reserved:58;
|
---|
| 982 | };
|
---|
| 983 | UINT64 AsUINT64;
|
---|
| 984 | } WHV_X64_DELIVERABILITY_NOTIFICATIONS_REGISTER;
|
---|
| 985 |
|
---|
| 986 | C_ASSERT(sizeof(WHV_X64_DELIVERABILITY_NOTIFICATIONS_REGISTER) == sizeof(UINT64));
|
---|
| 987 |
|
---|
| 988 | typedef enum WHV_X64_PENDING_EVENT_TYPE {
|
---|
| 989 | WHvX64PendingEventException = 0,
|
---|
| 990 | WHvX64PendingEventExtInt = 5
|
---|
| 991 | } WHV_X64_PENDING_EVENT_TYPE;
|
---|
| 992 |
|
---|
| 993 | typedef union WHV_X64_PENDING_EXCEPTION_EVENT {
|
---|
| 994 | __C89_NAMELESS struct {
|
---|
| 995 | UINT32 EventPending : 1;
|
---|
| 996 | UINT32 EventType : 3;
|
---|
| 997 | UINT32 Reserved0 : 4;
|
---|
| 998 | UINT32 DeliverErrorCode : 1;
|
---|
| 999 | UINT32 Reserved1 : 7;
|
---|
| 1000 | UINT32 Vector : 16;
|
---|
| 1001 | UINT32 ErrorCode;
|
---|
| 1002 | UINT64 ExceptionParameter;
|
---|
| 1003 | };
|
---|
| 1004 | WHV_UINT128 AsUINT128;
|
---|
| 1005 | } WHV_X64_PENDING_EXCEPTION_EVENT;
|
---|
| 1006 |
|
---|
| 1007 | C_ASSERT(sizeof(WHV_X64_PENDING_EXCEPTION_EVENT) == sizeof(WHV_UINT128));
|
---|
| 1008 |
|
---|
| 1009 | typedef union WHV_X64_PENDING_EXT_INT_EVENT {
|
---|
| 1010 | __C89_NAMELESS struct {
|
---|
| 1011 | UINT64 EventPending : 1;
|
---|
| 1012 | UINT64 EventType : 3;
|
---|
| 1013 | UINT64 Reserved0 : 4;
|
---|
| 1014 | UINT64 Vector : 8;
|
---|
| 1015 | UINT64 Reserved1 : 48;
|
---|
| 1016 | UINT64 Reserved2;
|
---|
| 1017 | };
|
---|
| 1018 | WHV_UINT128 AsUINT128;
|
---|
| 1019 | } WHV_X64_PENDING_EXT_INT_EVENT;
|
---|
| 1020 |
|
---|
| 1021 | C_ASSERT(sizeof(WHV_X64_PENDING_EXT_INT_EVENT) == sizeof(WHV_UINT128));
|
---|
| 1022 |
|
---|
| 1023 | typedef union WHV_INTERNAL_ACTIVITY_REGISTER {
|
---|
| 1024 | __C89_NAMELESS struct {
|
---|
| 1025 | UINT64 StartupSuspend : 1;
|
---|
| 1026 | UINT64 HaltSuspend : 1;
|
---|
| 1027 | UINT64 IdleSuspend : 1;
|
---|
| 1028 | UINT64 Reserved :61;
|
---|
| 1029 | };
|
---|
| 1030 | UINT64 AsUINT64;
|
---|
| 1031 | } WHV_INTERNAL_ACTIVITY_REGISTER;
|
---|
| 1032 |
|
---|
| 1033 | C_ASSERT(sizeof(WHV_INTERNAL_ACTIVITY_REGISTER) == sizeof(UINT64));
|
---|
| 1034 |
|
---|
| 1035 | typedef union WHV_X64_PENDING_DEBUG_EXCEPTION {
|
---|
| 1036 | UINT64 AsUINT64;
|
---|
| 1037 | __C89_NAMELESS struct {
|
---|
| 1038 | UINT64 Breakpoint0 : 1;
|
---|
| 1039 | UINT64 Breakpoint1 : 1;
|
---|
| 1040 | UINT64 Breakpoint2 : 1;
|
---|
| 1041 | UINT64 Breakpoint3 : 1;
|
---|
| 1042 | UINT64 SingleStep : 1;
|
---|
| 1043 | UINT64 Reserved0 : 59;
|
---|
| 1044 | };
|
---|
| 1045 | } WHV_X64_PENDING_DEBUG_EXCEPTION;
|
---|
| 1046 |
|
---|
| 1047 | C_ASSERT(sizeof(WHV_X64_PENDING_DEBUG_EXCEPTION) == sizeof(UINT64));
|
---|
| 1048 |
|
---|
| 1049 | typedef struct WHV_SYNIC_SINT_DELIVERABLE_CONTEXT {
|
---|
| 1050 | UINT16 DeliverableSints;
|
---|
| 1051 | UINT16 Reserved1;
|
---|
| 1052 | UINT32 Reserved2;
|
---|
| 1053 | } WHV_SYNIC_SINT_DELIVERABLE_CONTEXT;
|
---|
| 1054 |
|
---|
| 1055 | C_ASSERT(sizeof(WHV_SYNIC_SINT_DELIVERABLE_CONTEXT) == 8);
|
---|
| 1056 |
|
---|
| 1057 | typedef union WHV_REGISTER_VALUE {
|
---|
| 1058 | WHV_UINT128 Reg128;
|
---|
| 1059 | UINT64 Reg64;
|
---|
| 1060 | UINT32 Reg32;
|
---|
| 1061 | UINT16 Reg16;
|
---|
| 1062 | UINT8 Reg8;
|
---|
| 1063 | WHV_X64_FP_REGISTER Fp;
|
---|
| 1064 | WHV_X64_FP_CONTROL_STATUS_REGISTER FpControlStatus;
|
---|
| 1065 | WHV_X64_XMM_CONTROL_STATUS_REGISTER XmmControlStatus;
|
---|
| 1066 | WHV_X64_SEGMENT_REGISTER Segment;
|
---|
| 1067 | WHV_X64_TABLE_REGISTER Table;
|
---|
| 1068 | WHV_X64_INTERRUPT_STATE_REGISTER InterruptState;
|
---|
| 1069 | WHV_X64_PENDING_INTERRUPTION_REGISTER PendingInterruption;
|
---|
| 1070 | WHV_X64_DELIVERABILITY_NOTIFICATIONS_REGISTER DeliverabilityNotifications;
|
---|
| 1071 | WHV_X64_PENDING_EXCEPTION_EVENT ExceptionEvent;
|
---|
| 1072 | WHV_X64_PENDING_EXT_INT_EVENT ExtIntEvent;
|
---|
| 1073 | WHV_INTERNAL_ACTIVITY_REGISTER InternalActivity;
|
---|
| 1074 | WHV_X64_PENDING_DEBUG_EXCEPTION PendingDebugException;
|
---|
| 1075 | } WHV_REGISTER_VALUE;
|
---|
| 1076 |
|
---|
| 1077 | C_ASSERT(sizeof(WHV_REGISTER_VALUE) == 16);
|
---|
| 1078 |
|
---|
| 1079 | typedef enum WHV_RUN_VP_EXIT_REASON {
|
---|
| 1080 | WHvRunVpExitReasonNone = 0x00000000,
|
---|
| 1081 | WHvRunVpExitReasonMemoryAccess = 0x00000001,
|
---|
| 1082 | WHvRunVpExitReasonX64IoPortAccess = 0x00000002,
|
---|
| 1083 | WHvRunVpExitReasonUnrecoverableException = 0x00000004,
|
---|
| 1084 | WHvRunVpExitReasonInvalidVpRegisterValue = 0x00000005,
|
---|
| 1085 | WHvRunVpExitReasonUnsupportedFeature = 0x00000006,
|
---|
| 1086 | WHvRunVpExitReasonX64InterruptWindow = 0x00000007,
|
---|
| 1087 | WHvRunVpExitReasonX64Halt = 0x00000008,
|
---|
| 1088 | WHvRunVpExitReasonX64ApicEoi = 0x00000009,
|
---|
| 1089 | WHvRunVpExitReasonSynicSintDeliverable = 0x0000000A,
|
---|
| 1090 | WHvRunVpExitReasonX64MsrAccess = 0x00001000,
|
---|
| 1091 | WHvRunVpExitReasonX64Cpuid = 0x00001001,
|
---|
| 1092 | WHvRunVpExitReasonException = 0x00001002,
|
---|
| 1093 | WHvRunVpExitReasonX64Rdtsc = 0x00001003,
|
---|
| 1094 | WHvRunVpExitReasonX64ApicSmiTrap = 0x00001004,
|
---|
| 1095 | WHvRunVpExitReasonHypercall = 0x00001005,
|
---|
| 1096 | WHvRunVpExitReasonX64ApicInitSipiTrap = 0x00001006,
|
---|
| 1097 | WHvRunVpExitReasonX64ApicWriteTrap = 0x00001007,
|
---|
| 1098 | WHvRunVpExitReasonCanceled = 0x00002001
|
---|
| 1099 | } WHV_RUN_VP_EXIT_REASON;
|
---|
| 1100 |
|
---|
| 1101 | typedef union WHV_X64_VP_EXECUTION_STATE {
|
---|
| 1102 | __C89_NAMELESS struct {
|
---|
| 1103 | UINT16 Cpl : 2;
|
---|
| 1104 | UINT16 Cr0Pe : 1;
|
---|
| 1105 | UINT16 Cr0Am : 1;
|
---|
| 1106 | UINT16 EferLma : 1;
|
---|
| 1107 | UINT16 DebugActive : 1;
|
---|
| 1108 | UINT16 InterruptionPending : 1;
|
---|
| 1109 | UINT16 Reserved0 : 5;
|
---|
| 1110 | UINT16 InterruptShadow : 1;
|
---|
| 1111 | UINT16 Reserved1 : 3;
|
---|
| 1112 | };
|
---|
| 1113 | UINT16 AsUINT16;
|
---|
| 1114 | } WHV_X64_VP_EXECUTION_STATE;
|
---|
| 1115 |
|
---|
| 1116 | C_ASSERT(sizeof(WHV_X64_VP_EXECUTION_STATE) == sizeof(UINT16));
|
---|
| 1117 |
|
---|
| 1118 | typedef struct WHV_VP_EXIT_CONTEXT {
|
---|
| 1119 | WHV_X64_VP_EXECUTION_STATE ExecutionState;
|
---|
| 1120 | UINT8 InstructionLength : 4;
|
---|
| 1121 | UINT8 Cr8 : 4;
|
---|
| 1122 | UINT8 Reserved;
|
---|
| 1123 | UINT32 Reserved2;
|
---|
| 1124 | WHV_X64_SEGMENT_REGISTER Cs;
|
---|
| 1125 | UINT64 Rip;
|
---|
| 1126 | UINT64 Rflags;
|
---|
| 1127 | } WHV_VP_EXIT_CONTEXT;
|
---|
| 1128 |
|
---|
| 1129 | C_ASSERT(sizeof(WHV_VP_EXIT_CONTEXT) == 40);
|
---|
| 1130 |
|
---|
| 1131 | typedef union WHV_MEMORY_ACCESS_INFO {
|
---|
| 1132 | __C89_NAMELESS struct {
|
---|
| 1133 | UINT32 AccessType : 2;
|
---|
| 1134 | UINT32 GpaUnmapped : 1;
|
---|
| 1135 | UINT32 GvaValid : 1;
|
---|
| 1136 | UINT32 Reserved : 28;
|
---|
| 1137 | };
|
---|
| 1138 | UINT32 AsUINT32;
|
---|
| 1139 | } WHV_MEMORY_ACCESS_INFO;
|
---|
| 1140 |
|
---|
| 1141 | C_ASSERT(sizeof(WHV_MEMORY_ACCESS_INFO) == 4);
|
---|
| 1142 |
|
---|
| 1143 | typedef struct WHV_MEMORY_ACCESS_CONTEXT {
|
---|
| 1144 | UINT8 InstructionByteCount;
|
---|
| 1145 | UINT8 Reserved[3];
|
---|
| 1146 | UINT8 InstructionBytes[16];
|
---|
| 1147 | WHV_MEMORY_ACCESS_INFO AccessInfo;
|
---|
| 1148 | WHV_GUEST_PHYSICAL_ADDRESS Gpa;
|
---|
| 1149 | WHV_GUEST_VIRTUAL_ADDRESS Gva;
|
---|
| 1150 | } WHV_MEMORY_ACCESS_CONTEXT;
|
---|
| 1151 |
|
---|
| 1152 | C_ASSERT(sizeof(WHV_MEMORY_ACCESS_CONTEXT) == 40);
|
---|
| 1153 |
|
---|
| 1154 | typedef union WHV_X64_IO_PORT_ACCESS_INFO {
|
---|
| 1155 | __C89_NAMELESS struct {
|
---|
| 1156 | UINT32 IsWrite : 1;
|
---|
| 1157 | UINT32 AccessSize: 3;
|
---|
| 1158 | UINT32 StringOp : 1;
|
---|
| 1159 | UINT32 RepPrefix : 1;
|
---|
| 1160 | UINT32 Reserved : 26;
|
---|
| 1161 | };
|
---|
| 1162 | UINT32 AsUINT32;
|
---|
| 1163 | } WHV_X64_IO_PORT_ACCESS_INFO;
|
---|
| 1164 |
|
---|
| 1165 | C_ASSERT(sizeof(WHV_X64_IO_PORT_ACCESS_INFO) == sizeof(UINT32));
|
---|
| 1166 |
|
---|
| 1167 | typedef struct WHV_X64_IO_PORT_ACCESS_CONTEXT {
|
---|
| 1168 | UINT8 InstructionByteCount;
|
---|
| 1169 | UINT8 Reserved[3];
|
---|
| 1170 | UINT8 InstructionBytes[16];
|
---|
| 1171 | WHV_X64_IO_PORT_ACCESS_INFO AccessInfo;
|
---|
| 1172 | UINT16 PortNumber;
|
---|
| 1173 | UINT16 Reserved2[3];
|
---|
| 1174 | UINT64 Rax;
|
---|
| 1175 | UINT64 Rcx;
|
---|
| 1176 | UINT64 Rsi;
|
---|
| 1177 | UINT64 Rdi;
|
---|
| 1178 | WHV_X64_SEGMENT_REGISTER Ds;
|
---|
| 1179 | WHV_X64_SEGMENT_REGISTER Es;
|
---|
| 1180 | } WHV_X64_IO_PORT_ACCESS_CONTEXT;
|
---|
| 1181 |
|
---|
| 1182 | C_ASSERT(sizeof(WHV_X64_IO_PORT_ACCESS_CONTEXT) == 96);
|
---|
| 1183 |
|
---|
| 1184 | typedef union WHV_X64_MSR_ACCESS_INFO {
|
---|
| 1185 | __C89_NAMELESS struct {
|
---|
| 1186 | UINT32 IsWrite : 1;
|
---|
| 1187 | UINT32 Reserved : 31;
|
---|
| 1188 | };
|
---|
| 1189 | UINT32 AsUINT32;
|
---|
| 1190 | } WHV_X64_MSR_ACCESS_INFO;
|
---|
| 1191 |
|
---|
| 1192 | C_ASSERT(sizeof(WHV_X64_MSR_ACCESS_INFO) == sizeof(UINT32));
|
---|
| 1193 |
|
---|
| 1194 | typedef struct WHV_X64_MSR_ACCESS_CONTEXT {
|
---|
| 1195 | WHV_X64_MSR_ACCESS_INFO AccessInfo;
|
---|
| 1196 | UINT32 MsrNumber;
|
---|
| 1197 | UINT64 Rax;
|
---|
| 1198 | UINT64 Rdx;
|
---|
| 1199 | } WHV_X64_MSR_ACCESS_CONTEXT;
|
---|
| 1200 |
|
---|
| 1201 | C_ASSERT(sizeof(WHV_X64_MSR_ACCESS_CONTEXT) == 24);
|
---|
| 1202 |
|
---|
| 1203 | typedef struct WHV_X64_CPUID_ACCESS_CONTEXT {
|
---|
| 1204 | UINT64 Rax;
|
---|
| 1205 | UINT64 Rcx;
|
---|
| 1206 | UINT64 Rdx;
|
---|
| 1207 | UINT64 Rbx;
|
---|
| 1208 | UINT64 DefaultResultRax;
|
---|
| 1209 | UINT64 DefaultResultRcx;
|
---|
| 1210 | UINT64 DefaultResultRdx;
|
---|
| 1211 | UINT64 DefaultResultRbx;
|
---|
| 1212 | } WHV_X64_CPUID_ACCESS_CONTEXT;
|
---|
| 1213 |
|
---|
| 1214 | C_ASSERT(sizeof(WHV_X64_CPUID_ACCESS_CONTEXT) == 64);
|
---|
| 1215 |
|
---|
| 1216 | typedef union WHV_VP_EXCEPTION_INFO {
|
---|
| 1217 | __C89_NAMELESS struct {
|
---|
| 1218 | UINT32 ErrorCodeValid : 1;
|
---|
| 1219 | UINT32 SoftwareException : 1;
|
---|
| 1220 | UINT32 Reserved : 30;
|
---|
| 1221 | };
|
---|
| 1222 | UINT32 AsUINT32;
|
---|
| 1223 | } WHV_VP_EXCEPTION_INFO;
|
---|
| 1224 |
|
---|
| 1225 | C_ASSERT(sizeof(WHV_VP_EXCEPTION_INFO) == sizeof(UINT32));
|
---|
| 1226 |
|
---|
| 1227 | typedef struct WHV_VP_EXCEPTION_CONTEXT {
|
---|
| 1228 | UINT8 InstructionByteCount;
|
---|
| 1229 | UINT8 Reserved[3];
|
---|
| 1230 | UINT8 InstructionBytes[16];
|
---|
| 1231 | WHV_VP_EXCEPTION_INFO ExceptionInfo;
|
---|
| 1232 | UINT8 ExceptionType;
|
---|
| 1233 | UINT8 Reserved2[3];
|
---|
| 1234 | UINT32 ErrorCode;
|
---|
| 1235 | UINT64 ExceptionParameter;
|
---|
| 1236 | } WHV_VP_EXCEPTION_CONTEXT;
|
---|
| 1237 |
|
---|
| 1238 | C_ASSERT(sizeof(WHV_VP_EXCEPTION_CONTEXT) == 40);
|
---|
| 1239 |
|
---|
| 1240 | typedef enum WHV_X64_UNSUPPORTED_FEATURE_CODE {
|
---|
| 1241 | WHvUnsupportedFeatureIntercept = 1,
|
---|
| 1242 | WHvUnsupportedFeatureTaskSwitchTss = 2
|
---|
| 1243 | } WHV_X64_UNSUPPORTED_FEATURE_CODE;
|
---|
| 1244 |
|
---|
| 1245 | typedef struct WHV_X64_UNSUPPORTED_FEATURE_CONTEXT {
|
---|
| 1246 | WHV_X64_UNSUPPORTED_FEATURE_CODE FeatureCode;
|
---|
| 1247 | UINT32 Reserved;
|
---|
| 1248 | UINT64 FeatureParameter;
|
---|
| 1249 | } WHV_X64_UNSUPPORTED_FEATURE_CONTEXT;
|
---|
| 1250 |
|
---|
| 1251 | C_ASSERT(sizeof(WHV_X64_UNSUPPORTED_FEATURE_CONTEXT) == 16);
|
---|
| 1252 |
|
---|
| 1253 | typedef enum WHV_RUN_VP_CANCEL_REASON {
|
---|
| 1254 | WhvRunVpCancelReasonUser = 0
|
---|
| 1255 | } WHV_RUN_VP_CANCEL_REASON;
|
---|
| 1256 |
|
---|
| 1257 | typedef struct WHV_RUN_VP_CANCELED_CONTEXT {
|
---|
| 1258 | WHV_RUN_VP_CANCEL_REASON CancelReason;
|
---|
| 1259 | } WHV_RUN_VP_CANCELED_CONTEXT;
|
---|
| 1260 |
|
---|
| 1261 | C_ASSERT(sizeof(WHV_RUN_VP_CANCELED_CONTEXT) == 4);
|
---|
| 1262 |
|
---|
| 1263 | typedef enum WHV_X64_PENDING_INTERRUPTION_TYPE {
|
---|
| 1264 | WHvX64PendingInterrupt = 0,
|
---|
| 1265 | WHvX64PendingNmi = 2,
|
---|
| 1266 | WHvX64PendingException = 3
|
---|
| 1267 | } WHV_X64_PENDING_INTERRUPTION_TYPE, *PWHV_X64_PENDING_INTERRUPTION_TYPE;
|
---|
| 1268 |
|
---|
| 1269 | typedef struct WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT {
|
---|
| 1270 | WHV_X64_PENDING_INTERRUPTION_TYPE DeliverableType;
|
---|
| 1271 | } WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT, *PWHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT;
|
---|
| 1272 |
|
---|
| 1273 | C_ASSERT(sizeof(WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT) == 4);
|
---|
| 1274 |
|
---|
| 1275 | typedef struct WHV_X64_APIC_EOI_CONTEXT {
|
---|
| 1276 | UINT32 InterruptVector;
|
---|
| 1277 | } WHV_X64_APIC_EOI_CONTEXT;
|
---|
| 1278 |
|
---|
| 1279 | C_ASSERT(sizeof(WHV_X64_APIC_EOI_CONTEXT) == 4);
|
---|
| 1280 |
|
---|
| 1281 | typedef union WHV_X64_RDTSC_INFO {
|
---|
| 1282 | __C89_NAMELESS struct {
|
---|
| 1283 | UINT64 IsRdtscp : 1;
|
---|
| 1284 | UINT64 Reserved : 63;
|
---|
| 1285 | };
|
---|
| 1286 | UINT64 AsUINT64;
|
---|
| 1287 | } WHV_X64_RDTSC_INFO;
|
---|
| 1288 |
|
---|
| 1289 | C_ASSERT(sizeof(WHV_X64_RDTSC_INFO) == 8);
|
---|
| 1290 |
|
---|
| 1291 | typedef struct WHV_X64_RDTSC_CONTEXT {
|
---|
| 1292 | UINT64 TscAux;
|
---|
| 1293 | UINT64 VirtualOffset;
|
---|
| 1294 | UINT64 Tsc;
|
---|
| 1295 | UINT64 ReferenceTime;
|
---|
| 1296 | WHV_X64_RDTSC_INFO RdtscInfo;
|
---|
| 1297 | } WHV_X64_RDTSC_CONTEXT;
|
---|
| 1298 |
|
---|
| 1299 | C_ASSERT(sizeof(WHV_X64_RDTSC_CONTEXT) == 40);
|
---|
| 1300 |
|
---|
| 1301 | typedef struct WHV_X64_APIC_SMI_CONTEXT {
|
---|
| 1302 | UINT64 ApicIcr;
|
---|
| 1303 | } WHV_X64_APIC_SMI_CONTEXT;
|
---|
| 1304 |
|
---|
| 1305 | C_ASSERT(sizeof(WHV_X64_APIC_SMI_CONTEXT) == 8);
|
---|
| 1306 |
|
---|
| 1307 | #define WHV_HYPERCALL_CONTEXT_MAX_XMM_REGISTERS 6
|
---|
| 1308 |
|
---|
| 1309 | typedef struct _WHV_HYPERCALL_CONTEXT {
|
---|
| 1310 | UINT64 Rax;
|
---|
| 1311 | UINT64 Rbx;
|
---|
| 1312 | UINT64 Rcx;
|
---|
| 1313 | UINT64 Rdx;
|
---|
| 1314 | UINT64 R8;
|
---|
| 1315 | UINT64 Rsi;
|
---|
| 1316 | UINT64 Rdi;
|
---|
| 1317 | UINT64 Reserved0;
|
---|
| 1318 | WHV_UINT128 XmmRegisters[WHV_HYPERCALL_CONTEXT_MAX_XMM_REGISTERS];
|
---|
| 1319 | UINT64 Reserved1[2];
|
---|
| 1320 | } WHV_HYPERCALL_CONTEXT, *PWHV_HYPERCALL_CONTEXT;
|
---|
| 1321 |
|
---|
| 1322 | C_ASSERT(sizeof(WHV_HYPERCALL_CONTEXT) == 176);
|
---|
| 1323 |
|
---|
| 1324 | typedef struct WHV_X64_APIC_INIT_SIPI_CONTEXT {
|
---|
| 1325 | UINT64 ApicIcr;
|
---|
| 1326 | } WHV_X64_APIC_INIT_SIPI_CONTEXT;
|
---|
| 1327 |
|
---|
| 1328 | C_ASSERT(sizeof(WHV_X64_APIC_INIT_SIPI_CONTEXT) == 8);
|
---|
| 1329 |
|
---|
| 1330 | typedef enum WHV_X64_APIC_WRITE_TYPE {
|
---|
| 1331 | WHvX64ApicWriteTypeLdr = 0xD0,
|
---|
| 1332 | WHvX64ApicWriteTypeDfr = 0xE0,
|
---|
| 1333 | WHvX64ApicWriteTypeSvr = 0xF0,
|
---|
| 1334 | WHvX64ApicWriteTypeLint0 = 0x350,
|
---|
| 1335 | WHvX64ApicWriteTypeLint1 = 0x360
|
---|
| 1336 | } WHV_X64_APIC_WRITE_TYPE;
|
---|
| 1337 |
|
---|
| 1338 | typedef struct WHV_X64_APIC_WRITE_CONTEXT {
|
---|
| 1339 | WHV_X64_APIC_WRITE_TYPE Type;
|
---|
| 1340 | UINT32 Reserved;
|
---|
| 1341 | UINT64 WriteValue;
|
---|
| 1342 | } WHV_X64_APIC_WRITE_CONTEXT;
|
---|
| 1343 |
|
---|
| 1344 | C_ASSERT(sizeof(WHV_X64_APIC_WRITE_CONTEXT) == 16);
|
---|
| 1345 |
|
---|
| 1346 | typedef struct WHV_RUN_VP_EXIT_CONTEXT {
|
---|
| 1347 | WHV_RUN_VP_EXIT_REASON ExitReason;
|
---|
| 1348 | UINT32 Reserved;
|
---|
| 1349 | WHV_VP_EXIT_CONTEXT VpContext;
|
---|
| 1350 | __C89_NAMELESS union {
|
---|
| 1351 | WHV_MEMORY_ACCESS_CONTEXT MemoryAccess;
|
---|
| 1352 | WHV_X64_IO_PORT_ACCESS_CONTEXT IoPortAccess;
|
---|
| 1353 | WHV_X64_MSR_ACCESS_CONTEXT MsrAccess;
|
---|
| 1354 | WHV_X64_CPUID_ACCESS_CONTEXT CpuidAccess;
|
---|
| 1355 | WHV_VP_EXCEPTION_CONTEXT VpException;
|
---|
| 1356 | WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT InterruptWindow;
|
---|
| 1357 | WHV_X64_UNSUPPORTED_FEATURE_CONTEXT UnsupportedFeature;
|
---|
| 1358 | WHV_RUN_VP_CANCELED_CONTEXT CancelReason;
|
---|
| 1359 | WHV_X64_APIC_EOI_CONTEXT ApicEoi;
|
---|
| 1360 | WHV_X64_RDTSC_CONTEXT ReadTsc;
|
---|
| 1361 | WHV_X64_APIC_SMI_CONTEXT ApicSmi;
|
---|
| 1362 | WHV_HYPERCALL_CONTEXT Hypercall;
|
---|
| 1363 | WHV_X64_APIC_INIT_SIPI_CONTEXT ApicInitSipi;
|
---|
| 1364 | WHV_X64_APIC_WRITE_CONTEXT ApicWrite;
|
---|
| 1365 | WHV_SYNIC_SINT_DELIVERABLE_CONTEXT SynicSintDeliverable;
|
---|
| 1366 | };
|
---|
| 1367 | } WHV_RUN_VP_EXIT_CONTEXT;
|
---|
| 1368 |
|
---|
| 1369 | C_ASSERT(sizeof(WHV_RUN_VP_EXIT_CONTEXT) == 224);
|
---|
| 1370 |
|
---|
| 1371 | typedef enum WHV_INTERRUPT_TYPE {
|
---|
| 1372 | WHvX64InterruptTypeFixed = 0,
|
---|
| 1373 | WHvX64InterruptTypeLowestPriority = 1,
|
---|
| 1374 | WHvX64InterruptTypeNmi = 4,
|
---|
| 1375 | WHvX64InterruptTypeInit = 5,
|
---|
| 1376 | WHvX64InterruptTypeSipi = 6,
|
---|
| 1377 | WHvX64InterruptTypeLocalInt1 = 9
|
---|
| 1378 | } WHV_INTERRUPT_TYPE;
|
---|
| 1379 |
|
---|
| 1380 | typedef enum WHV_INTERRUPT_DESTINATION_MODE {
|
---|
| 1381 | WHvX64InterruptDestinationModePhysical,
|
---|
| 1382 | WHvX64InterruptDestinationModeLogical
|
---|
| 1383 | } WHV_INTERRUPT_DESTINATION_MODE;
|
---|
| 1384 |
|
---|
| 1385 | typedef enum WHV_INTERRUPT_TRIGGER_MODE {
|
---|
| 1386 | WHvX64InterruptTriggerModeEdge,
|
---|
| 1387 | WHvX64InterruptTriggerModeLevel
|
---|
| 1388 | } WHV_INTERRUPT_TRIGGER_MODE;
|
---|
| 1389 |
|
---|
| 1390 | typedef struct WHV_INTERRUPT_CONTROL {
|
---|
| 1391 | UINT64 Type : 8;
|
---|
| 1392 | UINT64 DestinationMode : 4;
|
---|
| 1393 | UINT64 TriggerMode : 4;
|
---|
| 1394 | UINT64 Reserved : 48;
|
---|
| 1395 | UINT32 Destination;
|
---|
| 1396 | UINT32 Vector;
|
---|
| 1397 | } WHV_INTERRUPT_CONTROL;
|
---|
| 1398 |
|
---|
| 1399 | C_ASSERT(sizeof(WHV_INTERRUPT_CONTROL) == 16);
|
---|
| 1400 |
|
---|
| 1401 | typedef struct WHV_DOORBELL_MATCH_DATA {
|
---|
| 1402 | WHV_GUEST_PHYSICAL_ADDRESS GuestAddress;
|
---|
| 1403 | UINT64 Value;
|
---|
| 1404 | UINT32 Length;
|
---|
| 1405 | UINT32 MatchOnValue : 1;
|
---|
| 1406 | UINT32 MatchOnLength : 1;
|
---|
| 1407 | UINT32 Reserved : 30;
|
---|
| 1408 | } WHV_DOORBELL_MATCH_DATA;
|
---|
| 1409 |
|
---|
| 1410 | C_ASSERT(sizeof(WHV_DOORBELL_MATCH_DATA) == 24);
|
---|
| 1411 |
|
---|
| 1412 | typedef enum WHV_PARTITION_COUNTER_SET {
|
---|
| 1413 | WHvPartitionCounterSetMemory
|
---|
| 1414 | } WHV_PARTITION_COUNTER_SET;
|
---|
| 1415 |
|
---|
| 1416 | typedef struct WHV_PARTITION_MEMORY_COUNTERS {
|
---|
| 1417 | UINT64 Mapped4KPageCount;
|
---|
| 1418 | UINT64 Mapped2MPageCount;
|
---|
| 1419 | UINT64 Mapped1GPageCount;
|
---|
| 1420 | } WHV_PARTITION_MEMORY_COUNTERS;
|
---|
| 1421 |
|
---|
| 1422 | C_ASSERT(sizeof(WHV_PARTITION_MEMORY_COUNTERS) == 24);
|
---|
| 1423 |
|
---|
| 1424 | typedef enum WHV_PROCESSOR_COUNTER_SET {
|
---|
| 1425 | WHvProcessorCounterSetRuntime,
|
---|
| 1426 | WHvProcessorCounterSetIntercepts,
|
---|
| 1427 | WHvProcessorCounterSetEvents,
|
---|
| 1428 | WHvProcessorCounterSetApic,
|
---|
| 1429 | WHvProcessorCounterSetSyntheticFeatures
|
---|
| 1430 | } WHV_PROCESSOR_COUNTER_SET;
|
---|
| 1431 |
|
---|
| 1432 | typedef struct WHV_PROCESSOR_RUNTIME_COUNTERS {
|
---|
| 1433 | UINT64 TotalRuntime100ns;
|
---|
| 1434 | UINT64 HypervisorRuntime100ns;
|
---|
| 1435 | } WHV_PROCESSOR_RUNTIME_COUNTERS;
|
---|
| 1436 |
|
---|
| 1437 | C_ASSERT(sizeof(WHV_PROCESSOR_RUNTIME_COUNTERS) == 16);
|
---|
| 1438 |
|
---|
| 1439 | typedef struct WHV_PROCESSOR_INTERCEPT_COUNTER {
|
---|
| 1440 | UINT64 Count;
|
---|
| 1441 | UINT64 Time100ns;
|
---|
| 1442 | } WHV_PROCESSOR_INTERCEPT_COUNTER;
|
---|
| 1443 |
|
---|
| 1444 | C_ASSERT(sizeof(WHV_PROCESSOR_INTERCEPT_COUNTER) == 16);
|
---|
| 1445 |
|
---|
| 1446 | typedef struct WHV_PROCESSOR_INTERCEPT_COUNTERS {
|
---|
| 1447 | WHV_PROCESSOR_INTERCEPT_COUNTER PageInvalidations;
|
---|
| 1448 | WHV_PROCESSOR_INTERCEPT_COUNTER ControlRegisterAccesses;
|
---|
| 1449 | WHV_PROCESSOR_INTERCEPT_COUNTER IoInstructions;
|
---|
| 1450 | WHV_PROCESSOR_INTERCEPT_COUNTER HaltInstructions;
|
---|
| 1451 | WHV_PROCESSOR_INTERCEPT_COUNTER CpuidInstructions;
|
---|
| 1452 | WHV_PROCESSOR_INTERCEPT_COUNTER MsrAccesses;
|
---|
| 1453 | WHV_PROCESSOR_INTERCEPT_COUNTER OtherIntercepts;
|
---|
| 1454 | WHV_PROCESSOR_INTERCEPT_COUNTER PendingInterrupts;
|
---|
| 1455 | WHV_PROCESSOR_INTERCEPT_COUNTER EmulatedInstructions;
|
---|
| 1456 | WHV_PROCESSOR_INTERCEPT_COUNTER DebugRegisterAccesses;
|
---|
| 1457 | WHV_PROCESSOR_INTERCEPT_COUNTER PageFaultIntercepts;
|
---|
| 1458 | WHV_PROCESSOR_INTERCEPT_COUNTER NestedPageFaultIntercepts;
|
---|
| 1459 | WHV_PROCESSOR_INTERCEPT_COUNTER Hypercalls;
|
---|
| 1460 | WHV_PROCESSOR_INTERCEPT_COUNTER RdpmcInstructions;
|
---|
| 1461 | } WHV_PROCESSOR_ACTIVITY_COUNTERS;
|
---|
| 1462 |
|
---|
| 1463 | C_ASSERT(sizeof(WHV_PROCESSOR_ACTIVITY_COUNTERS) == 224);
|
---|
| 1464 |
|
---|
| 1465 | typedef struct WHV_PROCESSOR_EVENT_COUNTERS {
|
---|
| 1466 | UINT64 PageFaultCount;
|
---|
| 1467 | UINT64 ExceptionCount;
|
---|
| 1468 | UINT64 InterruptCount;
|
---|
| 1469 | } WHV_PROCESSOR_GUEST_EVENT_COUNTERS;
|
---|
| 1470 |
|
---|
| 1471 | C_ASSERT(sizeof(WHV_PROCESSOR_GUEST_EVENT_COUNTERS) == 24);
|
---|
| 1472 |
|
---|
| 1473 | typedef struct WHV_PROCESSOR_APIC_COUNTERS {
|
---|
| 1474 | UINT64 MmioAccessCount;
|
---|
| 1475 | UINT64 EoiAccessCount;
|
---|
| 1476 | UINT64 TprAccessCount;
|
---|
| 1477 | UINT64 SentIpiCount;
|
---|
| 1478 | UINT64 SelfIpiCount;
|
---|
| 1479 | } WHV_PROCESSOR_APIC_COUNTERS;
|
---|
| 1480 |
|
---|
| 1481 | C_ASSERT(sizeof(WHV_PROCESSOR_APIC_COUNTERS) == 40);
|
---|
| 1482 |
|
---|
| 1483 | typedef struct WHV_PROCESSOR_SYNTHETIC_FEATURES_COUNTERS {
|
---|
| 1484 | UINT64 SyntheticInterruptsCount;
|
---|
| 1485 | UINT64 LongSpinWaitHypercallsCount;
|
---|
| 1486 | UINT64 OtherHypercallsCount;
|
---|
| 1487 | UINT64 SyntheticInterruptHypercallsCount;
|
---|
| 1488 | UINT64 VirtualInterruptHypercallsCount;
|
---|
| 1489 | UINT64 VirtualMmuHypercallsCount;
|
---|
| 1490 | } WHV_PROCESSOR_SYNTHETIC_FEATURES_COUNTERS;
|
---|
| 1491 |
|
---|
| 1492 | C_ASSERT(sizeof(WHV_PROCESSOR_SYNTHETIC_FEATURES_COUNTERS) == 48);
|
---|
| 1493 |
|
---|
| 1494 | typedef enum WHV_ADVISE_GPA_RANGE_CODE {
|
---|
| 1495 | WHvAdviseGpaRangeCodePopulate = 0x00000000,
|
---|
| 1496 | WHvAdviseGpaRangeCodePin = 0x00000001,
|
---|
| 1497 | WHvAdviseGpaRangeCodeUnpin = 0x00000002
|
---|
| 1498 | } WHV_ADVISE_GPA_RANGE_CODE;
|
---|
| 1499 |
|
---|
| 1500 | typedef enum WHV_VIRTUAL_PROCESSOR_STATE_TYPE {
|
---|
| 1501 | WHvVirtualProcessorStateTypeSynicMessagePage = 0x00000000,
|
---|
| 1502 | WHvVirtualProcessorStateTypeSynicEventFlagPage = 0x00000001,
|
---|
| 1503 | WHvVirtualProcessorStateTypeSynicTimerState = 0x00000002,
|
---|
| 1504 | WHvVirtualProcessorStateTypeInterruptControllerState2 = 0x00001000,
|
---|
| 1505 | WHvVirtualProcessorStateTypeXsaveState = 0x00001001
|
---|
| 1506 | } WHV_VIRTUAL_PROCESSOR_STATE_TYPE;
|
---|
| 1507 |
|
---|
| 1508 | typedef struct WHV_SYNIC_EVENT_PARAMETERS {
|
---|
| 1509 | UINT32 VpIndex;
|
---|
| 1510 | UINT8 TargetSint;
|
---|
| 1511 | UINT8 Reserved;
|
---|
| 1512 | UINT16 FlagNumber;
|
---|
| 1513 | } WHV_SYNIC_EVENT_PARAMETERS;
|
---|
| 1514 |
|
---|
| 1515 | C_ASSERT(sizeof(WHV_SYNIC_EVENT_PARAMETERS) == 8);
|
---|
| 1516 |
|
---|
| 1517 | typedef enum WHV_ALLOCATE_VPCI_RESOURCE_FLAGS {
|
---|
| 1518 | WHvAllocateVpciResourceFlagNone = 0x00000000,
|
---|
| 1519 | WHvAllocateVpciResourceFlagAllowDirectP2P = 0x00000001
|
---|
| 1520 | } WHV_ALLOCATE_VPCI_RESOURCE_FLAGS;
|
---|
| 1521 |
|
---|
| 1522 | DEFINE_ENUM_FLAG_OPERATORS(WHV_ALLOCATE_VPCI_RESOURCE_FLAGS);
|
---|
| 1523 |
|
---|
| 1524 | #define WHV_MAX_DEVICE_ID_SIZE_IN_CHARS 200
|
---|
| 1525 |
|
---|
| 1526 | typedef struct WHV_SRIOV_RESOURCE_DESCRIPTOR {
|
---|
| 1527 | WCHAR PnpInstanceId[WHV_MAX_DEVICE_ID_SIZE_IN_CHARS];
|
---|
| 1528 | LUID VirtualFunctionId;
|
---|
| 1529 | UINT16 VirtualFunctionIndex;
|
---|
| 1530 | UINT16 Reserved;
|
---|
| 1531 | } WHV_SRIOV_RESOURCE_DESCRIPTOR;
|
---|
| 1532 |
|
---|
| 1533 | C_ASSERT(sizeof(WHV_SRIOV_RESOURCE_DESCRIPTOR) == 412);
|
---|
| 1534 |
|
---|
| 1535 | typedef enum WHV_VPCI_DEVICE_NOTIFICATION_TYPE {
|
---|
| 1536 | WHvVpciDeviceNotificationUndefined = 0,
|
---|
| 1537 | WHvVpciDeviceNotificationMmioRemapping = 1,
|
---|
| 1538 | WHvVpciDeviceNotificationSurpriseRemoval = 2
|
---|
| 1539 | } WHV_VPCI_DEVICE_NOTIFICATION_TYPE;
|
---|
| 1540 |
|
---|
| 1541 | typedef struct WHV_VPCI_DEVICE_NOTIFICATION {
|
---|
| 1542 | WHV_VPCI_DEVICE_NOTIFICATION_TYPE NotificationType;
|
---|
| 1543 | UINT32 Reserved1;
|
---|
| 1544 | __C89_NAMELESS union {
|
---|
| 1545 | UINT64 Reserved2;
|
---|
| 1546 | };
|
---|
| 1547 | } WHV_VPCI_DEVICE_NOTIFICATION;
|
---|
| 1548 |
|
---|
| 1549 | C_ASSERT(sizeof(WHV_VPCI_DEVICE_NOTIFICATION) == 16);
|
---|
| 1550 |
|
---|
| 1551 | typedef enum WHV_CREATE_VPCI_DEVICE_FLAGS {
|
---|
| 1552 | WHvCreateVpciDeviceFlagNone = 0x00000000,
|
---|
| 1553 | WHvCreateVpciDeviceFlagPhysicallyBacked = 0x00000001,
|
---|
| 1554 | WHvCreateVpciDeviceFlagUseLogicalInterrupts = 0x00000002
|
---|
| 1555 | } WHV_CREATE_VPCI_DEVICE_FLAGS;
|
---|
| 1556 |
|
---|
| 1557 | DEFINE_ENUM_FLAG_OPERATORS(WHV_CREATE_VPCI_DEVICE_FLAGS);
|
---|
| 1558 |
|
---|
| 1559 | typedef enum WHV_VPCI_DEVICE_PROPERTY_CODE {
|
---|
| 1560 | WHvVpciDevicePropertyCodeUndefined = 0,
|
---|
| 1561 | WHvVpciDevicePropertyCodeHardwareIDs = 1,
|
---|
| 1562 | WHvVpciDevicePropertyCodeProbedBARs = 2
|
---|
| 1563 | } WHV_VPCI_DEVICE_PROPERTY_CODE;
|
---|
| 1564 |
|
---|
| 1565 | typedef struct WHV_VPCI_HARDWARE_IDS {
|
---|
| 1566 | UINT16 VendorID;
|
---|
| 1567 | UINT16 DeviceID;
|
---|
| 1568 | UINT8 RevisionID;
|
---|
| 1569 | UINT8 ProgIf;
|
---|
| 1570 | UINT8 SubClass;
|
---|
| 1571 | UINT8 BaseClass;
|
---|
| 1572 | UINT16 SubVendorID;
|
---|
| 1573 | UINT16 SubSystemID;
|
---|
| 1574 | } WHV_VPCI_HARDWARE_IDS;
|
---|
| 1575 |
|
---|
| 1576 | C_ASSERT(sizeof(WHV_VPCI_HARDWARE_IDS) == 12);
|
---|
| 1577 |
|
---|
| 1578 | #define WHV_VPCI_TYPE0_BAR_COUNT 6
|
---|
| 1579 |
|
---|
| 1580 | typedef struct WHV_VPCI_PROBED_BARS {
|
---|
| 1581 | UINT32 Value[WHV_VPCI_TYPE0_BAR_COUNT];
|
---|
| 1582 | } WHV_VPCI_PROBED_BARS;
|
---|
| 1583 |
|
---|
| 1584 | C_ASSERT(sizeof(WHV_VPCI_PROBED_BARS) == 24);
|
---|
| 1585 |
|
---|
| 1586 | typedef enum WHV_VPCI_MMIO_RANGE_FLAGS {
|
---|
| 1587 | WHvVpciMmioRangeFlagReadAccess = 0x00000001,
|
---|
| 1588 | WHvVpciMmioRangeFlagWriteAccess = 0x00000002
|
---|
| 1589 | } WHV_VPCI_MMIO_RANGE_FLAGS;
|
---|
| 1590 |
|
---|
| 1591 | DEFINE_ENUM_FLAG_OPERATORS(WHV_VPCI_MMIO_RANGE_FLAGS);
|
---|
| 1592 |
|
---|
| 1593 | typedef enum WHV_VPCI_DEVICE_REGISTER_SPACE {
|
---|
| 1594 | WHvVpciConfigSpace = -1,
|
---|
| 1595 | WHvVpciBar0 = 0,
|
---|
| 1596 | WHvVpciBar1 = 1,
|
---|
| 1597 | WHvVpciBar2 = 2,
|
---|
| 1598 | WHvVpciBar3 = 3,
|
---|
| 1599 | WHvVpciBar4 = 4,
|
---|
| 1600 | WHvVpciBar5 = 5
|
---|
| 1601 | } WHV_VPCI_DEVICE_REGISTER_SPACE;
|
---|
| 1602 |
|
---|
| 1603 | typedef struct WHV_VPCI_MMIO_MAPPING {
|
---|
| 1604 | WHV_VPCI_DEVICE_REGISTER_SPACE Location;
|
---|
| 1605 | WHV_VPCI_MMIO_RANGE_FLAGS Flags;
|
---|
| 1606 | UINT64 SizeInBytes;
|
---|
| 1607 | UINT64 OffsetInBytes;
|
---|
| 1608 | PVOID VirtualAddress;
|
---|
| 1609 | } WHV_VPCI_MMIO_MAPPING;
|
---|
| 1610 |
|
---|
| 1611 | C_ASSERT(sizeof(WHV_VPCI_MMIO_MAPPING) == 32);
|
---|
| 1612 |
|
---|
| 1613 | typedef struct WHV_VPCI_DEVICE_REGISTER {
|
---|
| 1614 | WHV_VPCI_DEVICE_REGISTER_SPACE Location;
|
---|
| 1615 | UINT32 SizeInBytes;
|
---|
| 1616 | UINT64 OffsetInBytes;
|
---|
| 1617 | } WHV_VPCI_DEVICE_REGISTER;
|
---|
| 1618 |
|
---|
| 1619 | C_ASSERT(sizeof(WHV_VPCI_DEVICE_REGISTER) == 16);
|
---|
| 1620 |
|
---|
| 1621 | typedef enum WHV_VPCI_INTERRUPT_TARGET_FLAGS {
|
---|
| 1622 | WHvVpciInterruptTargetFlagNone = 0x00000000,
|
---|
| 1623 | WHvVpciInterruptTargetFlagMulticast = 0x00000001
|
---|
| 1624 | } WHV_VPCI_INTERRUPT_TARGET_FLAGS;
|
---|
| 1625 |
|
---|
| 1626 | DEFINE_ENUM_FLAG_OPERATORS(WHV_VPCI_INTERRUPT_TARGET_FLAGS);
|
---|
| 1627 |
|
---|
| 1628 | typedef struct WHV_VPCI_INTERRUPT_TARGET {
|
---|
| 1629 | UINT32 Vector;
|
---|
| 1630 | WHV_VPCI_INTERRUPT_TARGET_FLAGS Flags;
|
---|
| 1631 | UINT32 ProcessorCount;
|
---|
| 1632 | UINT32 Processors[ANYSIZE_ARRAY];
|
---|
| 1633 | } WHV_VPCI_INTERRUPT_TARGET;
|
---|
| 1634 |
|
---|
| 1635 | C_ASSERT(sizeof(WHV_VPCI_INTERRUPT_TARGET) == 16);
|
---|
| 1636 |
|
---|
| 1637 | typedef enum WHV_TRIGGER_TYPE {
|
---|
| 1638 | WHvTriggerTypeInterrupt = 0,
|
---|
| 1639 | WHvTriggerTypeSynicEvent = 1,
|
---|
| 1640 | WHvTriggerTypeDeviceInterrupt = 2
|
---|
| 1641 | } WHV_TRIGGER_TYPE;
|
---|
| 1642 |
|
---|
| 1643 | typedef struct WHV_TRIGGER_PARAMETERS {
|
---|
| 1644 | WHV_TRIGGER_TYPE TriggerType;
|
---|
| 1645 | UINT32 Reserved;
|
---|
| 1646 | __C89_NAMELESS union {
|
---|
| 1647 | WHV_INTERRUPT_CONTROL Interrupt;
|
---|
| 1648 | WHV_SYNIC_EVENT_PARAMETERS SynicEvent;
|
---|
| 1649 | __C89_NAMELESS struct {
|
---|
| 1650 | UINT64 LogicalDeviceId;
|
---|
| 1651 | UINT64 MsiAddress;
|
---|
| 1652 | UINT32 MsiData;
|
---|
| 1653 | UINT32 Reserved;
|
---|
| 1654 | } DeviceInterrupt;
|
---|
| 1655 | };
|
---|
| 1656 | } WHV_TRIGGER_PARAMETERS;
|
---|
| 1657 |
|
---|
| 1658 | C_ASSERT(sizeof(WHV_TRIGGER_PARAMETERS) == 32);
|
---|
| 1659 |
|
---|
| 1660 | typedef PVOID WHV_TRIGGER_HANDLE;
|
---|
| 1661 |
|
---|
| 1662 | typedef enum WHV_VIRTUAL_PROCESSOR_PROPERTY_CODE {
|
---|
| 1663 | WHvVirtualProcessorPropertyCodeNumaNode = 0x00000000
|
---|
| 1664 | } WHV_VIRTUAL_PROCESSOR_PROPERTY_CODE;
|
---|
| 1665 |
|
---|
| 1666 | typedef struct WHV_VIRTUAL_PROCESSOR_PROPERTY {
|
---|
| 1667 | WHV_VIRTUAL_PROCESSOR_PROPERTY_CODE PropertyCode;
|
---|
| 1668 | UINT32 Reserved;
|
---|
| 1669 | __C89_NAMELESS union {
|
---|
| 1670 | USHORT NumaNode;
|
---|
| 1671 | UINT64 Padding;
|
---|
| 1672 | };
|
---|
| 1673 | } WHV_VIRTUAL_PROCESSOR_PROPERTY;
|
---|
| 1674 |
|
---|
| 1675 | C_ASSERT(sizeof(WHV_VIRTUAL_PROCESSOR_PROPERTY) == 16);
|
---|
| 1676 |
|
---|
| 1677 | typedef enum WHV_NOTIFICATION_PORT_TYPE {
|
---|
| 1678 | WHvNotificationPortTypeEvent = 2,
|
---|
| 1679 | WHvNotificationPortTypeDoorbell = 4
|
---|
| 1680 | } WHV_NOTIFICATION_PORT_TYPE;
|
---|
| 1681 |
|
---|
| 1682 | typedef struct WHV_NOTIFICATION_PORT_PARAMETERS {
|
---|
| 1683 | WHV_NOTIFICATION_PORT_TYPE NotificationPortType;
|
---|
| 1684 | UINT32 Reserved;
|
---|
| 1685 | __C89_NAMELESS union {
|
---|
| 1686 | WHV_DOORBELL_MATCH_DATA Doorbell;
|
---|
| 1687 | __C89_NAMELESS struct {
|
---|
| 1688 | UINT32 ConnectionId;
|
---|
| 1689 | } Event;
|
---|
| 1690 | };
|
---|
| 1691 | } WHV_NOTIFICATION_PORT_PARAMETERS;
|
---|
| 1692 |
|
---|
| 1693 | C_ASSERT(sizeof(WHV_NOTIFICATION_PORT_PARAMETERS) == 32);
|
---|
| 1694 |
|
---|
| 1695 | typedef enum WHV_NOTIFICATION_PORT_PROPERTY_CODE {
|
---|
| 1696 | WHvNotificationPortPropertyPreferredTargetVp = 1,
|
---|
| 1697 | WHvNotificationPortPropertyPreferredTargetDuration = 5
|
---|
| 1698 | } WHV_NOTIFICATION_PORT_PROPERTY_CODE;
|
---|
| 1699 |
|
---|
| 1700 | typedef UINT64 WHV_NOTIFICATION_PORT_PROPERTY;
|
---|
| 1701 |
|
---|
| 1702 | #define WHV_ANY_VP (0xFFFFFFFF)
|
---|
| 1703 |
|
---|
| 1704 | #define WHV_NOTIFICATION_PORT_PREFERRED_DURATION_MAX (0xFFFFFFFFFFFFFFFFULL)
|
---|
| 1705 |
|
---|
| 1706 | typedef PVOID WHV_NOTIFICATION_PORT_HANDLE;
|
---|
| 1707 |
|
---|
| 1708 | #define WHV_SYNIC_MESSAGE_SIZE 256
|
---|
| 1709 |
|
---|
| 1710 | #endif /* _WINHVAPIDEFS_H_ */
|
---|