zigwin32/win32/system/hypervisor.zig

3533 lines
132 KiB
Zig

//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (25)
//--------------------------------------------------------------------------------
pub const HVSOCKET_CONNECT_TIMEOUT = @as(u32, 1);
pub const HVSOCKET_CONNECT_TIMEOUT_MAX = @as(u32, 300000);
pub const HVSOCKET_CONTAINER_PASSTHRU = @as(u32, 2);
pub const HVSOCKET_CONNECTED_SUSPEND = @as(u32, 4);
pub const HV_PROTOCOL_RAW = @as(u32, 1);
pub const HVSOCKET_ADDRESS_FLAG_PASSTHRU = @as(u32, 1);
pub const WHV_PROCESSOR_FEATURES_BANKS_COUNT = @as(u32, 2);
pub const WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS_COUNT = @as(u32, 1);
pub const WHV_READ_WRITE_GPA_RANGE_MAX_SIZE = @as(u32, 16);
pub const WHV_HYPERCALL_CONTEXT_MAX_XMM_REGISTERS = @as(u32, 6);
pub const WHV_MAX_DEVICE_ID_SIZE_IN_CHARS = @as(u32, 200);
pub const WHV_VPCI_TYPE0_BAR_COUNT = @as(u32, 6);
pub const WHV_ANY_VP = @as(u32, 4294967295);
pub const WHV_SYNIC_MESSAGE_SIZE = @as(u32, 256);
pub const VM_GENCOUNTER_SYMBOLIC_LINK_NAME = "\\VmGenerationCounter";
pub const IOCTL_VMGENCOUNTER_READ = @as(u32, 3325956);
pub const HDV_PCI_BAR_COUNT = @as(u32, 6);
pub const HV_GUID_ZERO = Guid.initString("00000000-0000-0000-0000-000000000000");
pub const HV_GUID_BROADCAST = Guid.initString("ffffffff-ffff-ffff-ffff-ffffffffffff");
pub const HV_GUID_CHILDREN = Guid.initString("90db8b89-0d35-4f79-8ce9-49ea0ac8b7cd");
pub const HV_GUID_LOOPBACK = Guid.initString("e0e16197-dd56-4a10-9195-5ee7a155a838");
pub const HV_GUID_PARENT = Guid.initString("a42e7cda-d03f-480c-9cc2-a4de20abb878");
pub const HV_GUID_SILOHOST = Guid.initString("36bd0c5c-7276-4223-88ba-7d03b654c568");
pub const HV_GUID_VSOCK_TEMPLATE = Guid.initString("00000000-facb-11e6-bd58-64006a7986d3");
pub const GUID_DEVINTERFACE_VM_GENCOUNTER = Guid.initString("3ff2c92b-6598-4e60-8e1c-0ccf4927e319");
//--------------------------------------------------------------------------------
// Section: Types (162)
//--------------------------------------------------------------------------------
// TODO: this type has a FreeFunc 'WHvDeletePartition', what can Zig do with this information?
// TODO: this type has an InvalidHandleValue of '0', what can Zig do with this information?
pub const WHV_PARTITION_HANDLE = isize;
pub const WHV_CAPABILITY_CODE = enum(i32) {
HypervisorPresent = 0,
Features = 1,
ExtendedVmExits = 2,
ExceptionExitBitmap = 3,
X64MsrExitBitmap = 4,
GpaRangePopulateFlags = 5,
SchedulerFeatures = 6,
ProcessorVendor = 4096,
ProcessorFeatures = 4097,
ProcessorClFlushSize = 4098,
ProcessorXsaveFeatures = 4099,
ProcessorClockFrequency = 4100,
InterruptClockFrequency = 4101,
ProcessorFeaturesBanks = 4102,
ProcessorFrequencyCap = 4103,
SyntheticProcessorFeaturesBanks = 4104,
ProcessorPerfmonFeatures = 4105,
};
pub const WHvCapabilityCodeHypervisorPresent = WHV_CAPABILITY_CODE.HypervisorPresent;
pub const WHvCapabilityCodeFeatures = WHV_CAPABILITY_CODE.Features;
pub const WHvCapabilityCodeExtendedVmExits = WHV_CAPABILITY_CODE.ExtendedVmExits;
pub const WHvCapabilityCodeExceptionExitBitmap = WHV_CAPABILITY_CODE.ExceptionExitBitmap;
pub const WHvCapabilityCodeX64MsrExitBitmap = WHV_CAPABILITY_CODE.X64MsrExitBitmap;
pub const WHvCapabilityCodeGpaRangePopulateFlags = WHV_CAPABILITY_CODE.GpaRangePopulateFlags;
pub const WHvCapabilityCodeSchedulerFeatures = WHV_CAPABILITY_CODE.SchedulerFeatures;
pub const WHvCapabilityCodeProcessorVendor = WHV_CAPABILITY_CODE.ProcessorVendor;
pub const WHvCapabilityCodeProcessorFeatures = WHV_CAPABILITY_CODE.ProcessorFeatures;
pub const WHvCapabilityCodeProcessorClFlushSize = WHV_CAPABILITY_CODE.ProcessorClFlushSize;
pub const WHvCapabilityCodeProcessorXsaveFeatures = WHV_CAPABILITY_CODE.ProcessorXsaveFeatures;
pub const WHvCapabilityCodeProcessorClockFrequency = WHV_CAPABILITY_CODE.ProcessorClockFrequency;
pub const WHvCapabilityCodeInterruptClockFrequency = WHV_CAPABILITY_CODE.InterruptClockFrequency;
pub const WHvCapabilityCodeProcessorFeaturesBanks = WHV_CAPABILITY_CODE.ProcessorFeaturesBanks;
pub const WHvCapabilityCodeProcessorFrequencyCap = WHV_CAPABILITY_CODE.ProcessorFrequencyCap;
pub const WHvCapabilityCodeSyntheticProcessorFeaturesBanks = WHV_CAPABILITY_CODE.SyntheticProcessorFeaturesBanks;
pub const WHvCapabilityCodeProcessorPerfmonFeatures = WHV_CAPABILITY_CODE.ProcessorPerfmonFeatures;
pub const WHV_CAPABILITY_FEATURES = extern union {
Anonymous: extern struct {
_bitfield: u64,
},
AsUINT64: u64,
};
pub const WHV_EXTENDED_VM_EXITS = extern union {
Anonymous: extern struct {
_bitfield: u64,
},
AsUINT64: u64,
};
pub const WHV_PROCESSOR_VENDOR = enum(i32) {
Amd = 0,
Intel = 1,
Hygon = 2,
};
pub const WHvProcessorVendorAmd = WHV_PROCESSOR_VENDOR.Amd;
pub const WHvProcessorVendorIntel = WHV_PROCESSOR_VENDOR.Intel;
pub const WHvProcessorVendorHygon = WHV_PROCESSOR_VENDOR.Hygon;
pub const WHV_PROCESSOR_FEATURES = extern union {
Anonymous: extern struct {
_bitfield: u64,
},
AsUINT64: u64,
};
pub const WHV_PROCESSOR_FEATURES1 = extern union {
Anonymous: extern struct {
_bitfield: u64,
},
AsUINT64: u64,
};
pub const WHV_PROCESSOR_FEATURES_BANKS = extern struct {
BanksCount: u32,
Reserved0: u32,
Anonymous: extern union {
Anonymous: extern struct {
Bank0: WHV_PROCESSOR_FEATURES,
Bank1: WHV_PROCESSOR_FEATURES1,
},
AsUINT64: [2]u64,
},
};
pub const WHV_SYNTHETIC_PROCESSOR_FEATURES = extern union {
Anonymous: extern struct {
_bitfield: u64,
},
AsUINT64: u64,
};
pub const WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS = extern struct {
BanksCount: u32,
Reserved0: u32,
Anonymous: extern union {
Anonymous: extern struct {
Bank0: WHV_SYNTHETIC_PROCESSOR_FEATURES,
},
AsUINT64: [1]u64,
},
};
pub const WHV_PARTITION_PROPERTY_CODE = enum(i32) {
ExtendedVmExits = 1,
ExceptionExitBitmap = 2,
SeparateSecurityDomain = 3,
NestedVirtualization = 4,
X64MsrExitBitmap = 5,
PrimaryNumaNode = 6,
CpuReserve = 7,
CpuCap = 8,
CpuWeight = 9,
CpuGroupId = 10,
ProcessorFrequencyCap = 11,
AllowDeviceAssignment = 12,
DisableSmt = 13,
ProcessorFeatures = 4097,
ProcessorClFlushSize = 4098,
CpuidExitList = 4099,
CpuidResultList = 4100,
LocalApicEmulationMode = 4101,
ProcessorXsaveFeatures = 4102,
ProcessorClockFrequency = 4103,
InterruptClockFrequency = 4104,
ApicRemoteReadSupport = 4105,
ProcessorFeaturesBanks = 4106,
ReferenceTime = 4107,
SyntheticProcessorFeaturesBanks = 4108,
CpuidResultList2 = 4109,
ProcessorPerfmonFeatures = 4110,
MsrActionList = 4111,
UnimplementedMsrAction = 4112,
ProcessorCount = 8191,
};
pub const WHvPartitionPropertyCodeExtendedVmExits = WHV_PARTITION_PROPERTY_CODE.ExtendedVmExits;
pub const WHvPartitionPropertyCodeExceptionExitBitmap = WHV_PARTITION_PROPERTY_CODE.ExceptionExitBitmap;
pub const WHvPartitionPropertyCodeSeparateSecurityDomain = WHV_PARTITION_PROPERTY_CODE.SeparateSecurityDomain;
pub const WHvPartitionPropertyCodeNestedVirtualization = WHV_PARTITION_PROPERTY_CODE.NestedVirtualization;
pub const WHvPartitionPropertyCodeX64MsrExitBitmap = WHV_PARTITION_PROPERTY_CODE.X64MsrExitBitmap;
pub const WHvPartitionPropertyCodePrimaryNumaNode = WHV_PARTITION_PROPERTY_CODE.PrimaryNumaNode;
pub const WHvPartitionPropertyCodeCpuReserve = WHV_PARTITION_PROPERTY_CODE.CpuReserve;
pub const WHvPartitionPropertyCodeCpuCap = WHV_PARTITION_PROPERTY_CODE.CpuCap;
pub const WHvPartitionPropertyCodeCpuWeight = WHV_PARTITION_PROPERTY_CODE.CpuWeight;
pub const WHvPartitionPropertyCodeCpuGroupId = WHV_PARTITION_PROPERTY_CODE.CpuGroupId;
pub const WHvPartitionPropertyCodeProcessorFrequencyCap = WHV_PARTITION_PROPERTY_CODE.ProcessorFrequencyCap;
pub const WHvPartitionPropertyCodeAllowDeviceAssignment = WHV_PARTITION_PROPERTY_CODE.AllowDeviceAssignment;
pub const WHvPartitionPropertyCodeDisableSmt = WHV_PARTITION_PROPERTY_CODE.DisableSmt;
pub const WHvPartitionPropertyCodeProcessorFeatures = WHV_PARTITION_PROPERTY_CODE.ProcessorFeatures;
pub const WHvPartitionPropertyCodeProcessorClFlushSize = WHV_PARTITION_PROPERTY_CODE.ProcessorClFlushSize;
pub const WHvPartitionPropertyCodeCpuidExitList = WHV_PARTITION_PROPERTY_CODE.CpuidExitList;
pub const WHvPartitionPropertyCodeCpuidResultList = WHV_PARTITION_PROPERTY_CODE.CpuidResultList;
pub const WHvPartitionPropertyCodeLocalApicEmulationMode = WHV_PARTITION_PROPERTY_CODE.LocalApicEmulationMode;
pub const WHvPartitionPropertyCodeProcessorXsaveFeatures = WHV_PARTITION_PROPERTY_CODE.ProcessorXsaveFeatures;
pub const WHvPartitionPropertyCodeProcessorClockFrequency = WHV_PARTITION_PROPERTY_CODE.ProcessorClockFrequency;
pub const WHvPartitionPropertyCodeInterruptClockFrequency = WHV_PARTITION_PROPERTY_CODE.InterruptClockFrequency;
pub const WHvPartitionPropertyCodeApicRemoteReadSupport = WHV_PARTITION_PROPERTY_CODE.ApicRemoteReadSupport;
pub const WHvPartitionPropertyCodeProcessorFeaturesBanks = WHV_PARTITION_PROPERTY_CODE.ProcessorFeaturesBanks;
pub const WHvPartitionPropertyCodeReferenceTime = WHV_PARTITION_PROPERTY_CODE.ReferenceTime;
pub const WHvPartitionPropertyCodeSyntheticProcessorFeaturesBanks = WHV_PARTITION_PROPERTY_CODE.SyntheticProcessorFeaturesBanks;
pub const WHvPartitionPropertyCodeCpuidResultList2 = WHV_PARTITION_PROPERTY_CODE.CpuidResultList2;
pub const WHvPartitionPropertyCodeProcessorPerfmonFeatures = WHV_PARTITION_PROPERTY_CODE.ProcessorPerfmonFeatures;
pub const WHvPartitionPropertyCodeMsrActionList = WHV_PARTITION_PROPERTY_CODE.MsrActionList;
pub const WHvPartitionPropertyCodeUnimplementedMsrAction = WHV_PARTITION_PROPERTY_CODE.UnimplementedMsrAction;
pub const WHvPartitionPropertyCodeProcessorCount = WHV_PARTITION_PROPERTY_CODE.ProcessorCount;
pub const WHV_PROCESSOR_XSAVE_FEATURES = extern union {
Anonymous: extern struct {
_bitfield: u64,
},
AsUINT64: u64,
};
pub const WHV_PROCESSOR_PERFMON_FEATURES = extern union {
Anonymous: extern struct {
_bitfield: u64,
},
AsUINT64: u64,
};
pub const WHV_X64_MSR_EXIT_BITMAP = extern union {
AsUINT64: u64,
Anonymous: extern struct {
_bitfield: u64,
},
};
pub const WHV_MEMORY_RANGE_ENTRY = extern struct {
GuestAddress: u64,
SizeInBytes: u64,
};
pub const WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS = extern union {
AsUINT32: u32,
Anonymous: extern struct {
_bitfield: u32,
},
};
pub const WHV_MEMORY_ACCESS_TYPE = enum(i32) {
Read = 0,
Write = 1,
Execute = 2,
};
pub const WHvMemoryAccessRead = WHV_MEMORY_ACCESS_TYPE.Read;
pub const WHvMemoryAccessWrite = WHV_MEMORY_ACCESS_TYPE.Write;
pub const WHvMemoryAccessExecute = WHV_MEMORY_ACCESS_TYPE.Execute;
pub const WHV_ADVISE_GPA_RANGE_POPULATE = extern struct {
Flags: WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS,
AccessType: WHV_MEMORY_ACCESS_TYPE,
};
pub const WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP = extern struct {
_bitfield: u32,
HighestFrequencyMhz: u32,
NominalFrequencyMhz: u32,
LowestFrequencyMhz: u32,
FrequencyStepMhz: u32,
};
pub const WHV_SCHEDULER_FEATURES = extern union {
Anonymous: extern struct {
_bitfield: u64,
},
AsUINT64: u64,
};
pub const WHV_CAPABILITY = extern union {
HypervisorPresent: BOOL,
Features: WHV_CAPABILITY_FEATURES,
ExtendedVmExits: WHV_EXTENDED_VM_EXITS,
ProcessorVendor: WHV_PROCESSOR_VENDOR,
ProcessorFeatures: WHV_PROCESSOR_FEATURES,
SyntheticProcessorFeaturesBanks: WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS,
ProcessorXsaveFeatures: WHV_PROCESSOR_XSAVE_FEATURES,
ProcessorClFlushSize: u8,
ExceptionExitBitmap: u64,
X64MsrExitBitmap: WHV_X64_MSR_EXIT_BITMAP,
ProcessorClockFrequency: u64,
InterruptClockFrequency: u64,
ProcessorFeaturesBanks: WHV_PROCESSOR_FEATURES_BANKS,
GpaRangePopulateFlags: WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS,
ProcessorFrequencyCap: WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP,
ProcessorPerfmonFeatures: WHV_PROCESSOR_PERFMON_FEATURES,
SchedulerFeatures: WHV_SCHEDULER_FEATURES,
};
pub const WHV_X64_CPUID_RESULT = extern struct {
Function: u32,
Reserved: [3]u32,
Eax: u32,
Ebx: u32,
Ecx: u32,
Edx: u32,
};
pub const WHV_X64_CPUID_RESULT2_FLAGS = enum(u32) {
SubleafSpecific = 1,
VpSpecific = 2,
_,
pub fn initFlags(o: struct {
SubleafSpecific: u1 = 0,
VpSpecific: u1 = 0,
}) WHV_X64_CPUID_RESULT2_FLAGS {
return @as(WHV_X64_CPUID_RESULT2_FLAGS, @enumFromInt(
(if (o.SubleafSpecific == 1) @intFromEnum(WHV_X64_CPUID_RESULT2_FLAGS.SubleafSpecific) else 0)
| (if (o.VpSpecific == 1) @intFromEnum(WHV_X64_CPUID_RESULT2_FLAGS.VpSpecific) else 0)
));
}
};
pub const WHvX64CpuidResult2FlagSubleafSpecific = WHV_X64_CPUID_RESULT2_FLAGS.SubleafSpecific;
pub const WHvX64CpuidResult2FlagVpSpecific = WHV_X64_CPUID_RESULT2_FLAGS.VpSpecific;
pub const WHV_CPUID_OUTPUT = extern struct {
Eax: u32,
Ebx: u32,
Ecx: u32,
Edx: u32,
};
pub const WHV_X64_CPUID_RESULT2 = extern struct {
Function: u32,
Index: u32,
VpIndex: u32,
Flags: WHV_X64_CPUID_RESULT2_FLAGS,
Output: WHV_CPUID_OUTPUT,
Mask: WHV_CPUID_OUTPUT,
};
pub const WHV_MSR_ACTION_ENTRY = extern struct {
Index: u32,
ReadAction: u8,
WriteAction: u8,
Reserved: u16,
};
pub const WHV_MSR_ACTION = enum(i32) {
ArchitectureDefault = 0,
IgnoreWriteReadZero = 1,
Exit = 2,
};
pub const WHvMsrActionArchitectureDefault = WHV_MSR_ACTION.ArchitectureDefault;
pub const WHvMsrActionIgnoreWriteReadZero = WHV_MSR_ACTION.IgnoreWriteReadZero;
pub const WHvMsrActionExit = WHV_MSR_ACTION.Exit;
pub const WHV_EXCEPTION_TYPE = enum(i32) {
DivideErrorFault = 0,
DebugTrapOrFault = 1,
BreakpointTrap = 3,
OverflowTrap = 4,
BoundRangeFault = 5,
InvalidOpcodeFault = 6,
DeviceNotAvailableFault = 7,
DoubleFaultAbort = 8,
InvalidTaskStateSegmentFault = 10,
SegmentNotPresentFault = 11,
StackFault = 12,
GeneralProtectionFault = 13,
PageFault = 14,
FloatingPointErrorFault = 16,
AlignmentCheckFault = 17,
MachineCheckAbort = 18,
SimdFloatingPointFault = 19,
};
pub const WHvX64ExceptionTypeDivideErrorFault = WHV_EXCEPTION_TYPE.DivideErrorFault;
pub const WHvX64ExceptionTypeDebugTrapOrFault = WHV_EXCEPTION_TYPE.DebugTrapOrFault;
pub const WHvX64ExceptionTypeBreakpointTrap = WHV_EXCEPTION_TYPE.BreakpointTrap;
pub const WHvX64ExceptionTypeOverflowTrap = WHV_EXCEPTION_TYPE.OverflowTrap;
pub const WHvX64ExceptionTypeBoundRangeFault = WHV_EXCEPTION_TYPE.BoundRangeFault;
pub const WHvX64ExceptionTypeInvalidOpcodeFault = WHV_EXCEPTION_TYPE.InvalidOpcodeFault;
pub const WHvX64ExceptionTypeDeviceNotAvailableFault = WHV_EXCEPTION_TYPE.DeviceNotAvailableFault;
pub const WHvX64ExceptionTypeDoubleFaultAbort = WHV_EXCEPTION_TYPE.DoubleFaultAbort;
pub const WHvX64ExceptionTypeInvalidTaskStateSegmentFault = WHV_EXCEPTION_TYPE.InvalidTaskStateSegmentFault;
pub const WHvX64ExceptionTypeSegmentNotPresentFault = WHV_EXCEPTION_TYPE.SegmentNotPresentFault;
pub const WHvX64ExceptionTypeStackFault = WHV_EXCEPTION_TYPE.StackFault;
pub const WHvX64ExceptionTypeGeneralProtectionFault = WHV_EXCEPTION_TYPE.GeneralProtectionFault;
pub const WHvX64ExceptionTypePageFault = WHV_EXCEPTION_TYPE.PageFault;
pub const WHvX64ExceptionTypeFloatingPointErrorFault = WHV_EXCEPTION_TYPE.FloatingPointErrorFault;
pub const WHvX64ExceptionTypeAlignmentCheckFault = WHV_EXCEPTION_TYPE.AlignmentCheckFault;
pub const WHvX64ExceptionTypeMachineCheckAbort = WHV_EXCEPTION_TYPE.MachineCheckAbort;
pub const WHvX64ExceptionTypeSimdFloatingPointFault = WHV_EXCEPTION_TYPE.SimdFloatingPointFault;
pub const WHV_X64_LOCAL_APIC_EMULATION_MODE = enum(i32) {
None = 0,
XApic = 1,
X2Apic = 2,
};
pub const WHvX64LocalApicEmulationModeNone = WHV_X64_LOCAL_APIC_EMULATION_MODE.None;
pub const WHvX64LocalApicEmulationModeXApic = WHV_X64_LOCAL_APIC_EMULATION_MODE.XApic;
pub const WHvX64LocalApicEmulationModeX2Apic = WHV_X64_LOCAL_APIC_EMULATION_MODE.X2Apic;
pub const WHV_PARTITION_PROPERTY = extern union {
ExtendedVmExits: WHV_EXTENDED_VM_EXITS,
ProcessorFeatures: WHV_PROCESSOR_FEATURES,
SyntheticProcessorFeaturesBanks: WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS,
ProcessorXsaveFeatures: WHV_PROCESSOR_XSAVE_FEATURES,
ProcessorClFlushSize: u8,
ProcessorCount: u32,
CpuidExitList: [1]u32,
CpuidResultList: [1]WHV_X64_CPUID_RESULT,
CpuidResultList2: [1]WHV_X64_CPUID_RESULT2,
MsrActionList: [1]WHV_MSR_ACTION_ENTRY,
UnimplementedMsrAction: WHV_MSR_ACTION,
ExceptionExitBitmap: u64,
LocalApicEmulationMode: WHV_X64_LOCAL_APIC_EMULATION_MODE,
SeparateSecurityDomain: BOOL,
NestedVirtualization: BOOL,
X64MsrExitBitmap: WHV_X64_MSR_EXIT_BITMAP,
ProcessorClockFrequency: u64,
InterruptClockFrequency: u64,
ApicRemoteRead: BOOL,
ProcessorFeaturesBanks: WHV_PROCESSOR_FEATURES_BANKS,
ReferenceTime: u64,
PrimaryNumaNode: u16,
CpuReserve: u32,
CpuCap: u32,
CpuWeight: u32,
CpuGroupId: u64,
ProcessorFrequencyCap: u32,
AllowDeviceAssignment: BOOL,
ProcessorPerfmonFeatures: WHV_PROCESSOR_PERFMON_FEATURES,
DisableSmt: BOOL,
};
pub const WHV_MAP_GPA_RANGE_FLAGS = enum(u32) {
None = 0,
Read = 1,
Write = 2,
Execute = 4,
TrackDirtyPages = 8,
_,
pub fn initFlags(o: struct {
None: u1 = 0,
Read: u1 = 0,
Write: u1 = 0,
Execute: u1 = 0,
TrackDirtyPages: u1 = 0,
}) WHV_MAP_GPA_RANGE_FLAGS {
return @as(WHV_MAP_GPA_RANGE_FLAGS, @enumFromInt(
(if (o.None == 1) @intFromEnum(WHV_MAP_GPA_RANGE_FLAGS.None) else 0)
| (if (o.Read == 1) @intFromEnum(WHV_MAP_GPA_RANGE_FLAGS.Read) else 0)
| (if (o.Write == 1) @intFromEnum(WHV_MAP_GPA_RANGE_FLAGS.Write) else 0)
| (if (o.Execute == 1) @intFromEnum(WHV_MAP_GPA_RANGE_FLAGS.Execute) else 0)
| (if (o.TrackDirtyPages == 1) @intFromEnum(WHV_MAP_GPA_RANGE_FLAGS.TrackDirtyPages) else 0)
));
}
};
pub const WHvMapGpaRangeFlagNone = WHV_MAP_GPA_RANGE_FLAGS.None;
pub const WHvMapGpaRangeFlagRead = WHV_MAP_GPA_RANGE_FLAGS.Read;
pub const WHvMapGpaRangeFlagWrite = WHV_MAP_GPA_RANGE_FLAGS.Write;
pub const WHvMapGpaRangeFlagExecute = WHV_MAP_GPA_RANGE_FLAGS.Execute;
pub const WHvMapGpaRangeFlagTrackDirtyPages = WHV_MAP_GPA_RANGE_FLAGS.TrackDirtyPages;
pub const WHV_TRANSLATE_GVA_FLAGS = enum(u32) {
None = 0,
ValidateRead = 1,
ValidateWrite = 2,
ValidateExecute = 4,
PrivilegeExempt = 8,
SetPageTableBits = 16,
EnforceSmap = 256,
OverrideSmap = 512,
_,
pub fn initFlags(o: struct {
None: u1 = 0,
ValidateRead: u1 = 0,
ValidateWrite: u1 = 0,
ValidateExecute: u1 = 0,
PrivilegeExempt: u1 = 0,
SetPageTableBits: u1 = 0,
EnforceSmap: u1 = 0,
OverrideSmap: u1 = 0,
}) WHV_TRANSLATE_GVA_FLAGS {
return @as(WHV_TRANSLATE_GVA_FLAGS, @enumFromInt(
(if (o.None == 1) @intFromEnum(WHV_TRANSLATE_GVA_FLAGS.None) else 0)
| (if (o.ValidateRead == 1) @intFromEnum(WHV_TRANSLATE_GVA_FLAGS.ValidateRead) else 0)
| (if (o.ValidateWrite == 1) @intFromEnum(WHV_TRANSLATE_GVA_FLAGS.ValidateWrite) else 0)
| (if (o.ValidateExecute == 1) @intFromEnum(WHV_TRANSLATE_GVA_FLAGS.ValidateExecute) else 0)
| (if (o.PrivilegeExempt == 1) @intFromEnum(WHV_TRANSLATE_GVA_FLAGS.PrivilegeExempt) else 0)
| (if (o.SetPageTableBits == 1) @intFromEnum(WHV_TRANSLATE_GVA_FLAGS.SetPageTableBits) else 0)
| (if (o.EnforceSmap == 1) @intFromEnum(WHV_TRANSLATE_GVA_FLAGS.EnforceSmap) else 0)
| (if (o.OverrideSmap == 1) @intFromEnum(WHV_TRANSLATE_GVA_FLAGS.OverrideSmap) else 0)
));
}
};
pub const WHvTranslateGvaFlagNone = WHV_TRANSLATE_GVA_FLAGS.None;
pub const WHvTranslateGvaFlagValidateRead = WHV_TRANSLATE_GVA_FLAGS.ValidateRead;
pub const WHvTranslateGvaFlagValidateWrite = WHV_TRANSLATE_GVA_FLAGS.ValidateWrite;
pub const WHvTranslateGvaFlagValidateExecute = WHV_TRANSLATE_GVA_FLAGS.ValidateExecute;
pub const WHvTranslateGvaFlagPrivilegeExempt = WHV_TRANSLATE_GVA_FLAGS.PrivilegeExempt;
pub const WHvTranslateGvaFlagSetPageTableBits = WHV_TRANSLATE_GVA_FLAGS.SetPageTableBits;
pub const WHvTranslateGvaFlagEnforceSmap = WHV_TRANSLATE_GVA_FLAGS.EnforceSmap;
pub const WHvTranslateGvaFlagOverrideSmap = WHV_TRANSLATE_GVA_FLAGS.OverrideSmap;
pub const WHV_TRANSLATE_GVA_RESULT_CODE = enum(i32) {
Success = 0,
PageNotPresent = 1,
PrivilegeViolation = 2,
InvalidPageTableFlags = 3,
GpaUnmapped = 4,
GpaNoReadAccess = 5,
GpaNoWriteAccess = 6,
GpaIllegalOverlayAccess = 7,
Intercept = 8,
};
pub const WHvTranslateGvaResultSuccess = WHV_TRANSLATE_GVA_RESULT_CODE.Success;
pub const WHvTranslateGvaResultPageNotPresent = WHV_TRANSLATE_GVA_RESULT_CODE.PageNotPresent;
pub const WHvTranslateGvaResultPrivilegeViolation = WHV_TRANSLATE_GVA_RESULT_CODE.PrivilegeViolation;
pub const WHvTranslateGvaResultInvalidPageTableFlags = WHV_TRANSLATE_GVA_RESULT_CODE.InvalidPageTableFlags;
pub const WHvTranslateGvaResultGpaUnmapped = WHV_TRANSLATE_GVA_RESULT_CODE.GpaUnmapped;
pub const WHvTranslateGvaResultGpaNoReadAccess = WHV_TRANSLATE_GVA_RESULT_CODE.GpaNoReadAccess;
pub const WHvTranslateGvaResultGpaNoWriteAccess = WHV_TRANSLATE_GVA_RESULT_CODE.GpaNoWriteAccess;
pub const WHvTranslateGvaResultGpaIllegalOverlayAccess = WHV_TRANSLATE_GVA_RESULT_CODE.GpaIllegalOverlayAccess;
pub const WHvTranslateGvaResultIntercept = WHV_TRANSLATE_GVA_RESULT_CODE.Intercept;
pub const WHV_TRANSLATE_GVA_RESULT = extern struct {
ResultCode: WHV_TRANSLATE_GVA_RESULT_CODE,
Reserved: u32,
};
pub const WHV_ADVISE_GPA_RANGE = extern union {
Populate: WHV_ADVISE_GPA_RANGE_POPULATE,
};
pub const WHV_CACHE_TYPE = enum(i32) {
Uncached = 0,
WriteCombining = 1,
WriteThrough = 4,
WriteProtected = 5,
WriteBack = 6,
};
pub const WHvCacheTypeUncached = WHV_CACHE_TYPE.Uncached;
pub const WHvCacheTypeWriteCombining = WHV_CACHE_TYPE.WriteCombining;
pub const WHvCacheTypeWriteThrough = WHV_CACHE_TYPE.WriteThrough;
pub const WHvCacheTypeWriteProtected = WHV_CACHE_TYPE.WriteProtected;
pub const WHvCacheTypeWriteBack = WHV_CACHE_TYPE.WriteBack;
pub const WHV_ACCESS_GPA_CONTROLS = extern union {
AsUINT64: u64,
Anonymous: extern struct {
CacheType: WHV_CACHE_TYPE,
Reserved: u32,
},
};
pub const WHV_REGISTER_NAME = enum(i32) {
X64RegisterRax = 0,
X64RegisterRcx = 1,
X64RegisterRdx = 2,
X64RegisterRbx = 3,
X64RegisterRsp = 4,
X64RegisterRbp = 5,
X64RegisterRsi = 6,
X64RegisterRdi = 7,
X64RegisterR8 = 8,
X64RegisterR9 = 9,
X64RegisterR10 = 10,
X64RegisterR11 = 11,
X64RegisterR12 = 12,
X64RegisterR13 = 13,
X64RegisterR14 = 14,
X64RegisterR15 = 15,
X64RegisterRip = 16,
X64RegisterRflags = 17,
X64RegisterEs = 18,
X64RegisterCs = 19,
X64RegisterSs = 20,
X64RegisterDs = 21,
X64RegisterFs = 22,
X64RegisterGs = 23,
X64RegisterLdtr = 24,
X64RegisterTr = 25,
X64RegisterIdtr = 26,
X64RegisterGdtr = 27,
X64RegisterCr0 = 28,
X64RegisterCr2 = 29,
X64RegisterCr3 = 30,
X64RegisterCr4 = 31,
X64RegisterCr8 = 32,
X64RegisterDr0 = 33,
X64RegisterDr1 = 34,
X64RegisterDr2 = 35,
X64RegisterDr3 = 36,
X64RegisterDr6 = 37,
X64RegisterDr7 = 38,
X64RegisterXCr0 = 39,
X64RegisterVirtualCr0 = 40,
X64RegisterVirtualCr3 = 41,
X64RegisterVirtualCr4 = 42,
X64RegisterVirtualCr8 = 43,
X64RegisterXmm0 = 4096,
X64RegisterXmm1 = 4097,
X64RegisterXmm2 = 4098,
X64RegisterXmm3 = 4099,
X64RegisterXmm4 = 4100,
X64RegisterXmm5 = 4101,
X64RegisterXmm6 = 4102,
X64RegisterXmm7 = 4103,
X64RegisterXmm8 = 4104,
X64RegisterXmm9 = 4105,
X64RegisterXmm10 = 4106,
X64RegisterXmm11 = 4107,
X64RegisterXmm12 = 4108,
X64RegisterXmm13 = 4109,
X64RegisterXmm14 = 4110,
X64RegisterXmm15 = 4111,
X64RegisterFpMmx0 = 4112,
X64RegisterFpMmx1 = 4113,
X64RegisterFpMmx2 = 4114,
X64RegisterFpMmx3 = 4115,
X64RegisterFpMmx4 = 4116,
X64RegisterFpMmx5 = 4117,
X64RegisterFpMmx6 = 4118,
X64RegisterFpMmx7 = 4119,
X64RegisterFpControlStatus = 4120,
X64RegisterXmmControlStatus = 4121,
X64RegisterTsc = 8192,
X64RegisterEfer = 8193,
X64RegisterKernelGsBase = 8194,
X64RegisterApicBase = 8195,
X64RegisterPat = 8196,
X64RegisterSysenterCs = 8197,
X64RegisterSysenterEip = 8198,
X64RegisterSysenterEsp = 8199,
X64RegisterStar = 8200,
X64RegisterLstar = 8201,
X64RegisterCstar = 8202,
X64RegisterSfmask = 8203,
X64RegisterInitialApicId = 8204,
X64RegisterMsrMtrrCap = 8205,
X64RegisterMsrMtrrDefType = 8206,
X64RegisterMsrMtrrPhysBase0 = 8208,
X64RegisterMsrMtrrPhysBase1 = 8209,
X64RegisterMsrMtrrPhysBase2 = 8210,
X64RegisterMsrMtrrPhysBase3 = 8211,
X64RegisterMsrMtrrPhysBase4 = 8212,
X64RegisterMsrMtrrPhysBase5 = 8213,
X64RegisterMsrMtrrPhysBase6 = 8214,
X64RegisterMsrMtrrPhysBase7 = 8215,
X64RegisterMsrMtrrPhysBase8 = 8216,
X64RegisterMsrMtrrPhysBase9 = 8217,
X64RegisterMsrMtrrPhysBaseA = 8218,
X64RegisterMsrMtrrPhysBaseB = 8219,
X64RegisterMsrMtrrPhysBaseC = 8220,
X64RegisterMsrMtrrPhysBaseD = 8221,
X64RegisterMsrMtrrPhysBaseE = 8222,
X64RegisterMsrMtrrPhysBaseF = 8223,
X64RegisterMsrMtrrPhysMask0 = 8256,
X64RegisterMsrMtrrPhysMask1 = 8257,
X64RegisterMsrMtrrPhysMask2 = 8258,
X64RegisterMsrMtrrPhysMask3 = 8259,
X64RegisterMsrMtrrPhysMask4 = 8260,
X64RegisterMsrMtrrPhysMask5 = 8261,
X64RegisterMsrMtrrPhysMask6 = 8262,
X64RegisterMsrMtrrPhysMask7 = 8263,
X64RegisterMsrMtrrPhysMask8 = 8264,
X64RegisterMsrMtrrPhysMask9 = 8265,
X64RegisterMsrMtrrPhysMaskA = 8266,
X64RegisterMsrMtrrPhysMaskB = 8267,
X64RegisterMsrMtrrPhysMaskC = 8268,
X64RegisterMsrMtrrPhysMaskD = 8269,
X64RegisterMsrMtrrPhysMaskE = 8270,
X64RegisterMsrMtrrPhysMaskF = 8271,
X64RegisterMsrMtrrFix64k00000 = 8304,
X64RegisterMsrMtrrFix16k80000 = 8305,
X64RegisterMsrMtrrFix16kA0000 = 8306,
X64RegisterMsrMtrrFix4kC0000 = 8307,
X64RegisterMsrMtrrFix4kC8000 = 8308,
X64RegisterMsrMtrrFix4kD0000 = 8309,
X64RegisterMsrMtrrFix4kD8000 = 8310,
X64RegisterMsrMtrrFix4kE0000 = 8311,
X64RegisterMsrMtrrFix4kE8000 = 8312,
X64RegisterMsrMtrrFix4kF0000 = 8313,
X64RegisterMsrMtrrFix4kF8000 = 8314,
X64RegisterTscAux = 8315,
X64RegisterBndcfgs = 8316,
X64RegisterMCount = 8318,
X64RegisterACount = 8319,
X64RegisterSpecCtrl = 8324,
X64RegisterPredCmd = 8325,
X64RegisterTscVirtualOffset = 8327,
X64RegisterTsxCtrl = 8328,
X64RegisterXss = 8331,
X64RegisterUCet = 8332,
X64RegisterSCet = 8333,
X64RegisterSsp = 8334,
X64RegisterPl0Ssp = 8335,
X64RegisterPl1Ssp = 8336,
X64RegisterPl2Ssp = 8337,
X64RegisterPl3Ssp = 8338,
X64RegisterInterruptSspTableAddr = 8339,
X64RegisterTscDeadline = 8341,
X64RegisterTscAdjust = 8342,
X64RegisterUmwaitControl = 8344,
X64RegisterXfd = 8345,
X64RegisterXfdErr = 8346,
X64RegisterApicId = 12290,
X64RegisterApicVersion = 12291,
X64RegisterApicTpr = 12296,
X64RegisterApicPpr = 12298,
X64RegisterApicEoi = 12299,
X64RegisterApicLdr = 12301,
X64RegisterApicSpurious = 12303,
X64RegisterApicIsr0 = 12304,
X64RegisterApicIsr1 = 12305,
X64RegisterApicIsr2 = 12306,
X64RegisterApicIsr3 = 12307,
X64RegisterApicIsr4 = 12308,
X64RegisterApicIsr5 = 12309,
X64RegisterApicIsr6 = 12310,
X64RegisterApicIsr7 = 12311,
X64RegisterApicTmr0 = 12312,
X64RegisterApicTmr1 = 12313,
X64RegisterApicTmr2 = 12314,
X64RegisterApicTmr3 = 12315,
X64RegisterApicTmr4 = 12316,
X64RegisterApicTmr5 = 12317,
X64RegisterApicTmr6 = 12318,
X64RegisterApicTmr7 = 12319,
X64RegisterApicIrr0 = 12320,
X64RegisterApicIrr1 = 12321,
X64RegisterApicIrr2 = 12322,
X64RegisterApicIrr3 = 12323,
X64RegisterApicIrr4 = 12324,
X64RegisterApicIrr5 = 12325,
X64RegisterApicIrr6 = 12326,
X64RegisterApicIrr7 = 12327,
X64RegisterApicEse = 12328,
X64RegisterApicIcr = 12336,
X64RegisterApicLvtTimer = 12338,
X64RegisterApicLvtThermal = 12339,
X64RegisterApicLvtPerfmon = 12340,
X64RegisterApicLvtLint0 = 12341,
X64RegisterApicLvtLint1 = 12342,
X64RegisterApicLvtError = 12343,
X64RegisterApicInitCount = 12344,
X64RegisterApicCurrentCount = 12345,
X64RegisterApicDivide = 12350,
X64RegisterApicSelfIpi = 12351,
RegisterSint0 = 16384,
RegisterSint1 = 16385,
RegisterSint2 = 16386,
RegisterSint3 = 16387,
RegisterSint4 = 16388,
RegisterSint5 = 16389,
RegisterSint6 = 16390,
RegisterSint7 = 16391,
RegisterSint8 = 16392,
RegisterSint9 = 16393,
RegisterSint10 = 16394,
RegisterSint11 = 16395,
RegisterSint12 = 16396,
RegisterSint13 = 16397,
RegisterSint14 = 16398,
RegisterSint15 = 16399,
RegisterScontrol = 16400,
RegisterSversion = 16401,
RegisterSiefp = 16402,
RegisterSimp = 16403,
RegisterEom = 16404,
RegisterVpRuntime = 20480,
X64RegisterHypercall = 20481,
RegisterGuestOsId = 20482,
RegisterVpAssistPage = 20499,
RegisterReferenceTsc = 20503,
RegisterReferenceTscSequence = 20506,
RegisterPendingInterruption = -2147483648,
RegisterInterruptState = -2147483647,
RegisterPendingEvent = -2147483646,
X64RegisterDeliverabilityNotifications = -2147483644,
RegisterInternalActivityState = -2147483643,
X64RegisterPendingDebugException = -2147483642,
};
pub const WHvX64RegisterRax = WHV_REGISTER_NAME.X64RegisterRax;
pub const WHvX64RegisterRcx = WHV_REGISTER_NAME.X64RegisterRcx;
pub const WHvX64RegisterRdx = WHV_REGISTER_NAME.X64RegisterRdx;
pub const WHvX64RegisterRbx = WHV_REGISTER_NAME.X64RegisterRbx;
pub const WHvX64RegisterRsp = WHV_REGISTER_NAME.X64RegisterRsp;
pub const WHvX64RegisterRbp = WHV_REGISTER_NAME.X64RegisterRbp;
pub const WHvX64RegisterRsi = WHV_REGISTER_NAME.X64RegisterRsi;
pub const WHvX64RegisterRdi = WHV_REGISTER_NAME.X64RegisterRdi;
pub const WHvX64RegisterR8 = WHV_REGISTER_NAME.X64RegisterR8;
pub const WHvX64RegisterR9 = WHV_REGISTER_NAME.X64RegisterR9;
pub const WHvX64RegisterR10 = WHV_REGISTER_NAME.X64RegisterR10;
pub const WHvX64RegisterR11 = WHV_REGISTER_NAME.X64RegisterR11;
pub const WHvX64RegisterR12 = WHV_REGISTER_NAME.X64RegisterR12;
pub const WHvX64RegisterR13 = WHV_REGISTER_NAME.X64RegisterR13;
pub const WHvX64RegisterR14 = WHV_REGISTER_NAME.X64RegisterR14;
pub const WHvX64RegisterR15 = WHV_REGISTER_NAME.X64RegisterR15;
pub const WHvX64RegisterRip = WHV_REGISTER_NAME.X64RegisterRip;
pub const WHvX64RegisterRflags = WHV_REGISTER_NAME.X64RegisterRflags;
pub const WHvX64RegisterEs = WHV_REGISTER_NAME.X64RegisterEs;
pub const WHvX64RegisterCs = WHV_REGISTER_NAME.X64RegisterCs;
pub const WHvX64RegisterSs = WHV_REGISTER_NAME.X64RegisterSs;
pub const WHvX64RegisterDs = WHV_REGISTER_NAME.X64RegisterDs;
pub const WHvX64RegisterFs = WHV_REGISTER_NAME.X64RegisterFs;
pub const WHvX64RegisterGs = WHV_REGISTER_NAME.X64RegisterGs;
pub const WHvX64RegisterLdtr = WHV_REGISTER_NAME.X64RegisterLdtr;
pub const WHvX64RegisterTr = WHV_REGISTER_NAME.X64RegisterTr;
pub const WHvX64RegisterIdtr = WHV_REGISTER_NAME.X64RegisterIdtr;
pub const WHvX64RegisterGdtr = WHV_REGISTER_NAME.X64RegisterGdtr;
pub const WHvX64RegisterCr0 = WHV_REGISTER_NAME.X64RegisterCr0;
pub const WHvX64RegisterCr2 = WHV_REGISTER_NAME.X64RegisterCr2;
pub const WHvX64RegisterCr3 = WHV_REGISTER_NAME.X64RegisterCr3;
pub const WHvX64RegisterCr4 = WHV_REGISTER_NAME.X64RegisterCr4;
pub const WHvX64RegisterCr8 = WHV_REGISTER_NAME.X64RegisterCr8;
pub const WHvX64RegisterDr0 = WHV_REGISTER_NAME.X64RegisterDr0;
pub const WHvX64RegisterDr1 = WHV_REGISTER_NAME.X64RegisterDr1;
pub const WHvX64RegisterDr2 = WHV_REGISTER_NAME.X64RegisterDr2;
pub const WHvX64RegisterDr3 = WHV_REGISTER_NAME.X64RegisterDr3;
pub const WHvX64RegisterDr6 = WHV_REGISTER_NAME.X64RegisterDr6;
pub const WHvX64RegisterDr7 = WHV_REGISTER_NAME.X64RegisterDr7;
pub const WHvX64RegisterXCr0 = WHV_REGISTER_NAME.X64RegisterXCr0;
pub const WHvX64RegisterVirtualCr0 = WHV_REGISTER_NAME.X64RegisterVirtualCr0;
pub const WHvX64RegisterVirtualCr3 = WHV_REGISTER_NAME.X64RegisterVirtualCr3;
pub const WHvX64RegisterVirtualCr4 = WHV_REGISTER_NAME.X64RegisterVirtualCr4;
pub const WHvX64RegisterVirtualCr8 = WHV_REGISTER_NAME.X64RegisterVirtualCr8;
pub const WHvX64RegisterXmm0 = WHV_REGISTER_NAME.X64RegisterXmm0;
pub const WHvX64RegisterXmm1 = WHV_REGISTER_NAME.X64RegisterXmm1;
pub const WHvX64RegisterXmm2 = WHV_REGISTER_NAME.X64RegisterXmm2;
pub const WHvX64RegisterXmm3 = WHV_REGISTER_NAME.X64RegisterXmm3;
pub const WHvX64RegisterXmm4 = WHV_REGISTER_NAME.X64RegisterXmm4;
pub const WHvX64RegisterXmm5 = WHV_REGISTER_NAME.X64RegisterXmm5;
pub const WHvX64RegisterXmm6 = WHV_REGISTER_NAME.X64RegisterXmm6;
pub const WHvX64RegisterXmm7 = WHV_REGISTER_NAME.X64RegisterXmm7;
pub const WHvX64RegisterXmm8 = WHV_REGISTER_NAME.X64RegisterXmm8;
pub const WHvX64RegisterXmm9 = WHV_REGISTER_NAME.X64RegisterXmm9;
pub const WHvX64RegisterXmm10 = WHV_REGISTER_NAME.X64RegisterXmm10;
pub const WHvX64RegisterXmm11 = WHV_REGISTER_NAME.X64RegisterXmm11;
pub const WHvX64RegisterXmm12 = WHV_REGISTER_NAME.X64RegisterXmm12;
pub const WHvX64RegisterXmm13 = WHV_REGISTER_NAME.X64RegisterXmm13;
pub const WHvX64RegisterXmm14 = WHV_REGISTER_NAME.X64RegisterXmm14;
pub const WHvX64RegisterXmm15 = WHV_REGISTER_NAME.X64RegisterXmm15;
pub const WHvX64RegisterFpMmx0 = WHV_REGISTER_NAME.X64RegisterFpMmx0;
pub const WHvX64RegisterFpMmx1 = WHV_REGISTER_NAME.X64RegisterFpMmx1;
pub const WHvX64RegisterFpMmx2 = WHV_REGISTER_NAME.X64RegisterFpMmx2;
pub const WHvX64RegisterFpMmx3 = WHV_REGISTER_NAME.X64RegisterFpMmx3;
pub const WHvX64RegisterFpMmx4 = WHV_REGISTER_NAME.X64RegisterFpMmx4;
pub const WHvX64RegisterFpMmx5 = WHV_REGISTER_NAME.X64RegisterFpMmx5;
pub const WHvX64RegisterFpMmx6 = WHV_REGISTER_NAME.X64RegisterFpMmx6;
pub const WHvX64RegisterFpMmx7 = WHV_REGISTER_NAME.X64RegisterFpMmx7;
pub const WHvX64RegisterFpControlStatus = WHV_REGISTER_NAME.X64RegisterFpControlStatus;
pub const WHvX64RegisterXmmControlStatus = WHV_REGISTER_NAME.X64RegisterXmmControlStatus;
pub const WHvX64RegisterTsc = WHV_REGISTER_NAME.X64RegisterTsc;
pub const WHvX64RegisterEfer = WHV_REGISTER_NAME.X64RegisterEfer;
pub const WHvX64RegisterKernelGsBase = WHV_REGISTER_NAME.X64RegisterKernelGsBase;
pub const WHvX64RegisterApicBase = WHV_REGISTER_NAME.X64RegisterApicBase;
pub const WHvX64RegisterPat = WHV_REGISTER_NAME.X64RegisterPat;
pub const WHvX64RegisterSysenterCs = WHV_REGISTER_NAME.X64RegisterSysenterCs;
pub const WHvX64RegisterSysenterEip = WHV_REGISTER_NAME.X64RegisterSysenterEip;
pub const WHvX64RegisterSysenterEsp = WHV_REGISTER_NAME.X64RegisterSysenterEsp;
pub const WHvX64RegisterStar = WHV_REGISTER_NAME.X64RegisterStar;
pub const WHvX64RegisterLstar = WHV_REGISTER_NAME.X64RegisterLstar;
pub const WHvX64RegisterCstar = WHV_REGISTER_NAME.X64RegisterCstar;
pub const WHvX64RegisterSfmask = WHV_REGISTER_NAME.X64RegisterSfmask;
pub const WHvX64RegisterInitialApicId = WHV_REGISTER_NAME.X64RegisterInitialApicId;
pub const WHvX64RegisterMsrMtrrCap = WHV_REGISTER_NAME.X64RegisterMsrMtrrCap;
pub const WHvX64RegisterMsrMtrrDefType = WHV_REGISTER_NAME.X64RegisterMsrMtrrDefType;
pub const WHvX64RegisterMsrMtrrPhysBase0 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBase0;
pub const WHvX64RegisterMsrMtrrPhysBase1 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBase1;
pub const WHvX64RegisterMsrMtrrPhysBase2 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBase2;
pub const WHvX64RegisterMsrMtrrPhysBase3 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBase3;
pub const WHvX64RegisterMsrMtrrPhysBase4 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBase4;
pub const WHvX64RegisterMsrMtrrPhysBase5 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBase5;
pub const WHvX64RegisterMsrMtrrPhysBase6 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBase6;
pub const WHvX64RegisterMsrMtrrPhysBase7 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBase7;
pub const WHvX64RegisterMsrMtrrPhysBase8 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBase8;
pub const WHvX64RegisterMsrMtrrPhysBase9 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBase9;
pub const WHvX64RegisterMsrMtrrPhysBaseA = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBaseA;
pub const WHvX64RegisterMsrMtrrPhysBaseB = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBaseB;
pub const WHvX64RegisterMsrMtrrPhysBaseC = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBaseC;
pub const WHvX64RegisterMsrMtrrPhysBaseD = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBaseD;
pub const WHvX64RegisterMsrMtrrPhysBaseE = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBaseE;
pub const WHvX64RegisterMsrMtrrPhysBaseF = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysBaseF;
pub const WHvX64RegisterMsrMtrrPhysMask0 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMask0;
pub const WHvX64RegisterMsrMtrrPhysMask1 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMask1;
pub const WHvX64RegisterMsrMtrrPhysMask2 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMask2;
pub const WHvX64RegisterMsrMtrrPhysMask3 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMask3;
pub const WHvX64RegisterMsrMtrrPhysMask4 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMask4;
pub const WHvX64RegisterMsrMtrrPhysMask5 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMask5;
pub const WHvX64RegisterMsrMtrrPhysMask6 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMask6;
pub const WHvX64RegisterMsrMtrrPhysMask7 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMask7;
pub const WHvX64RegisterMsrMtrrPhysMask8 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMask8;
pub const WHvX64RegisterMsrMtrrPhysMask9 = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMask9;
pub const WHvX64RegisterMsrMtrrPhysMaskA = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMaskA;
pub const WHvX64RegisterMsrMtrrPhysMaskB = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMaskB;
pub const WHvX64RegisterMsrMtrrPhysMaskC = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMaskC;
pub const WHvX64RegisterMsrMtrrPhysMaskD = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMaskD;
pub const WHvX64RegisterMsrMtrrPhysMaskE = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMaskE;
pub const WHvX64RegisterMsrMtrrPhysMaskF = WHV_REGISTER_NAME.X64RegisterMsrMtrrPhysMaskF;
pub const WHvX64RegisterMsrMtrrFix64k00000 = WHV_REGISTER_NAME.X64RegisterMsrMtrrFix64k00000;
pub const WHvX64RegisterMsrMtrrFix16k80000 = WHV_REGISTER_NAME.X64RegisterMsrMtrrFix16k80000;
pub const WHvX64RegisterMsrMtrrFix16kA0000 = WHV_REGISTER_NAME.X64RegisterMsrMtrrFix16kA0000;
pub const WHvX64RegisterMsrMtrrFix4kC0000 = WHV_REGISTER_NAME.X64RegisterMsrMtrrFix4kC0000;
pub const WHvX64RegisterMsrMtrrFix4kC8000 = WHV_REGISTER_NAME.X64RegisterMsrMtrrFix4kC8000;
pub const WHvX64RegisterMsrMtrrFix4kD0000 = WHV_REGISTER_NAME.X64RegisterMsrMtrrFix4kD0000;
pub const WHvX64RegisterMsrMtrrFix4kD8000 = WHV_REGISTER_NAME.X64RegisterMsrMtrrFix4kD8000;
pub const WHvX64RegisterMsrMtrrFix4kE0000 = WHV_REGISTER_NAME.X64RegisterMsrMtrrFix4kE0000;
pub const WHvX64RegisterMsrMtrrFix4kE8000 = WHV_REGISTER_NAME.X64RegisterMsrMtrrFix4kE8000;
pub const WHvX64RegisterMsrMtrrFix4kF0000 = WHV_REGISTER_NAME.X64RegisterMsrMtrrFix4kF0000;
pub const WHvX64RegisterMsrMtrrFix4kF8000 = WHV_REGISTER_NAME.X64RegisterMsrMtrrFix4kF8000;
pub const WHvX64RegisterTscAux = WHV_REGISTER_NAME.X64RegisterTscAux;
pub const WHvX64RegisterBndcfgs = WHV_REGISTER_NAME.X64RegisterBndcfgs;
pub const WHvX64RegisterMCount = WHV_REGISTER_NAME.X64RegisterMCount;
pub const WHvX64RegisterACount = WHV_REGISTER_NAME.X64RegisterACount;
pub const WHvX64RegisterSpecCtrl = WHV_REGISTER_NAME.X64RegisterSpecCtrl;
pub const WHvX64RegisterPredCmd = WHV_REGISTER_NAME.X64RegisterPredCmd;
pub const WHvX64RegisterTscVirtualOffset = WHV_REGISTER_NAME.X64RegisterTscVirtualOffset;
pub const WHvX64RegisterTsxCtrl = WHV_REGISTER_NAME.X64RegisterTsxCtrl;
pub const WHvX64RegisterXss = WHV_REGISTER_NAME.X64RegisterXss;
pub const WHvX64RegisterUCet = WHV_REGISTER_NAME.X64RegisterUCet;
pub const WHvX64RegisterSCet = WHV_REGISTER_NAME.X64RegisterSCet;
pub const WHvX64RegisterSsp = WHV_REGISTER_NAME.X64RegisterSsp;
pub const WHvX64RegisterPl0Ssp = WHV_REGISTER_NAME.X64RegisterPl0Ssp;
pub const WHvX64RegisterPl1Ssp = WHV_REGISTER_NAME.X64RegisterPl1Ssp;
pub const WHvX64RegisterPl2Ssp = WHV_REGISTER_NAME.X64RegisterPl2Ssp;
pub const WHvX64RegisterPl3Ssp = WHV_REGISTER_NAME.X64RegisterPl3Ssp;
pub const WHvX64RegisterInterruptSspTableAddr = WHV_REGISTER_NAME.X64RegisterInterruptSspTableAddr;
pub const WHvX64RegisterTscDeadline = WHV_REGISTER_NAME.X64RegisterTscDeadline;
pub const WHvX64RegisterTscAdjust = WHV_REGISTER_NAME.X64RegisterTscAdjust;
pub const WHvX64RegisterUmwaitControl = WHV_REGISTER_NAME.X64RegisterUmwaitControl;
pub const WHvX64RegisterXfd = WHV_REGISTER_NAME.X64RegisterXfd;
pub const WHvX64RegisterXfdErr = WHV_REGISTER_NAME.X64RegisterXfdErr;
pub const WHvX64RegisterApicId = WHV_REGISTER_NAME.X64RegisterApicId;
pub const WHvX64RegisterApicVersion = WHV_REGISTER_NAME.X64RegisterApicVersion;
pub const WHvX64RegisterApicTpr = WHV_REGISTER_NAME.X64RegisterApicTpr;
pub const WHvX64RegisterApicPpr = WHV_REGISTER_NAME.X64RegisterApicPpr;
pub const WHvX64RegisterApicEoi = WHV_REGISTER_NAME.X64RegisterApicEoi;
pub const WHvX64RegisterApicLdr = WHV_REGISTER_NAME.X64RegisterApicLdr;
pub const WHvX64RegisterApicSpurious = WHV_REGISTER_NAME.X64RegisterApicSpurious;
pub const WHvX64RegisterApicIsr0 = WHV_REGISTER_NAME.X64RegisterApicIsr0;
pub const WHvX64RegisterApicIsr1 = WHV_REGISTER_NAME.X64RegisterApicIsr1;
pub const WHvX64RegisterApicIsr2 = WHV_REGISTER_NAME.X64RegisterApicIsr2;
pub const WHvX64RegisterApicIsr3 = WHV_REGISTER_NAME.X64RegisterApicIsr3;
pub const WHvX64RegisterApicIsr4 = WHV_REGISTER_NAME.X64RegisterApicIsr4;
pub const WHvX64RegisterApicIsr5 = WHV_REGISTER_NAME.X64RegisterApicIsr5;
pub const WHvX64RegisterApicIsr6 = WHV_REGISTER_NAME.X64RegisterApicIsr6;
pub const WHvX64RegisterApicIsr7 = WHV_REGISTER_NAME.X64RegisterApicIsr7;
pub const WHvX64RegisterApicTmr0 = WHV_REGISTER_NAME.X64RegisterApicTmr0;
pub const WHvX64RegisterApicTmr1 = WHV_REGISTER_NAME.X64RegisterApicTmr1;
pub const WHvX64RegisterApicTmr2 = WHV_REGISTER_NAME.X64RegisterApicTmr2;
pub const WHvX64RegisterApicTmr3 = WHV_REGISTER_NAME.X64RegisterApicTmr3;
pub const WHvX64RegisterApicTmr4 = WHV_REGISTER_NAME.X64RegisterApicTmr4;
pub const WHvX64RegisterApicTmr5 = WHV_REGISTER_NAME.X64RegisterApicTmr5;
pub const WHvX64RegisterApicTmr6 = WHV_REGISTER_NAME.X64RegisterApicTmr6;
pub const WHvX64RegisterApicTmr7 = WHV_REGISTER_NAME.X64RegisterApicTmr7;
pub const WHvX64RegisterApicIrr0 = WHV_REGISTER_NAME.X64RegisterApicIrr0;
pub const WHvX64RegisterApicIrr1 = WHV_REGISTER_NAME.X64RegisterApicIrr1;
pub const WHvX64RegisterApicIrr2 = WHV_REGISTER_NAME.X64RegisterApicIrr2;
pub const WHvX64RegisterApicIrr3 = WHV_REGISTER_NAME.X64RegisterApicIrr3;
pub const WHvX64RegisterApicIrr4 = WHV_REGISTER_NAME.X64RegisterApicIrr4;
pub const WHvX64RegisterApicIrr5 = WHV_REGISTER_NAME.X64RegisterApicIrr5;
pub const WHvX64RegisterApicIrr6 = WHV_REGISTER_NAME.X64RegisterApicIrr6;
pub const WHvX64RegisterApicIrr7 = WHV_REGISTER_NAME.X64RegisterApicIrr7;
pub const WHvX64RegisterApicEse = WHV_REGISTER_NAME.X64RegisterApicEse;
pub const WHvX64RegisterApicIcr = WHV_REGISTER_NAME.X64RegisterApicIcr;
pub const WHvX64RegisterApicLvtTimer = WHV_REGISTER_NAME.X64RegisterApicLvtTimer;
pub const WHvX64RegisterApicLvtThermal = WHV_REGISTER_NAME.X64RegisterApicLvtThermal;
pub const WHvX64RegisterApicLvtPerfmon = WHV_REGISTER_NAME.X64RegisterApicLvtPerfmon;
pub const WHvX64RegisterApicLvtLint0 = WHV_REGISTER_NAME.X64RegisterApicLvtLint0;
pub const WHvX64RegisterApicLvtLint1 = WHV_REGISTER_NAME.X64RegisterApicLvtLint1;
pub const WHvX64RegisterApicLvtError = WHV_REGISTER_NAME.X64RegisterApicLvtError;
pub const WHvX64RegisterApicInitCount = WHV_REGISTER_NAME.X64RegisterApicInitCount;
pub const WHvX64RegisterApicCurrentCount = WHV_REGISTER_NAME.X64RegisterApicCurrentCount;
pub const WHvX64RegisterApicDivide = WHV_REGISTER_NAME.X64RegisterApicDivide;
pub const WHvX64RegisterApicSelfIpi = WHV_REGISTER_NAME.X64RegisterApicSelfIpi;
pub const WHvRegisterSint0 = WHV_REGISTER_NAME.RegisterSint0;
pub const WHvRegisterSint1 = WHV_REGISTER_NAME.RegisterSint1;
pub const WHvRegisterSint2 = WHV_REGISTER_NAME.RegisterSint2;
pub const WHvRegisterSint3 = WHV_REGISTER_NAME.RegisterSint3;
pub const WHvRegisterSint4 = WHV_REGISTER_NAME.RegisterSint4;
pub const WHvRegisterSint5 = WHV_REGISTER_NAME.RegisterSint5;
pub const WHvRegisterSint6 = WHV_REGISTER_NAME.RegisterSint6;
pub const WHvRegisterSint7 = WHV_REGISTER_NAME.RegisterSint7;
pub const WHvRegisterSint8 = WHV_REGISTER_NAME.RegisterSint8;
pub const WHvRegisterSint9 = WHV_REGISTER_NAME.RegisterSint9;
pub const WHvRegisterSint10 = WHV_REGISTER_NAME.RegisterSint10;
pub const WHvRegisterSint11 = WHV_REGISTER_NAME.RegisterSint11;
pub const WHvRegisterSint12 = WHV_REGISTER_NAME.RegisterSint12;
pub const WHvRegisterSint13 = WHV_REGISTER_NAME.RegisterSint13;
pub const WHvRegisterSint14 = WHV_REGISTER_NAME.RegisterSint14;
pub const WHvRegisterSint15 = WHV_REGISTER_NAME.RegisterSint15;
pub const WHvRegisterScontrol = WHV_REGISTER_NAME.RegisterScontrol;
pub const WHvRegisterSversion = WHV_REGISTER_NAME.RegisterSversion;
pub const WHvRegisterSiefp = WHV_REGISTER_NAME.RegisterSiefp;
pub const WHvRegisterSimp = WHV_REGISTER_NAME.RegisterSimp;
pub const WHvRegisterEom = WHV_REGISTER_NAME.RegisterEom;
pub const WHvRegisterVpRuntime = WHV_REGISTER_NAME.RegisterVpRuntime;
pub const WHvX64RegisterHypercall = WHV_REGISTER_NAME.X64RegisterHypercall;
pub const WHvRegisterGuestOsId = WHV_REGISTER_NAME.RegisterGuestOsId;
pub const WHvRegisterVpAssistPage = WHV_REGISTER_NAME.RegisterVpAssistPage;
pub const WHvRegisterReferenceTsc = WHV_REGISTER_NAME.RegisterReferenceTsc;
pub const WHvRegisterReferenceTscSequence = WHV_REGISTER_NAME.RegisterReferenceTscSequence;
pub const WHvRegisterPendingInterruption = WHV_REGISTER_NAME.RegisterPendingInterruption;
pub const WHvRegisterInterruptState = WHV_REGISTER_NAME.RegisterInterruptState;
pub const WHvRegisterPendingEvent = WHV_REGISTER_NAME.RegisterPendingEvent;
pub const WHvX64RegisterDeliverabilityNotifications = WHV_REGISTER_NAME.X64RegisterDeliverabilityNotifications;
pub const WHvRegisterInternalActivityState = WHV_REGISTER_NAME.RegisterInternalActivityState;
pub const WHvX64RegisterPendingDebugException = WHV_REGISTER_NAME.X64RegisterPendingDebugException;
pub const WHV_UINT128 = extern union {
Anonymous: extern struct {
Low64: u64,
High64: u64,
},
Dword: [4]u32,
};
pub const WHV_X64_FP_REGISTER = extern union {
Anonymous: extern struct {
Mantissa: u64,
_bitfield: u64,
},
AsUINT128: WHV_UINT128,
};
pub const WHV_X64_FP_CONTROL_STATUS_REGISTER = extern union {
Anonymous: extern struct {
FpControl: u16,
FpStatus: u16,
FpTag: u8,
Reserved: u8,
LastFpOp: u16,
Anonymous: extern union {
LastFpRip: u64,
Anonymous: extern struct {
LastFpEip: u32,
LastFpCs: u16,
Reserved2: u16,
},
},
},
AsUINT128: WHV_UINT128,
};
pub const WHV_X64_XMM_CONTROL_STATUS_REGISTER = extern union {
Anonymous: extern struct {
Anonymous: extern union {
LastFpRdp: u64,
Anonymous: extern struct {
LastFpDp: u32,
LastFpDs: u16,
Reserved: u16,
},
},
XmmStatusControl: u32,
XmmStatusControlMask: u32,
},
AsUINT128: WHV_UINT128,
};
pub const WHV_X64_SEGMENT_REGISTER = extern struct {
Base: u64,
Limit: u32,
Selector: u16,
Anonymous: extern union {
Anonymous: extern struct {
_bitfield: u16,
},
Attributes: u16,
},
};
pub const WHV_X64_TABLE_REGISTER = extern struct {
Pad: [3]u16,
Limit: u16,
Base: u64,
};
pub const WHV_X64_INTERRUPT_STATE_REGISTER = extern union {
Anonymous: extern struct {
_bitfield: u64,
},
AsUINT64: u64,
};
pub const WHV_X64_PENDING_INTERRUPTION_REGISTER = extern union {
Anonymous: extern struct {
_bitfield: u32,
ErrorCode: u32,
},
AsUINT64: u64,
};
pub const WHV_X64_DELIVERABILITY_NOTIFICATIONS_REGISTER = extern union {
Anonymous: extern struct {
_bitfield: u64,
},
AsUINT64: u64,
};
pub const WHV_X64_PENDING_EVENT_TYPE = enum(i32) {
ception = 0,
tInt = 5,
};
pub const WHvX64PendingEventException = WHV_X64_PENDING_EVENT_TYPE.ception;
pub const WHvX64PendingEventExtInt = WHV_X64_PENDING_EVENT_TYPE.tInt;
pub const WHV_X64_PENDING_EXCEPTION_EVENT = extern union {
Anonymous: extern struct {
_bitfield: u32,
ErrorCode: u32,
ExceptionParameter: u64,
},
AsUINT128: WHV_UINT128,
};
pub const WHV_X64_PENDING_EXT_INT_EVENT = extern union {
Anonymous: extern struct {
_bitfield: u64,
Reserved2: u64,
},
AsUINT128: WHV_UINT128,
};
pub const WHV_INTERNAL_ACTIVITY_REGISTER = extern union {
Anonymous: extern struct {
_bitfield: u64,
},
AsUINT64: u64,
};
pub const WHV_X64_PENDING_DEBUG_EXCEPTION = extern union {
AsUINT64: u64,
Anonymous: extern struct {
_bitfield: u64,
},
};
pub const WHV_SYNIC_SINT_DELIVERABLE_CONTEXT = extern struct {
DeliverableSints: u16,
Reserved1: u16,
Reserved2: u32,
};
pub const WHV_REGISTER_VALUE = extern union {
Reg128: WHV_UINT128,
Reg64: u64,
Reg32: u32,
Reg16: u16,
Reg8: u8,
Fp: WHV_X64_FP_REGISTER,
FpControlStatus: WHV_X64_FP_CONTROL_STATUS_REGISTER,
XmmControlStatus: WHV_X64_XMM_CONTROL_STATUS_REGISTER,
Segment: WHV_X64_SEGMENT_REGISTER,
Table: WHV_X64_TABLE_REGISTER,
InterruptState: WHV_X64_INTERRUPT_STATE_REGISTER,
PendingInterruption: WHV_X64_PENDING_INTERRUPTION_REGISTER,
DeliverabilityNotifications: WHV_X64_DELIVERABILITY_NOTIFICATIONS_REGISTER,
ExceptionEvent: WHV_X64_PENDING_EXCEPTION_EVENT,
ExtIntEvent: WHV_X64_PENDING_EXT_INT_EVENT,
InternalActivity: WHV_INTERNAL_ACTIVITY_REGISTER,
PendingDebugException: WHV_X64_PENDING_DEBUG_EXCEPTION,
};
pub const WHV_RUN_VP_EXIT_REASON = enum(i32) {
None = 0,
MemoryAccess = 1,
X64IoPortAccess = 2,
UnrecoverableException = 4,
InvalidVpRegisterValue = 5,
UnsupportedFeature = 6,
X64InterruptWindow = 7,
X64Halt = 8,
X64ApicEoi = 9,
SynicSintDeliverable = 10,
X64MsrAccess = 4096,
X64Cpuid = 4097,
Exception = 4098,
X64Rdtsc = 4099,
X64ApicSmiTrap = 4100,
Hypercall = 4101,
X64ApicInitSipiTrap = 4102,
X64ApicWriteTrap = 4103,
Canceled = 8193,
};
pub const WHvRunVpExitReasonNone = WHV_RUN_VP_EXIT_REASON.None;
pub const WHvRunVpExitReasonMemoryAccess = WHV_RUN_VP_EXIT_REASON.MemoryAccess;
pub const WHvRunVpExitReasonX64IoPortAccess = WHV_RUN_VP_EXIT_REASON.X64IoPortAccess;
pub const WHvRunVpExitReasonUnrecoverableException = WHV_RUN_VP_EXIT_REASON.UnrecoverableException;
pub const WHvRunVpExitReasonInvalidVpRegisterValue = WHV_RUN_VP_EXIT_REASON.InvalidVpRegisterValue;
pub const WHvRunVpExitReasonUnsupportedFeature = WHV_RUN_VP_EXIT_REASON.UnsupportedFeature;
pub const WHvRunVpExitReasonX64InterruptWindow = WHV_RUN_VP_EXIT_REASON.X64InterruptWindow;
pub const WHvRunVpExitReasonX64Halt = WHV_RUN_VP_EXIT_REASON.X64Halt;
pub const WHvRunVpExitReasonX64ApicEoi = WHV_RUN_VP_EXIT_REASON.X64ApicEoi;
pub const WHvRunVpExitReasonSynicSintDeliverable = WHV_RUN_VP_EXIT_REASON.SynicSintDeliverable;
pub const WHvRunVpExitReasonX64MsrAccess = WHV_RUN_VP_EXIT_REASON.X64MsrAccess;
pub const WHvRunVpExitReasonX64Cpuid = WHV_RUN_VP_EXIT_REASON.X64Cpuid;
pub const WHvRunVpExitReasonException = WHV_RUN_VP_EXIT_REASON.Exception;
pub const WHvRunVpExitReasonX64Rdtsc = WHV_RUN_VP_EXIT_REASON.X64Rdtsc;
pub const WHvRunVpExitReasonX64ApicSmiTrap = WHV_RUN_VP_EXIT_REASON.X64ApicSmiTrap;
pub const WHvRunVpExitReasonHypercall = WHV_RUN_VP_EXIT_REASON.Hypercall;
pub const WHvRunVpExitReasonX64ApicInitSipiTrap = WHV_RUN_VP_EXIT_REASON.X64ApicInitSipiTrap;
pub const WHvRunVpExitReasonX64ApicWriteTrap = WHV_RUN_VP_EXIT_REASON.X64ApicWriteTrap;
pub const WHvRunVpExitReasonCanceled = WHV_RUN_VP_EXIT_REASON.Canceled;
pub const WHV_X64_VP_EXECUTION_STATE = extern union {
Anonymous: extern struct {
_bitfield: u16,
},
AsUINT16: u16,
};
pub const WHV_VP_EXIT_CONTEXT = extern struct {
ExecutionState: WHV_X64_VP_EXECUTION_STATE,
_bitfield: u8,
Reserved: u8,
Reserved2: u32,
Cs: WHV_X64_SEGMENT_REGISTER,
Rip: u64,
Rflags: u64,
};
pub const WHV_MEMORY_ACCESS_INFO = extern union {
Anonymous: extern struct {
_bitfield: u32,
},
AsUINT32: u32,
};
pub const WHV_MEMORY_ACCESS_CONTEXT = extern struct {
InstructionByteCount: u8,
Reserved: [3]u8,
InstructionBytes: [16]u8,
AccessInfo: WHV_MEMORY_ACCESS_INFO,
Gpa: u64,
Gva: u64,
};
pub const WHV_X64_IO_PORT_ACCESS_INFO = extern union {
Anonymous: extern struct {
_bitfield: u32,
},
AsUINT32: u32,
};
pub const WHV_X64_IO_PORT_ACCESS_CONTEXT = extern struct {
InstructionByteCount: u8,
Reserved: [3]u8,
InstructionBytes: [16]u8,
AccessInfo: WHV_X64_IO_PORT_ACCESS_INFO,
PortNumber: u16,
Reserved2: [3]u16,
Rax: u64,
Rcx: u64,
Rsi: u64,
Rdi: u64,
Ds: WHV_X64_SEGMENT_REGISTER,
Es: WHV_X64_SEGMENT_REGISTER,
};
pub const WHV_X64_MSR_ACCESS_INFO = extern union {
Anonymous: extern struct {
_bitfield: u32,
},
AsUINT32: u32,
};
pub const WHV_X64_MSR_ACCESS_CONTEXT = extern struct {
AccessInfo: WHV_X64_MSR_ACCESS_INFO,
MsrNumber: u32,
Rax: u64,
Rdx: u64,
};
pub const WHV_X64_CPUID_ACCESS_CONTEXT = extern struct {
Rax: u64,
Rcx: u64,
Rdx: u64,
Rbx: u64,
DefaultResultRax: u64,
DefaultResultRcx: u64,
DefaultResultRdx: u64,
DefaultResultRbx: u64,
};
pub const WHV_VP_EXCEPTION_INFO = extern union {
Anonymous: extern struct {
_bitfield: u32,
},
AsUINT32: u32,
};
pub const WHV_VP_EXCEPTION_CONTEXT = extern struct {
InstructionByteCount: u8,
Reserved: [3]u8,
InstructionBytes: [16]u8,
ExceptionInfo: WHV_VP_EXCEPTION_INFO,
ExceptionType: u8,
Reserved2: [3]u8,
ErrorCode: u32,
ExceptionParameter: u64,
};
pub const WHV_X64_UNSUPPORTED_FEATURE_CODE = enum(i32) {
Intercept = 1,
TaskSwitchTss = 2,
};
pub const WHvUnsupportedFeatureIntercept = WHV_X64_UNSUPPORTED_FEATURE_CODE.Intercept;
pub const WHvUnsupportedFeatureTaskSwitchTss = WHV_X64_UNSUPPORTED_FEATURE_CODE.TaskSwitchTss;
pub const WHV_X64_UNSUPPORTED_FEATURE_CONTEXT = extern struct {
FeatureCode: WHV_X64_UNSUPPORTED_FEATURE_CODE,
Reserved: u32,
FeatureParameter: u64,
};
pub const WHV_RUN_VP_CANCEL_REASON = enum(i32) {
r = 0,
};
pub const WHvRunVpCancelReasonUser = WHV_RUN_VP_CANCEL_REASON.r;
pub const WHV_RUN_VP_CANCELED_CONTEXT = extern struct {
CancelReason: WHV_RUN_VP_CANCEL_REASON,
};
pub const WHV_X64_PENDING_INTERRUPTION_TYPE = enum(i32) {
Interrupt = 0,
Nmi = 2,
Exception = 3,
};
pub const WHvX64PendingInterrupt = WHV_X64_PENDING_INTERRUPTION_TYPE.Interrupt;
pub const WHvX64PendingNmi = WHV_X64_PENDING_INTERRUPTION_TYPE.Nmi;
pub const WHvX64PendingException = WHV_X64_PENDING_INTERRUPTION_TYPE.Exception;
pub const WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT = extern struct {
DeliverableType: WHV_X64_PENDING_INTERRUPTION_TYPE,
};
pub const WHV_X64_APIC_EOI_CONTEXT = extern struct {
InterruptVector: u32,
};
pub const WHV_X64_RDTSC_INFO = extern union {
Anonymous: extern struct {
_bitfield: u64,
},
AsUINT64: u64,
};
pub const WHV_X64_RDTSC_CONTEXT = extern struct {
TscAux: u64,
VirtualOffset: u64,
Tsc: u64,
ReferenceTime: u64,
RdtscInfo: WHV_X64_RDTSC_INFO,
};
pub const WHV_X64_APIC_SMI_CONTEXT = extern struct {
ApicIcr: u64,
};
pub const WHV_HYPERCALL_CONTEXT = extern struct {
Rax: u64,
Rbx: u64,
Rcx: u64,
Rdx: u64,
R8: u64,
Rsi: u64,
Rdi: u64,
Reserved0: u64,
XmmRegisters: [6]WHV_UINT128,
Reserved1: [2]u64,
};
pub const WHV_X64_APIC_INIT_SIPI_CONTEXT = extern struct {
ApicIcr: u64,
};
pub const WHV_X64_APIC_WRITE_TYPE = enum(i32) {
Ldr = 208,
Dfr = 224,
Svr = 240,
Lint0 = 848,
Lint1 = 864,
};
pub const WHvX64ApicWriteTypeLdr = WHV_X64_APIC_WRITE_TYPE.Ldr;
pub const WHvX64ApicWriteTypeDfr = WHV_X64_APIC_WRITE_TYPE.Dfr;
pub const WHvX64ApicWriteTypeSvr = WHV_X64_APIC_WRITE_TYPE.Svr;
pub const WHvX64ApicWriteTypeLint0 = WHV_X64_APIC_WRITE_TYPE.Lint0;
pub const WHvX64ApicWriteTypeLint1 = WHV_X64_APIC_WRITE_TYPE.Lint1;
pub const WHV_X64_APIC_WRITE_CONTEXT = extern struct {
Type: WHV_X64_APIC_WRITE_TYPE,
Reserved: u32,
WriteValue: u64,
};
pub const WHV_RUN_VP_EXIT_CONTEXT = extern struct {
ExitReason: WHV_RUN_VP_EXIT_REASON,
Reserved: u32,
VpContext: WHV_VP_EXIT_CONTEXT,
Anonymous: extern union {
MemoryAccess: WHV_MEMORY_ACCESS_CONTEXT,
IoPortAccess: WHV_X64_IO_PORT_ACCESS_CONTEXT,
MsrAccess: WHV_X64_MSR_ACCESS_CONTEXT,
CpuidAccess: WHV_X64_CPUID_ACCESS_CONTEXT,
VpException: WHV_VP_EXCEPTION_CONTEXT,
InterruptWindow: WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT,
UnsupportedFeature: WHV_X64_UNSUPPORTED_FEATURE_CONTEXT,
CancelReason: WHV_RUN_VP_CANCELED_CONTEXT,
ApicEoi: WHV_X64_APIC_EOI_CONTEXT,
ReadTsc: WHV_X64_RDTSC_CONTEXT,
ApicSmi: WHV_X64_APIC_SMI_CONTEXT,
Hypercall: WHV_HYPERCALL_CONTEXT,
ApicInitSipi: WHV_X64_APIC_INIT_SIPI_CONTEXT,
ApicWrite: WHV_X64_APIC_WRITE_CONTEXT,
SynicSintDeliverable: WHV_SYNIC_SINT_DELIVERABLE_CONTEXT,
},
};
pub const WHV_INTERRUPT_TYPE = enum(i32) {
Fixed = 0,
LowestPriority = 1,
Nmi = 4,
Init = 5,
Sipi = 6,
LocalInt1 = 9,
};
pub const WHvX64InterruptTypeFixed = WHV_INTERRUPT_TYPE.Fixed;
pub const WHvX64InterruptTypeLowestPriority = WHV_INTERRUPT_TYPE.LowestPriority;
pub const WHvX64InterruptTypeNmi = WHV_INTERRUPT_TYPE.Nmi;
pub const WHvX64InterruptTypeInit = WHV_INTERRUPT_TYPE.Init;
pub const WHvX64InterruptTypeSipi = WHV_INTERRUPT_TYPE.Sipi;
pub const WHvX64InterruptTypeLocalInt1 = WHV_INTERRUPT_TYPE.LocalInt1;
pub const WHV_INTERRUPT_DESTINATION_MODE = enum(i32) {
Physical = 0,
Logical = 1,
};
pub const WHvX64InterruptDestinationModePhysical = WHV_INTERRUPT_DESTINATION_MODE.Physical;
pub const WHvX64InterruptDestinationModeLogical = WHV_INTERRUPT_DESTINATION_MODE.Logical;
pub const WHV_INTERRUPT_TRIGGER_MODE = enum(i32) {
Edge = 0,
Level = 1,
};
pub const WHvX64InterruptTriggerModeEdge = WHV_INTERRUPT_TRIGGER_MODE.Edge;
pub const WHvX64InterruptTriggerModeLevel = WHV_INTERRUPT_TRIGGER_MODE.Level;
pub const WHV_INTERRUPT_CONTROL = extern struct {
_bitfield: u64,
Destination: u32,
Vector: u32,
};
pub const WHV_DOORBELL_MATCH_DATA = extern struct {
GuestAddress: u64,
Value: u64,
Length: u32,
_bitfield: u32,
};
pub const WHV_PARTITION_COUNTER_SET = enum(i32) {
y = 0,
};
pub const WHvPartitionCounterSetMemory = WHV_PARTITION_COUNTER_SET.y;
pub const WHV_PARTITION_MEMORY_COUNTERS = extern struct {
Mapped4KPageCount: u64,
Mapped2MPageCount: u64,
Mapped1GPageCount: u64,
};
pub const WHV_PROCESSOR_COUNTER_SET = enum(i32) {
Runtime = 0,
Intercepts = 1,
Events = 2,
Apic = 3,
SyntheticFeatures = 4,
};
pub const WHvProcessorCounterSetRuntime = WHV_PROCESSOR_COUNTER_SET.Runtime;
pub const WHvProcessorCounterSetIntercepts = WHV_PROCESSOR_COUNTER_SET.Intercepts;
pub const WHvProcessorCounterSetEvents = WHV_PROCESSOR_COUNTER_SET.Events;
pub const WHvProcessorCounterSetApic = WHV_PROCESSOR_COUNTER_SET.Apic;
pub const WHvProcessorCounterSetSyntheticFeatures = WHV_PROCESSOR_COUNTER_SET.SyntheticFeatures;
pub const WHV_PROCESSOR_RUNTIME_COUNTERS = extern struct {
TotalRuntime100ns: u64,
HypervisorRuntime100ns: u64,
};
pub const WHV_PROCESSOR_INTERCEPT_COUNTER = extern struct {
Count: u64,
Time100ns: u64,
};
pub const WHV_PROCESSOR_INTERCEPT_COUNTERS = extern struct {
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_INTERCEPT_COUNTER,
};
pub const WHV_PROCESSOR_EVENT_COUNTERS = extern struct {
PageFaultCount: u64,
ExceptionCount: u64,
InterruptCount: u64,
};
pub const WHV_PROCESSOR_APIC_COUNTERS = extern struct {
MmioAccessCount: u64,
EoiAccessCount: u64,
TprAccessCount: u64,
SentIpiCount: u64,
SelfIpiCount: u64,
};
pub const WHV_PROCESSOR_SYNTHETIC_FEATURES_COUNTERS = extern struct {
SyntheticInterruptsCount: u64,
LongSpinWaitHypercallsCount: u64,
OtherHypercallsCount: u64,
SyntheticInterruptHypercallsCount: u64,
VirtualInterruptHypercallsCount: u64,
VirtualMmuHypercallsCount: u64,
};
pub const WHV_ADVISE_GPA_RANGE_CODE = enum(i32) {
Populate = 0,
Pin = 1,
Unpin = 2,
};
pub const WHvAdviseGpaRangeCodePopulate = WHV_ADVISE_GPA_RANGE_CODE.Populate;
pub const WHvAdviseGpaRangeCodePin = WHV_ADVISE_GPA_RANGE_CODE.Pin;
pub const WHvAdviseGpaRangeCodeUnpin = WHV_ADVISE_GPA_RANGE_CODE.Unpin;
pub const WHV_VIRTUAL_PROCESSOR_STATE_TYPE = enum(i32) {
SynicMessagePage = 0,
SynicEventFlagPage = 1,
SynicTimerState = 2,
InterruptControllerState2 = 4096,
XsaveState = 4097,
};
pub const WHvVirtualProcessorStateTypeSynicMessagePage = WHV_VIRTUAL_PROCESSOR_STATE_TYPE.SynicMessagePage;
pub const WHvVirtualProcessorStateTypeSynicEventFlagPage = WHV_VIRTUAL_PROCESSOR_STATE_TYPE.SynicEventFlagPage;
pub const WHvVirtualProcessorStateTypeSynicTimerState = WHV_VIRTUAL_PROCESSOR_STATE_TYPE.SynicTimerState;
pub const WHvVirtualProcessorStateTypeInterruptControllerState2 = WHV_VIRTUAL_PROCESSOR_STATE_TYPE.InterruptControllerState2;
pub const WHvVirtualProcessorStateTypeXsaveState = WHV_VIRTUAL_PROCESSOR_STATE_TYPE.XsaveState;
pub const WHV_SYNIC_EVENT_PARAMETERS = extern struct {
VpIndex: u32,
TargetSint: u8,
Reserved: u8,
FlagNumber: u16,
};
pub const WHV_ALLOCATE_VPCI_RESOURCE_FLAGS = enum(u32) {
None = 0,
AllowDirectP2P = 1,
_,
pub fn initFlags(o: struct {
None: u1 = 0,
AllowDirectP2P: u1 = 0,
}) WHV_ALLOCATE_VPCI_RESOURCE_FLAGS {
return @as(WHV_ALLOCATE_VPCI_RESOURCE_FLAGS, @enumFromInt(
(if (o.None == 1) @intFromEnum(WHV_ALLOCATE_VPCI_RESOURCE_FLAGS.None) else 0)
| (if (o.AllowDirectP2P == 1) @intFromEnum(WHV_ALLOCATE_VPCI_RESOURCE_FLAGS.AllowDirectP2P) else 0)
));
}
};
pub const WHvAllocateVpciResourceFlagNone = WHV_ALLOCATE_VPCI_RESOURCE_FLAGS.None;
pub const WHvAllocateVpciResourceFlagAllowDirectP2P = WHV_ALLOCATE_VPCI_RESOURCE_FLAGS.AllowDirectP2P;
pub const WHV_SRIOV_RESOURCE_DESCRIPTOR = extern struct {
PnpInstanceId: [200]u16,
VirtualFunctionId: LUID,
VirtualFunctionIndex: u16,
Reserved: u16,
};
pub const WHV_VPCI_DEVICE_NOTIFICATION_TYPE = enum(i32) {
Undefined = 0,
MmioRemapping = 1,
SurpriseRemoval = 2,
};
pub const WHvVpciDeviceNotificationUndefined = WHV_VPCI_DEVICE_NOTIFICATION_TYPE.Undefined;
pub const WHvVpciDeviceNotificationMmioRemapping = WHV_VPCI_DEVICE_NOTIFICATION_TYPE.MmioRemapping;
pub const WHvVpciDeviceNotificationSurpriseRemoval = WHV_VPCI_DEVICE_NOTIFICATION_TYPE.SurpriseRemoval;
pub const WHV_VPCI_DEVICE_NOTIFICATION = extern struct {
NotificationType: WHV_VPCI_DEVICE_NOTIFICATION_TYPE,
Reserved1: u32,
Anonymous: extern union {
Reserved2: u64,
},
};
pub const WHV_CREATE_VPCI_DEVICE_FLAGS = enum(u32) {
None = 0,
PhysicallyBacked = 1,
UseLogicalInterrupts = 2,
_,
pub fn initFlags(o: struct {
None: u1 = 0,
PhysicallyBacked: u1 = 0,
UseLogicalInterrupts: u1 = 0,
}) WHV_CREATE_VPCI_DEVICE_FLAGS {
return @as(WHV_CREATE_VPCI_DEVICE_FLAGS, @enumFromInt(
(if (o.None == 1) @intFromEnum(WHV_CREATE_VPCI_DEVICE_FLAGS.None) else 0)
| (if (o.PhysicallyBacked == 1) @intFromEnum(WHV_CREATE_VPCI_DEVICE_FLAGS.PhysicallyBacked) else 0)
| (if (o.UseLogicalInterrupts == 1) @intFromEnum(WHV_CREATE_VPCI_DEVICE_FLAGS.UseLogicalInterrupts) else 0)
));
}
};
pub const WHvCreateVpciDeviceFlagNone = WHV_CREATE_VPCI_DEVICE_FLAGS.None;
pub const WHvCreateVpciDeviceFlagPhysicallyBacked = WHV_CREATE_VPCI_DEVICE_FLAGS.PhysicallyBacked;
pub const WHvCreateVpciDeviceFlagUseLogicalInterrupts = WHV_CREATE_VPCI_DEVICE_FLAGS.UseLogicalInterrupts;
pub const WHV_VPCI_DEVICE_PROPERTY_CODE = enum(i32) {
Undefined = 0,
HardwareIDs = 1,
ProbedBARs = 2,
};
pub const WHvVpciDevicePropertyCodeUndefined = WHV_VPCI_DEVICE_PROPERTY_CODE.Undefined;
pub const WHvVpciDevicePropertyCodeHardwareIDs = WHV_VPCI_DEVICE_PROPERTY_CODE.HardwareIDs;
pub const WHvVpciDevicePropertyCodeProbedBARs = WHV_VPCI_DEVICE_PROPERTY_CODE.ProbedBARs;
pub const WHV_VPCI_HARDWARE_IDS = extern struct {
VendorID: u16,
DeviceID: u16,
RevisionID: u8,
ProgIf: u8,
SubClass: u8,
BaseClass: u8,
SubVendorID: u16,
SubSystemID: u16,
};
pub const WHV_VPCI_PROBED_BARS = extern struct {
Value: [6]u32,
};
pub const WHV_VPCI_MMIO_RANGE_FLAGS = enum(u32) {
ReadAccess = 1,
WriteAccess = 2,
_,
pub fn initFlags(o: struct {
ReadAccess: u1 = 0,
WriteAccess: u1 = 0,
}) WHV_VPCI_MMIO_RANGE_FLAGS {
return @as(WHV_VPCI_MMIO_RANGE_FLAGS, @enumFromInt(
(if (o.ReadAccess == 1) @intFromEnum(WHV_VPCI_MMIO_RANGE_FLAGS.ReadAccess) else 0)
| (if (o.WriteAccess == 1) @intFromEnum(WHV_VPCI_MMIO_RANGE_FLAGS.WriteAccess) else 0)
));
}
};
pub const WHvVpciMmioRangeFlagReadAccess = WHV_VPCI_MMIO_RANGE_FLAGS.ReadAccess;
pub const WHvVpciMmioRangeFlagWriteAccess = WHV_VPCI_MMIO_RANGE_FLAGS.WriteAccess;
pub const WHV_VPCI_DEVICE_REGISTER_SPACE = enum(i32) {
ConfigSpace = -1,
Bar0 = 0,
Bar1 = 1,
Bar2 = 2,
Bar3 = 3,
Bar4 = 4,
Bar5 = 5,
};
pub const WHvVpciConfigSpace = WHV_VPCI_DEVICE_REGISTER_SPACE.ConfigSpace;
pub const WHvVpciBar0 = WHV_VPCI_DEVICE_REGISTER_SPACE.Bar0;
pub const WHvVpciBar1 = WHV_VPCI_DEVICE_REGISTER_SPACE.Bar1;
pub const WHvVpciBar2 = WHV_VPCI_DEVICE_REGISTER_SPACE.Bar2;
pub const WHvVpciBar3 = WHV_VPCI_DEVICE_REGISTER_SPACE.Bar3;
pub const WHvVpciBar4 = WHV_VPCI_DEVICE_REGISTER_SPACE.Bar4;
pub const WHvVpciBar5 = WHV_VPCI_DEVICE_REGISTER_SPACE.Bar5;
pub const WHV_VPCI_MMIO_MAPPING = extern struct {
Location: WHV_VPCI_DEVICE_REGISTER_SPACE,
Flags: WHV_VPCI_MMIO_RANGE_FLAGS,
SizeInBytes: u64,
OffsetInBytes: u64,
VirtualAddress: ?*anyopaque,
};
pub const WHV_VPCI_DEVICE_REGISTER = extern struct {
Location: WHV_VPCI_DEVICE_REGISTER_SPACE,
SizeInBytes: u32,
OffsetInBytes: u64,
};
pub const WHV_VPCI_INTERRUPT_TARGET_FLAGS = enum(u32) {
None = 0,
Multicast = 1,
_,
pub fn initFlags(o: struct {
None: u1 = 0,
Multicast: u1 = 0,
}) WHV_VPCI_INTERRUPT_TARGET_FLAGS {
return @as(WHV_VPCI_INTERRUPT_TARGET_FLAGS, @enumFromInt(
(if (o.None == 1) @intFromEnum(WHV_VPCI_INTERRUPT_TARGET_FLAGS.None) else 0)
| (if (o.Multicast == 1) @intFromEnum(WHV_VPCI_INTERRUPT_TARGET_FLAGS.Multicast) else 0)
));
}
};
pub const WHvVpciInterruptTargetFlagNone = WHV_VPCI_INTERRUPT_TARGET_FLAGS.None;
pub const WHvVpciInterruptTargetFlagMulticast = WHV_VPCI_INTERRUPT_TARGET_FLAGS.Multicast;
pub const WHV_VPCI_INTERRUPT_TARGET = extern struct {
Vector: u32,
Flags: WHV_VPCI_INTERRUPT_TARGET_FLAGS,
ProcessorCount: u32,
Processors: [1]u32,
};
pub const WHV_TRIGGER_TYPE = enum(i32) {
Interrupt = 0,
SynicEvent = 1,
DeviceInterrupt = 2,
};
pub const WHvTriggerTypeInterrupt = WHV_TRIGGER_TYPE.Interrupt;
pub const WHvTriggerTypeSynicEvent = WHV_TRIGGER_TYPE.SynicEvent;
pub const WHvTriggerTypeDeviceInterrupt = WHV_TRIGGER_TYPE.DeviceInterrupt;
pub const WHV_TRIGGER_PARAMETERS = extern struct {
TriggerType: WHV_TRIGGER_TYPE,
Reserved: u32,
Anonymous: extern union {
Interrupt: WHV_INTERRUPT_CONTROL,
SynicEvent: WHV_SYNIC_EVENT_PARAMETERS,
DeviceInterrupt: extern struct {
LogicalDeviceId: u64,
MsiAddress: u64,
MsiData: u32,
Reserved: u32,
},
},
};
pub const WHV_VIRTUAL_PROCESSOR_PROPERTY_CODE = enum(i32) {
e = 0,
};
pub const WHvVirtualProcessorPropertyCodeNumaNode = WHV_VIRTUAL_PROCESSOR_PROPERTY_CODE.e;
pub const WHV_VIRTUAL_PROCESSOR_PROPERTY = extern struct {
PropertyCode: WHV_VIRTUAL_PROCESSOR_PROPERTY_CODE,
Reserved: u32,
Anonymous: extern union {
NumaNode: u16,
Padding: u64,
},
};
pub const WHV_NOTIFICATION_PORT_TYPE = enum(i32) {
Event = 2,
Doorbell = 4,
};
pub const WHvNotificationPortTypeEvent = WHV_NOTIFICATION_PORT_TYPE.Event;
pub const WHvNotificationPortTypeDoorbell = WHV_NOTIFICATION_PORT_TYPE.Doorbell;
pub const WHV_NOTIFICATION_PORT_PARAMETERS = extern struct {
NotificationPortType: WHV_NOTIFICATION_PORT_TYPE,
Reserved: u32,
Anonymous: extern union {
Doorbell: WHV_DOORBELL_MATCH_DATA,
Event: extern struct {
ConnectionId: u32,
},
},
};
pub const WHV_NOTIFICATION_PORT_PROPERTY_CODE = enum(i32) {
Vp = 1,
Duration = 5,
};
pub const WHvNotificationPortPropertyPreferredTargetVp = WHV_NOTIFICATION_PORT_PROPERTY_CODE.Vp;
pub const WHvNotificationPortPropertyPreferredTargetDuration = WHV_NOTIFICATION_PORT_PROPERTY_CODE.Duration;
pub const WHV_EMULATOR_STATUS = extern union {
Anonymous: extern struct {
_bitfield: u32,
},
AsUINT32: u32,
};
pub const WHV_EMULATOR_MEMORY_ACCESS_INFO = extern struct {
GpaAddress: u64,
Direction: u8,
AccessSize: u8,
Data: [8]u8,
};
pub const WHV_EMULATOR_IO_ACCESS_INFO = extern struct {
Direction: u8,
Port: u16,
AccessSize: u16,
Data: u32,
};
pub const WHV_EMULATOR_IO_PORT_CALLBACK = switch (@import("builtin").zig_backend) {
.stage1 => fn(
Context: ?*anyopaque,
IoAccess: ?*WHV_EMULATOR_IO_ACCESS_INFO,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
Context: ?*anyopaque,
IoAccess: ?*WHV_EMULATOR_IO_ACCESS_INFO,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const WHV_EMULATOR_MEMORY_CALLBACK = switch (@import("builtin").zig_backend) {
.stage1 => fn(
Context: ?*anyopaque,
MemoryAccess: ?*WHV_EMULATOR_MEMORY_ACCESS_INFO,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
Context: ?*anyopaque,
MemoryAccess: ?*WHV_EMULATOR_MEMORY_ACCESS_INFO,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const WHV_EMULATOR_GET_VIRTUAL_PROCESSOR_REGISTERS_CALLBACK = switch (@import("builtin").zig_backend) {
.stage1 => fn(
Context: ?*anyopaque,
RegisterNames: [*]const WHV_REGISTER_NAME,
RegisterCount: u32,
RegisterValues: [*]WHV_REGISTER_VALUE,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
Context: ?*anyopaque,
RegisterNames: [*]const WHV_REGISTER_NAME,
RegisterCount: u32,
RegisterValues: [*]WHV_REGISTER_VALUE,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const WHV_EMULATOR_SET_VIRTUAL_PROCESSOR_REGISTERS_CALLBACK = switch (@import("builtin").zig_backend) {
.stage1 => fn(
Context: ?*anyopaque,
RegisterNames: [*]const WHV_REGISTER_NAME,
RegisterCount: u32,
RegisterValues: [*]const WHV_REGISTER_VALUE,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
Context: ?*anyopaque,
RegisterNames: [*]const WHV_REGISTER_NAME,
RegisterCount: u32,
RegisterValues: [*]const WHV_REGISTER_VALUE,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const WHV_EMULATOR_TRANSLATE_GVA_PAGE_CALLBACK = switch (@import("builtin").zig_backend) {
.stage1 => fn(
Context: ?*anyopaque,
Gva: u64,
TranslateFlags: WHV_TRANSLATE_GVA_FLAGS,
TranslationResult: ?*WHV_TRANSLATE_GVA_RESULT_CODE,
Gpa: ?*u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
Context: ?*anyopaque,
Gva: u64,
TranslateFlags: WHV_TRANSLATE_GVA_FLAGS,
TranslationResult: ?*WHV_TRANSLATE_GVA_RESULT_CODE,
Gpa: ?*u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const WHV_EMULATOR_CALLBACKS = extern struct {
Size: u32,
Reserved: u32,
WHvEmulatorIoPortCallback: ?WHV_EMULATOR_IO_PORT_CALLBACK,
WHvEmulatorMemoryCallback: ?WHV_EMULATOR_MEMORY_CALLBACK,
WHvEmulatorGetVirtualProcessorRegisters: ?WHV_EMULATOR_GET_VIRTUAL_PROCESSOR_REGISTERS_CALLBACK,
WHvEmulatorSetVirtualProcessorRegisters: ?WHV_EMULATOR_SET_VIRTUAL_PROCESSOR_REGISTERS_CALLBACK,
WHvEmulatorTranslateGvaPage: ?WHV_EMULATOR_TRANSLATE_GVA_PAGE_CALLBACK,
};
pub const SOCKADDR_HV = extern struct {
Family: u16,
Reserved: u16,
VmId: Guid,
ServiceId: Guid,
};
pub const HVSOCKET_ADDRESS_INFO = extern struct {
SystemId: Guid,
VirtualMachineId: Guid,
SiloId: Guid,
Flags: u32,
};
pub const VM_GENCOUNTER = extern struct {
GenerationCount: u64,
GenerationCountHigh: u64,
};
pub const HDV_DEVICE_TYPE = enum(i32) {
Undefined = 0,
PCI = 1,
};
pub const HdvDeviceTypeUndefined = HDV_DEVICE_TYPE.Undefined;
pub const HdvDeviceTypePCI = HDV_DEVICE_TYPE.PCI;
pub const HDV_PCI_PNP_ID = extern struct {
VendorID: u16,
DeviceID: u16,
RevisionID: u8,
ProgIf: u8,
SubClass: u8,
BaseClass: u8,
SubVendorID: u16,
SubSystemID: u16,
};
pub const HDV_PCI_BAR_SELECTOR = enum(i32) {
@"0" = 0,
@"1" = 1,
@"2" = 2,
@"3" = 3,
@"4" = 4,
@"5" = 5,
};
pub const HDV_PCI_BAR0 = HDV_PCI_BAR_SELECTOR.@"0";
pub const HDV_PCI_BAR1 = HDV_PCI_BAR_SELECTOR.@"1";
pub const HDV_PCI_BAR2 = HDV_PCI_BAR_SELECTOR.@"2";
pub const HDV_PCI_BAR3 = HDV_PCI_BAR_SELECTOR.@"3";
pub const HDV_PCI_BAR4 = HDV_PCI_BAR_SELECTOR.@"4";
pub const HDV_PCI_BAR5 = HDV_PCI_BAR_SELECTOR.@"5";
pub const HDV_DOORBELL_FLAGS = enum(i32) {
SIZE_ANY = 0,
SIZE_BYTE = 1,
SIZE_WORD = 2,
SIZE_DWORD = 3,
SIZE_QWORD = 4,
ANY_VALUE = -2147483648,
};
pub const HDV_DOORBELL_FLAG_TRIGGER_SIZE_ANY = HDV_DOORBELL_FLAGS.SIZE_ANY;
pub const HDV_DOORBELL_FLAG_TRIGGER_SIZE_BYTE = HDV_DOORBELL_FLAGS.SIZE_BYTE;
pub const HDV_DOORBELL_FLAG_TRIGGER_SIZE_WORD = HDV_DOORBELL_FLAGS.SIZE_WORD;
pub const HDV_DOORBELL_FLAG_TRIGGER_SIZE_DWORD = HDV_DOORBELL_FLAGS.SIZE_DWORD;
pub const HDV_DOORBELL_FLAG_TRIGGER_SIZE_QWORD = HDV_DOORBELL_FLAGS.SIZE_QWORD;
pub const HDV_DOORBELL_FLAG_TRIGGER_ANY_VALUE = HDV_DOORBELL_FLAGS.ANY_VALUE;
pub const HDV_MMIO_MAPPING_FLAGS = enum(u32) {
None = 0,
Writeable = 1,
Executable = 2,
_,
pub fn initFlags(o: struct {
None: u1 = 0,
Writeable: u1 = 0,
Executable: u1 = 0,
}) HDV_MMIO_MAPPING_FLAGS {
return @as(HDV_MMIO_MAPPING_FLAGS, @enumFromInt(
(if (o.None == 1) @intFromEnum(HDV_MMIO_MAPPING_FLAGS.None) else 0)
| (if (o.Writeable == 1) @intFromEnum(HDV_MMIO_MAPPING_FLAGS.Writeable) else 0)
| (if (o.Executable == 1) @intFromEnum(HDV_MMIO_MAPPING_FLAGS.Executable) else 0)
));
}
};
pub const HdvMmioMappingFlagNone = HDV_MMIO_MAPPING_FLAGS.None;
pub const HdvMmioMappingFlagWriteable = HDV_MMIO_MAPPING_FLAGS.Writeable;
pub const HdvMmioMappingFlagExecutable = HDV_MMIO_MAPPING_FLAGS.Executable;
pub const HDV_PCI_DEVICE_INITIALIZE = switch (@import("builtin").zig_backend) {
.stage1 => fn(
deviceContext: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
deviceContext: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const HDV_PCI_DEVICE_TEARDOWN = switch (@import("builtin").zig_backend) {
.stage1 => fn(
deviceContext: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void,
else => *const fn(
deviceContext: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void,
} ;
pub const HDV_PCI_DEVICE_SET_CONFIGURATION = switch (@import("builtin").zig_backend) {
.stage1 => fn(
deviceContext: ?*anyopaque,
configurationValueCount: u32,
configurationValues: [*]const ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
deviceContext: ?*anyopaque,
configurationValueCount: u32,
configurationValues: [*]const ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const HDV_PCI_DEVICE_GET_DETAILS = switch (@import("builtin").zig_backend) {
.stage1 => fn(
deviceContext: ?*anyopaque,
pnpId: ?*HDV_PCI_PNP_ID,
probedBarsCount: u32,
probedBars: [*]u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
deviceContext: ?*anyopaque,
pnpId: ?*HDV_PCI_PNP_ID,
probedBarsCount: u32,
probedBars: [*]u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const HDV_PCI_DEVICE_START = switch (@import("builtin").zig_backend) {
.stage1 => fn(
deviceContext: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
deviceContext: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const HDV_PCI_DEVICE_STOP = switch (@import("builtin").zig_backend) {
.stage1 => fn(
deviceContext: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void,
else => *const fn(
deviceContext: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void,
} ;
pub const HDV_PCI_READ_CONFIG_SPACE = switch (@import("builtin").zig_backend) {
.stage1 => fn(
deviceContext: ?*anyopaque,
offset: u32,
value: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
deviceContext: ?*anyopaque,
offset: u32,
value: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const HDV_PCI_WRITE_CONFIG_SPACE = switch (@import("builtin").zig_backend) {
.stage1 => fn(
deviceContext: ?*anyopaque,
offset: u32,
value: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
deviceContext: ?*anyopaque,
offset: u32,
value: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const HDV_PCI_READ_INTERCEPTED_MEMORY = switch (@import("builtin").zig_backend) {
.stage1 => fn(
deviceContext: ?*anyopaque,
barIndex: HDV_PCI_BAR_SELECTOR,
offset: u64,
length: u64,
value: [*:0]u8,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
deviceContext: ?*anyopaque,
barIndex: HDV_PCI_BAR_SELECTOR,
offset: u64,
length: u64,
value: [*:0]u8,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const HDV_PCI_WRITE_INTERCEPTED_MEMORY = switch (@import("builtin").zig_backend) {
.stage1 => fn(
deviceContext: ?*anyopaque,
barIndex: HDV_PCI_BAR_SELECTOR,
offset: u64,
length: u64,
value: [*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
else => *const fn(
deviceContext: ?*anyopaque,
barIndex: HDV_PCI_BAR_SELECTOR,
offset: u64,
length: u64,
value: [*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) HRESULT,
} ;
pub const HDV_PCI_INTERFACE_VERSION = enum(i32) {
Invalid = 0,
@"1" = 1,
};
pub const HdvPciDeviceInterfaceVersionInvalid = HDV_PCI_INTERFACE_VERSION.Invalid;
pub const HdvPciDeviceInterfaceVersion1 = HDV_PCI_INTERFACE_VERSION.@"1";
pub const HDV_PCI_DEVICE_INTERFACE = extern struct {
Version: HDV_PCI_INTERFACE_VERSION,
Initialize: ?HDV_PCI_DEVICE_INITIALIZE,
Teardown: ?HDV_PCI_DEVICE_TEARDOWN,
SetConfiguration: ?HDV_PCI_DEVICE_SET_CONFIGURATION,
GetDetails: ?HDV_PCI_DEVICE_GET_DETAILS,
Start: ?HDV_PCI_DEVICE_START,
Stop: ?HDV_PCI_DEVICE_STOP,
ReadConfigSpace: ?HDV_PCI_READ_CONFIG_SPACE,
WriteConfigSpace: ?HDV_PCI_WRITE_CONFIG_SPACE,
ReadInterceptedMemory: ?HDV_PCI_READ_INTERCEPTED_MEMORY,
WriteInterceptedMemory: ?HDV_PCI_WRITE_INTERCEPTED_MEMORY,
};
pub const PAGING_MODE = enum(i32) {
Invalid = 0,
NonPaged = 1,
@"32Bit" = 2,
Pae = 3,
Long = 4,
Armv8 = 5,
};
pub const Paging_Invalid = PAGING_MODE.Invalid;
pub const Paging_NonPaged = PAGING_MODE.NonPaged;
pub const Paging_32Bit = PAGING_MODE.@"32Bit";
pub const Paging_Pae = PAGING_MODE.Pae;
pub const Paging_Long = PAGING_MODE.Long;
pub const Paging_Armv8 = PAGING_MODE.Armv8;
pub const GPA_MEMORY_CHUNK = extern struct {
GuestPhysicalStartPageIndex: u64,
PageCount: u64,
};
pub const VIRTUAL_PROCESSOR_ARCH = enum(i32) {
Unknown = 0,
x86 = 1,
x64 = 2,
Armv8 = 3,
};
pub const Arch_Unknown = VIRTUAL_PROCESSOR_ARCH.Unknown;
pub const Arch_x86 = VIRTUAL_PROCESSOR_ARCH.x86;
pub const Arch_x64 = VIRTUAL_PROCESSOR_ARCH.x64;
pub const Arch_Armv8 = VIRTUAL_PROCESSOR_ARCH.Armv8;
pub const VIRTUAL_PROCESSOR_VENDOR = enum(i32) {
Unknown = 0,
Amd = 1,
Intel = 2,
Hygon = 3,
Arm = 4,
};
pub const ProcessorVendor_Unknown = VIRTUAL_PROCESSOR_VENDOR.Unknown;
pub const ProcessorVendor_Amd = VIRTUAL_PROCESSOR_VENDOR.Amd;
pub const ProcessorVendor_Intel = VIRTUAL_PROCESSOR_VENDOR.Intel;
pub const ProcessorVendor_Hygon = VIRTUAL_PROCESSOR_VENDOR.Hygon;
pub const ProcessorVendor_Arm = VIRTUAL_PROCESSOR_VENDOR.Arm;
pub const GUEST_OS_VENDOR = enum(i32) {
Undefined = 0,
Microsoft = 1,
HPE = 2,
LANCOM = 512,
};
pub const GuestOsVendorUndefined = GUEST_OS_VENDOR.Undefined;
pub const GuestOsVendorMicrosoft = GUEST_OS_VENDOR.Microsoft;
pub const GuestOsVendorHPE = GUEST_OS_VENDOR.HPE;
pub const GuestOsVendorLANCOM = GUEST_OS_VENDOR.LANCOM;
pub const GUEST_OS_MICROSOFT_IDS = enum(i32) {
Undefined = 0,
MSDOS = 1,
Windows3x = 2,
Windows9x = 3,
WindowsNT = 4,
WindowsCE = 5,
};
pub const GuestOsMicrosoftUndefined = GUEST_OS_MICROSOFT_IDS.Undefined;
pub const GuestOsMicrosoftMSDOS = GUEST_OS_MICROSOFT_IDS.MSDOS;
pub const GuestOsMicrosoftWindows3x = GUEST_OS_MICROSOFT_IDS.Windows3x;
pub const GuestOsMicrosoftWindows9x = GUEST_OS_MICROSOFT_IDS.Windows9x;
pub const GuestOsMicrosoftWindowsNT = GUEST_OS_MICROSOFT_IDS.WindowsNT;
pub const GuestOsMicrosoftWindowsCE = GUEST_OS_MICROSOFT_IDS.WindowsCE;
pub const GUEST_OS_OPENSOURCE_IDS = enum(i32) {
Undefined = 0,
Linux = 1,
FreeBSD = 2,
Xen = 3,
Illumos = 4,
};
pub const GuestOsOpenSourceUndefined = GUEST_OS_OPENSOURCE_IDS.Undefined;
pub const GuestOsOpenSourceLinux = GUEST_OS_OPENSOURCE_IDS.Linux;
pub const GuestOsOpenSourceFreeBSD = GUEST_OS_OPENSOURCE_IDS.FreeBSD;
pub const GuestOsOpenSourceXen = GUEST_OS_OPENSOURCE_IDS.Xen;
pub const GuestOsOpenSourceIllumos = GUEST_OS_OPENSOURCE_IDS.Illumos;
pub const GUEST_OS_INFO = extern union {
AsUINT64: u64,
ClosedSource: extern struct {
_bitfield: u64,
},
OpenSource: extern struct {
_bitfield: u64,
},
};
pub const REGISTER_ID = enum(i32) {
X64_RegisterRax = 0,
X64_RegisterRcx = 1,
X64_RegisterRdx = 2,
X64_RegisterRbx = 3,
X64_RegisterRsp = 4,
X64_RegisterRbp = 5,
X64_RegisterRsi = 6,
X64_RegisterRdi = 7,
X64_RegisterR8 = 8,
X64_RegisterR9 = 9,
X64_RegisterR10 = 10,
X64_RegisterR11 = 11,
X64_RegisterR12 = 12,
X64_RegisterR13 = 13,
X64_RegisterR14 = 14,
X64_RegisterR15 = 15,
X64_RegisterRip = 16,
X64_RegisterRFlags = 17,
X64_RegisterXmm0 = 18,
X64_RegisterXmm1 = 19,
X64_RegisterXmm2 = 20,
X64_RegisterXmm3 = 21,
X64_RegisterXmm4 = 22,
X64_RegisterXmm5 = 23,
X64_RegisterXmm6 = 24,
X64_RegisterXmm7 = 25,
X64_RegisterXmm8 = 26,
X64_RegisterXmm9 = 27,
X64_RegisterXmm10 = 28,
X64_RegisterXmm11 = 29,
X64_RegisterXmm12 = 30,
X64_RegisterXmm13 = 31,
X64_RegisterXmm14 = 32,
X64_RegisterXmm15 = 33,
X64_RegisterFpMmx0 = 34,
X64_RegisterFpMmx1 = 35,
X64_RegisterFpMmx2 = 36,
X64_RegisterFpMmx3 = 37,
X64_RegisterFpMmx4 = 38,
X64_RegisterFpMmx5 = 39,
X64_RegisterFpMmx6 = 40,
X64_RegisterFpMmx7 = 41,
X64_RegisterFpControlStatus = 42,
X64_RegisterXmmControlStatus = 43,
X64_RegisterCr0 = 44,
X64_RegisterCr2 = 45,
X64_RegisterCr3 = 46,
X64_RegisterCr4 = 47,
X64_RegisterCr8 = 48,
X64_RegisterEfer = 49,
X64_RegisterDr0 = 50,
X64_RegisterDr1 = 51,
X64_RegisterDr2 = 52,
X64_RegisterDr3 = 53,
X64_RegisterDr6 = 54,
X64_RegisterDr7 = 55,
X64_RegisterEs = 56,
X64_RegisterCs = 57,
X64_RegisterSs = 58,
X64_RegisterDs = 59,
X64_RegisterFs = 60,
X64_RegisterGs = 61,
X64_RegisterLdtr = 62,
X64_RegisterTr = 63,
X64_RegisterIdtr = 64,
X64_RegisterGdtr = 65,
X64_RegisterMax = 66,
ARM64_RegisterX0 = 67,
ARM64_RegisterX1 = 68,
ARM64_RegisterX2 = 69,
ARM64_RegisterX3 = 70,
ARM64_RegisterX4 = 71,
ARM64_RegisterX5 = 72,
ARM64_RegisterX6 = 73,
ARM64_RegisterX7 = 74,
ARM64_RegisterX8 = 75,
ARM64_RegisterX9 = 76,
ARM64_RegisterX10 = 77,
ARM64_RegisterX11 = 78,
ARM64_RegisterX12 = 79,
ARM64_RegisterX13 = 80,
ARM64_RegisterX14 = 81,
ARM64_RegisterX15 = 82,
ARM64_RegisterX16 = 83,
ARM64_RegisterX17 = 84,
ARM64_RegisterX18 = 85,
ARM64_RegisterX19 = 86,
ARM64_RegisterX20 = 87,
ARM64_RegisterX21 = 88,
ARM64_RegisterX22 = 89,
ARM64_RegisterX23 = 90,
ARM64_RegisterX24 = 91,
ARM64_RegisterX25 = 92,
ARM64_RegisterX26 = 93,
ARM64_RegisterX27 = 94,
ARM64_RegisterX28 = 95,
ARM64_RegisterXFp = 96,
ARM64_RegisterXLr = 97,
ARM64_RegisterPc = 98,
ARM64_RegisterSpEl0 = 99,
ARM64_RegisterSpEl1 = 100,
ARM64_RegisterCpsr = 101,
ARM64_RegisterQ0 = 102,
ARM64_RegisterQ1 = 103,
ARM64_RegisterQ2 = 104,
ARM64_RegisterQ3 = 105,
ARM64_RegisterQ4 = 106,
ARM64_RegisterQ5 = 107,
ARM64_RegisterQ6 = 108,
ARM64_RegisterQ7 = 109,
ARM64_RegisterQ8 = 110,
ARM64_RegisterQ9 = 111,
ARM64_RegisterQ10 = 112,
ARM64_RegisterQ11 = 113,
ARM64_RegisterQ12 = 114,
ARM64_RegisterQ13 = 115,
ARM64_RegisterQ14 = 116,
ARM64_RegisterQ15 = 117,
ARM64_RegisterQ16 = 118,
ARM64_RegisterQ17 = 119,
ARM64_RegisterQ18 = 120,
ARM64_RegisterQ19 = 121,
ARM64_RegisterQ20 = 122,
ARM64_RegisterQ21 = 123,
ARM64_RegisterQ22 = 124,
ARM64_RegisterQ23 = 125,
ARM64_RegisterQ24 = 126,
ARM64_RegisterQ25 = 127,
ARM64_RegisterQ26 = 128,
ARM64_RegisterQ27 = 129,
ARM64_RegisterQ28 = 130,
ARM64_RegisterQ29 = 131,
ARM64_RegisterQ30 = 132,
ARM64_RegisterQ31 = 133,
ARM64_RegisterFpStatus = 134,
ARM64_RegisterFpControl = 135,
ARM64_RegisterEsrEl1 = 136,
ARM64_RegisterSpsrEl1 = 137,
ARM64_RegisterFarEl1 = 138,
ARM64_RegisterParEl1 = 139,
ARM64_RegisterElrEl1 = 140,
ARM64_RegisterTtbr0El1 = 141,
ARM64_RegisterTtbr1El1 = 142,
ARM64_RegisterVbarEl1 = 143,
ARM64_RegisterSctlrEl1 = 144,
ARM64_RegisterActlrEl1 = 145,
ARM64_RegisterTcrEl1 = 146,
ARM64_RegisterMairEl1 = 147,
ARM64_RegisterAmairEl1 = 148,
ARM64_RegisterTpidrEl0 = 149,
ARM64_RegisterTpidrroEl0 = 150,
ARM64_RegisterTpidrEl1 = 151,
ARM64_RegisterContextIdrEl1 = 152,
ARM64_RegisterCpacrEl1 = 153,
ARM64_RegisterCsselrEl1 = 154,
ARM64_RegisterCntkctlEl1 = 155,
ARM64_RegisterCntvCvalEl0 = 156,
ARM64_RegisterCntvCtlEl0 = 157,
ARM64_RegisterMax = 158,
};
pub const X64_RegisterRax = REGISTER_ID.X64_RegisterRax;
pub const X64_RegisterRcx = REGISTER_ID.X64_RegisterRcx;
pub const X64_RegisterRdx = REGISTER_ID.X64_RegisterRdx;
pub const X64_RegisterRbx = REGISTER_ID.X64_RegisterRbx;
pub const X64_RegisterRsp = REGISTER_ID.X64_RegisterRsp;
pub const X64_RegisterRbp = REGISTER_ID.X64_RegisterRbp;
pub const X64_RegisterRsi = REGISTER_ID.X64_RegisterRsi;
pub const X64_RegisterRdi = REGISTER_ID.X64_RegisterRdi;
pub const X64_RegisterR8 = REGISTER_ID.X64_RegisterR8;
pub const X64_RegisterR9 = REGISTER_ID.X64_RegisterR9;
pub const X64_RegisterR10 = REGISTER_ID.X64_RegisterR10;
pub const X64_RegisterR11 = REGISTER_ID.X64_RegisterR11;
pub const X64_RegisterR12 = REGISTER_ID.X64_RegisterR12;
pub const X64_RegisterR13 = REGISTER_ID.X64_RegisterR13;
pub const X64_RegisterR14 = REGISTER_ID.X64_RegisterR14;
pub const X64_RegisterR15 = REGISTER_ID.X64_RegisterR15;
pub const X64_RegisterRip = REGISTER_ID.X64_RegisterRip;
pub const X64_RegisterRFlags = REGISTER_ID.X64_RegisterRFlags;
pub const X64_RegisterXmm0 = REGISTER_ID.X64_RegisterXmm0;
pub const X64_RegisterXmm1 = REGISTER_ID.X64_RegisterXmm1;
pub const X64_RegisterXmm2 = REGISTER_ID.X64_RegisterXmm2;
pub const X64_RegisterXmm3 = REGISTER_ID.X64_RegisterXmm3;
pub const X64_RegisterXmm4 = REGISTER_ID.X64_RegisterXmm4;
pub const X64_RegisterXmm5 = REGISTER_ID.X64_RegisterXmm5;
pub const X64_RegisterXmm6 = REGISTER_ID.X64_RegisterXmm6;
pub const X64_RegisterXmm7 = REGISTER_ID.X64_RegisterXmm7;
pub const X64_RegisterXmm8 = REGISTER_ID.X64_RegisterXmm8;
pub const X64_RegisterXmm9 = REGISTER_ID.X64_RegisterXmm9;
pub const X64_RegisterXmm10 = REGISTER_ID.X64_RegisterXmm10;
pub const X64_RegisterXmm11 = REGISTER_ID.X64_RegisterXmm11;
pub const X64_RegisterXmm12 = REGISTER_ID.X64_RegisterXmm12;
pub const X64_RegisterXmm13 = REGISTER_ID.X64_RegisterXmm13;
pub const X64_RegisterXmm14 = REGISTER_ID.X64_RegisterXmm14;
pub const X64_RegisterXmm15 = REGISTER_ID.X64_RegisterXmm15;
pub const X64_RegisterFpMmx0 = REGISTER_ID.X64_RegisterFpMmx0;
pub const X64_RegisterFpMmx1 = REGISTER_ID.X64_RegisterFpMmx1;
pub const X64_RegisterFpMmx2 = REGISTER_ID.X64_RegisterFpMmx2;
pub const X64_RegisterFpMmx3 = REGISTER_ID.X64_RegisterFpMmx3;
pub const X64_RegisterFpMmx4 = REGISTER_ID.X64_RegisterFpMmx4;
pub const X64_RegisterFpMmx5 = REGISTER_ID.X64_RegisterFpMmx5;
pub const X64_RegisterFpMmx6 = REGISTER_ID.X64_RegisterFpMmx6;
pub const X64_RegisterFpMmx7 = REGISTER_ID.X64_RegisterFpMmx7;
pub const X64_RegisterFpControlStatus = REGISTER_ID.X64_RegisterFpControlStatus;
pub const X64_RegisterXmmControlStatus = REGISTER_ID.X64_RegisterXmmControlStatus;
pub const X64_RegisterCr0 = REGISTER_ID.X64_RegisterCr0;
pub const X64_RegisterCr2 = REGISTER_ID.X64_RegisterCr2;
pub const X64_RegisterCr3 = REGISTER_ID.X64_RegisterCr3;
pub const X64_RegisterCr4 = REGISTER_ID.X64_RegisterCr4;
pub const X64_RegisterCr8 = REGISTER_ID.X64_RegisterCr8;
pub const X64_RegisterEfer = REGISTER_ID.X64_RegisterEfer;
pub const X64_RegisterDr0 = REGISTER_ID.X64_RegisterDr0;
pub const X64_RegisterDr1 = REGISTER_ID.X64_RegisterDr1;
pub const X64_RegisterDr2 = REGISTER_ID.X64_RegisterDr2;
pub const X64_RegisterDr3 = REGISTER_ID.X64_RegisterDr3;
pub const X64_RegisterDr6 = REGISTER_ID.X64_RegisterDr6;
pub const X64_RegisterDr7 = REGISTER_ID.X64_RegisterDr7;
pub const X64_RegisterEs = REGISTER_ID.X64_RegisterEs;
pub const X64_RegisterCs = REGISTER_ID.X64_RegisterCs;
pub const X64_RegisterSs = REGISTER_ID.X64_RegisterSs;
pub const X64_RegisterDs = REGISTER_ID.X64_RegisterDs;
pub const X64_RegisterFs = REGISTER_ID.X64_RegisterFs;
pub const X64_RegisterGs = REGISTER_ID.X64_RegisterGs;
pub const X64_RegisterLdtr = REGISTER_ID.X64_RegisterLdtr;
pub const X64_RegisterTr = REGISTER_ID.X64_RegisterTr;
pub const X64_RegisterIdtr = REGISTER_ID.X64_RegisterIdtr;
pub const X64_RegisterGdtr = REGISTER_ID.X64_RegisterGdtr;
pub const X64_RegisterMax = REGISTER_ID.X64_RegisterMax;
pub const ARM64_RegisterX0 = REGISTER_ID.ARM64_RegisterX0;
pub const ARM64_RegisterX1 = REGISTER_ID.ARM64_RegisterX1;
pub const ARM64_RegisterX2 = REGISTER_ID.ARM64_RegisterX2;
pub const ARM64_RegisterX3 = REGISTER_ID.ARM64_RegisterX3;
pub const ARM64_RegisterX4 = REGISTER_ID.ARM64_RegisterX4;
pub const ARM64_RegisterX5 = REGISTER_ID.ARM64_RegisterX5;
pub const ARM64_RegisterX6 = REGISTER_ID.ARM64_RegisterX6;
pub const ARM64_RegisterX7 = REGISTER_ID.ARM64_RegisterX7;
pub const ARM64_RegisterX8 = REGISTER_ID.ARM64_RegisterX8;
pub const ARM64_RegisterX9 = REGISTER_ID.ARM64_RegisterX9;
pub const ARM64_RegisterX10 = REGISTER_ID.ARM64_RegisterX10;
pub const ARM64_RegisterX11 = REGISTER_ID.ARM64_RegisterX11;
pub const ARM64_RegisterX12 = REGISTER_ID.ARM64_RegisterX12;
pub const ARM64_RegisterX13 = REGISTER_ID.ARM64_RegisterX13;
pub const ARM64_RegisterX14 = REGISTER_ID.ARM64_RegisterX14;
pub const ARM64_RegisterX15 = REGISTER_ID.ARM64_RegisterX15;
pub const ARM64_RegisterX16 = REGISTER_ID.ARM64_RegisterX16;
pub const ARM64_RegisterX17 = REGISTER_ID.ARM64_RegisterX17;
pub const ARM64_RegisterX18 = REGISTER_ID.ARM64_RegisterX18;
pub const ARM64_RegisterX19 = REGISTER_ID.ARM64_RegisterX19;
pub const ARM64_RegisterX20 = REGISTER_ID.ARM64_RegisterX20;
pub const ARM64_RegisterX21 = REGISTER_ID.ARM64_RegisterX21;
pub const ARM64_RegisterX22 = REGISTER_ID.ARM64_RegisterX22;
pub const ARM64_RegisterX23 = REGISTER_ID.ARM64_RegisterX23;
pub const ARM64_RegisterX24 = REGISTER_ID.ARM64_RegisterX24;
pub const ARM64_RegisterX25 = REGISTER_ID.ARM64_RegisterX25;
pub const ARM64_RegisterX26 = REGISTER_ID.ARM64_RegisterX26;
pub const ARM64_RegisterX27 = REGISTER_ID.ARM64_RegisterX27;
pub const ARM64_RegisterX28 = REGISTER_ID.ARM64_RegisterX28;
pub const ARM64_RegisterXFp = REGISTER_ID.ARM64_RegisterXFp;
pub const ARM64_RegisterXLr = REGISTER_ID.ARM64_RegisterXLr;
pub const ARM64_RegisterPc = REGISTER_ID.ARM64_RegisterPc;
pub const ARM64_RegisterSpEl0 = REGISTER_ID.ARM64_RegisterSpEl0;
pub const ARM64_RegisterSpEl1 = REGISTER_ID.ARM64_RegisterSpEl1;
pub const ARM64_RegisterCpsr = REGISTER_ID.ARM64_RegisterCpsr;
pub const ARM64_RegisterQ0 = REGISTER_ID.ARM64_RegisterQ0;
pub const ARM64_RegisterQ1 = REGISTER_ID.ARM64_RegisterQ1;
pub const ARM64_RegisterQ2 = REGISTER_ID.ARM64_RegisterQ2;
pub const ARM64_RegisterQ3 = REGISTER_ID.ARM64_RegisterQ3;
pub const ARM64_RegisterQ4 = REGISTER_ID.ARM64_RegisterQ4;
pub const ARM64_RegisterQ5 = REGISTER_ID.ARM64_RegisterQ5;
pub const ARM64_RegisterQ6 = REGISTER_ID.ARM64_RegisterQ6;
pub const ARM64_RegisterQ7 = REGISTER_ID.ARM64_RegisterQ7;
pub const ARM64_RegisterQ8 = REGISTER_ID.ARM64_RegisterQ8;
pub const ARM64_RegisterQ9 = REGISTER_ID.ARM64_RegisterQ9;
pub const ARM64_RegisterQ10 = REGISTER_ID.ARM64_RegisterQ10;
pub const ARM64_RegisterQ11 = REGISTER_ID.ARM64_RegisterQ11;
pub const ARM64_RegisterQ12 = REGISTER_ID.ARM64_RegisterQ12;
pub const ARM64_RegisterQ13 = REGISTER_ID.ARM64_RegisterQ13;
pub const ARM64_RegisterQ14 = REGISTER_ID.ARM64_RegisterQ14;
pub const ARM64_RegisterQ15 = REGISTER_ID.ARM64_RegisterQ15;
pub const ARM64_RegisterQ16 = REGISTER_ID.ARM64_RegisterQ16;
pub const ARM64_RegisterQ17 = REGISTER_ID.ARM64_RegisterQ17;
pub const ARM64_RegisterQ18 = REGISTER_ID.ARM64_RegisterQ18;
pub const ARM64_RegisterQ19 = REGISTER_ID.ARM64_RegisterQ19;
pub const ARM64_RegisterQ20 = REGISTER_ID.ARM64_RegisterQ20;
pub const ARM64_RegisterQ21 = REGISTER_ID.ARM64_RegisterQ21;
pub const ARM64_RegisterQ22 = REGISTER_ID.ARM64_RegisterQ22;
pub const ARM64_RegisterQ23 = REGISTER_ID.ARM64_RegisterQ23;
pub const ARM64_RegisterQ24 = REGISTER_ID.ARM64_RegisterQ24;
pub const ARM64_RegisterQ25 = REGISTER_ID.ARM64_RegisterQ25;
pub const ARM64_RegisterQ26 = REGISTER_ID.ARM64_RegisterQ26;
pub const ARM64_RegisterQ27 = REGISTER_ID.ARM64_RegisterQ27;
pub const ARM64_RegisterQ28 = REGISTER_ID.ARM64_RegisterQ28;
pub const ARM64_RegisterQ29 = REGISTER_ID.ARM64_RegisterQ29;
pub const ARM64_RegisterQ30 = REGISTER_ID.ARM64_RegisterQ30;
pub const ARM64_RegisterQ31 = REGISTER_ID.ARM64_RegisterQ31;
pub const ARM64_RegisterFpStatus = REGISTER_ID.ARM64_RegisterFpStatus;
pub const ARM64_RegisterFpControl = REGISTER_ID.ARM64_RegisterFpControl;
pub const ARM64_RegisterEsrEl1 = REGISTER_ID.ARM64_RegisterEsrEl1;
pub const ARM64_RegisterSpsrEl1 = REGISTER_ID.ARM64_RegisterSpsrEl1;
pub const ARM64_RegisterFarEl1 = REGISTER_ID.ARM64_RegisterFarEl1;
pub const ARM64_RegisterParEl1 = REGISTER_ID.ARM64_RegisterParEl1;
pub const ARM64_RegisterElrEl1 = REGISTER_ID.ARM64_RegisterElrEl1;
pub const ARM64_RegisterTtbr0El1 = REGISTER_ID.ARM64_RegisterTtbr0El1;
pub const ARM64_RegisterTtbr1El1 = REGISTER_ID.ARM64_RegisterTtbr1El1;
pub const ARM64_RegisterVbarEl1 = REGISTER_ID.ARM64_RegisterVbarEl1;
pub const ARM64_RegisterSctlrEl1 = REGISTER_ID.ARM64_RegisterSctlrEl1;
pub const ARM64_RegisterActlrEl1 = REGISTER_ID.ARM64_RegisterActlrEl1;
pub const ARM64_RegisterTcrEl1 = REGISTER_ID.ARM64_RegisterTcrEl1;
pub const ARM64_RegisterMairEl1 = REGISTER_ID.ARM64_RegisterMairEl1;
pub const ARM64_RegisterAmairEl1 = REGISTER_ID.ARM64_RegisterAmairEl1;
pub const ARM64_RegisterTpidrEl0 = REGISTER_ID.ARM64_RegisterTpidrEl0;
pub const ARM64_RegisterTpidrroEl0 = REGISTER_ID.ARM64_RegisterTpidrroEl0;
pub const ARM64_RegisterTpidrEl1 = REGISTER_ID.ARM64_RegisterTpidrEl1;
pub const ARM64_RegisterContextIdrEl1 = REGISTER_ID.ARM64_RegisterContextIdrEl1;
pub const ARM64_RegisterCpacrEl1 = REGISTER_ID.ARM64_RegisterCpacrEl1;
pub const ARM64_RegisterCsselrEl1 = REGISTER_ID.ARM64_RegisterCsselrEl1;
pub const ARM64_RegisterCntkctlEl1 = REGISTER_ID.ARM64_RegisterCntkctlEl1;
pub const ARM64_RegisterCntvCvalEl0 = REGISTER_ID.ARM64_RegisterCntvCvalEl0;
pub const ARM64_RegisterCntvCtlEl0 = REGISTER_ID.ARM64_RegisterCntvCtlEl0;
pub const ARM64_RegisterMax = REGISTER_ID.ARM64_RegisterMax;
pub const VIRTUAL_PROCESSOR_REGISTER = extern union {
Reg64: u64,
Reg32: u32,
Reg16: u16,
Reg8: u8,
Reg128: extern struct {
Low64: u64,
High64: u64,
},
X64: extern union {
Segment: extern struct {
Base: u64,
Limit: u32,
Selector: u16,
Anonymous: extern union {
Attributes: u16,
Anonymous: extern struct {
_bitfield: u16,
},
},
},
Table: extern struct {
Limit: u16,
Base: u64,
},
FpControlStatus: extern struct {
FpControl: u16,
FpStatus: u16,
FpTag: u8,
Reserved: u8,
LastFpOp: u16,
Anonymous: extern union {
LastFpRip: u64,
Anonymous: extern struct {
LastFpEip: u32,
LastFpCs: u16,
},
},
},
XmmControlStatus: extern struct {
Anonymous: extern union {
LastFpRdp: u64,
Anonymous: extern struct {
LastFpDp: u32,
LastFpDs: u16,
},
},
XmmStatusControl: u32,
XmmStatusControlMask: u32,
},
},
};
pub const DOS_IMAGE_INFO = extern struct {
PdbName: ?[*:0]const u8,
ImageBaseAddress: u64,
ImageSize: u32,
Timestamp: u32,
};
pub const GUEST_SYMBOLS_PROVIDER_DEBUG_INFO_CALLBACK = switch (@import("builtin").zig_backend) {
.stage1 => fn(
InfoMessage: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) void,
else => *const fn(
InfoMessage: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) void,
} ;
pub const FOUND_IMAGE_CALLBACK = switch (@import("builtin").zig_backend) {
.stage1 => fn(
Context: ?*anyopaque,
ImageInfo: ?*DOS_IMAGE_INFO,
) callconv(@import("std").os.windows.WINAPI) BOOL,
else => *const fn(
Context: ?*anyopaque,
ImageInfo: ?*DOS_IMAGE_INFO,
) callconv(@import("std").os.windows.WINAPI) BOOL,
} ;
pub const MODULE_INFO = extern struct {
ProcessImageName: ?[*:0]const u8,
Image: DOS_IMAGE_INFO,
};
//--------------------------------------------------------------------------------
// Section: Functions (125)
//--------------------------------------------------------------------------------
pub extern "winhvplatform" fn WHvGetCapability(
CapabilityCode: WHV_CAPABILITY_CODE,
// TODO: what to do with BytesParamIndex 2?
CapabilityBuffer: ?*anyopaque,
CapabilityBufferSizeInBytes: u32,
WrittenSizeInBytes: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvCreatePartition(
Partition: ?*WHV_PARTITION_HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvSetupPartition(
Partition: WHV_PARTITION_HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvResetPartition(
Partition: WHV_PARTITION_HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvDeletePartition(
Partition: WHV_PARTITION_HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetPartitionProperty(
Partition: WHV_PARTITION_HANDLE,
PropertyCode: WHV_PARTITION_PROPERTY_CODE,
// TODO: what to do with BytesParamIndex 3?
PropertyBuffer: ?*anyopaque,
PropertyBufferSizeInBytes: u32,
WrittenSizeInBytes: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvSetPartitionProperty(
Partition: WHV_PARTITION_HANDLE,
PropertyCode: WHV_PARTITION_PROPERTY_CODE,
// TODO: what to do with BytesParamIndex 3?
PropertyBuffer: ?*const anyopaque,
PropertyBufferSizeInBytes: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvSuspendPartitionTime(
Partition: WHV_PARTITION_HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvResumePartitionTime(
Partition: WHV_PARTITION_HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvMapGpaRange(
Partition: WHV_PARTITION_HANDLE,
SourceAddress: ?*anyopaque,
GuestAddress: u64,
SizeInBytes: u64,
Flags: WHV_MAP_GPA_RANGE_FLAGS,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvMapGpaRange2(
Partition: WHV_PARTITION_HANDLE,
Process: ?HANDLE,
SourceAddress: ?*anyopaque,
GuestAddress: u64,
SizeInBytes: u64,
Flags: WHV_MAP_GPA_RANGE_FLAGS,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvUnmapGpaRange(
Partition: WHV_PARTITION_HANDLE,
GuestAddress: u64,
SizeInBytes: u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvTranslateGva(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
Gva: u64,
TranslateFlags: WHV_TRANSLATE_GVA_FLAGS,
TranslationResult: ?*WHV_TRANSLATE_GVA_RESULT,
Gpa: ?*u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvCreateVirtualProcessor(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
Flags: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvCreateVirtualProcessor2(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
Properties: [*]const WHV_VIRTUAL_PROCESSOR_PROPERTY,
PropertyCount: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvDeleteVirtualProcessor(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvRunVirtualProcessor(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
// TODO: what to do with BytesParamIndex 3?
ExitContext: ?*anyopaque,
ExitContextSizeInBytes: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvCancelRunVirtualProcessor(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
Flags: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetVirtualProcessorRegisters(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
RegisterNames: [*]const WHV_REGISTER_NAME,
RegisterCount: u32,
RegisterValues: [*]WHV_REGISTER_VALUE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvSetVirtualProcessorRegisters(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
RegisterNames: [*]const WHV_REGISTER_NAME,
RegisterCount: u32,
RegisterValues: [*]const WHV_REGISTER_VALUE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetVirtualProcessorInterruptControllerState(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
// TODO: what to do with BytesParamIndex 3?
State: ?*anyopaque,
StateSize: u32,
WrittenSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvSetVirtualProcessorInterruptControllerState(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
// TODO: what to do with BytesParamIndex 3?
State: ?*const anyopaque,
StateSize: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvRequestInterrupt(
Partition: WHV_PARTITION_HANDLE,
Interrupt: ?*const WHV_INTERRUPT_CONTROL,
InterruptControlSize: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetVirtualProcessorXsaveState(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
// TODO: what to do with BytesParamIndex 3?
Buffer: ?*anyopaque,
BufferSizeInBytes: u32,
BytesWritten: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvSetVirtualProcessorXsaveState(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
// TODO: what to do with BytesParamIndex 3?
Buffer: ?*const anyopaque,
BufferSizeInBytes: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvQueryGpaRangeDirtyBitmap(
Partition: WHV_PARTITION_HANDLE,
GuestAddress: u64,
RangeSizeInBytes: u64,
// TODO: what to do with BytesParamIndex 4?
Bitmap: ?*u64,
BitmapSizeInBytes: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetPartitionCounters(
Partition: WHV_PARTITION_HANDLE,
CounterSet: WHV_PARTITION_COUNTER_SET,
// TODO: what to do with BytesParamIndex 3?
Buffer: ?*anyopaque,
BufferSizeInBytes: u32,
BytesWritten: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetVirtualProcessorCounters(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
CounterSet: WHV_PROCESSOR_COUNTER_SET,
// TODO: what to do with BytesParamIndex 4?
Buffer: ?*anyopaque,
BufferSizeInBytes: u32,
BytesWritten: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetVirtualProcessorInterruptControllerState2(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
// TODO: what to do with BytesParamIndex 3?
State: ?*anyopaque,
StateSize: u32,
WrittenSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvSetVirtualProcessorInterruptControllerState2(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
// TODO: what to do with BytesParamIndex 3?
State: ?*const anyopaque,
StateSize: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvRegisterPartitionDoorbellEvent(
Partition: WHV_PARTITION_HANDLE,
MatchData: ?*const WHV_DOORBELL_MATCH_DATA,
EventHandle: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvUnregisterPartitionDoorbellEvent(
Partition: WHV_PARTITION_HANDLE,
MatchData: ?*const WHV_DOORBELL_MATCH_DATA,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvAdviseGpaRange(
Partition: WHV_PARTITION_HANDLE,
GpaRanges: [*]const WHV_MEMORY_RANGE_ENTRY,
GpaRangesCount: u32,
Advice: WHV_ADVISE_GPA_RANGE_CODE,
// TODO: what to do with BytesParamIndex 5?
AdviceBuffer: ?*const anyopaque,
AdviceBufferSizeInBytes: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvReadGpaRange(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
GuestAddress: u64,
Controls: WHV_ACCESS_GPA_CONTROLS,
// TODO: what to do with BytesParamIndex 5?
Data: ?*anyopaque,
DataSizeInBytes: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvWriteGpaRange(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
GuestAddress: u64,
Controls: WHV_ACCESS_GPA_CONTROLS,
// TODO: what to do with BytesParamIndex 5?
Data: ?*const anyopaque,
DataSizeInBytes: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvSignalVirtualProcessorSynicEvent(
Partition: WHV_PARTITION_HANDLE,
SynicEvent: WHV_SYNIC_EVENT_PARAMETERS,
NewlySignaled: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetVirtualProcessorState(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
StateType: WHV_VIRTUAL_PROCESSOR_STATE_TYPE,
// TODO: what to do with BytesParamIndex 4?
Buffer: ?*anyopaque,
BufferSizeInBytes: u32,
BytesWritten: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvSetVirtualProcessorState(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
StateType: WHV_VIRTUAL_PROCESSOR_STATE_TYPE,
// TODO: what to do with BytesParamIndex 4?
Buffer: ?*const anyopaque,
BufferSizeInBytes: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvAllocateVpciResource(
ProviderId: ?*const Guid,
Flags: WHV_ALLOCATE_VPCI_RESOURCE_FLAGS,
ResourceDescriptor: ?[*]const u8,
ResourceDescriptorSizeInBytes: u32,
VpciResource: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvCreateVpciDevice(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
VpciResource: ?HANDLE,
Flags: WHV_CREATE_VPCI_DEVICE_FLAGS,
NotificationEventHandle: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvDeleteVpciDevice(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetVpciDeviceProperty(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
PropertyCode: WHV_VPCI_DEVICE_PROPERTY_CODE,
// TODO: what to do with BytesParamIndex 4?
PropertyBuffer: ?*anyopaque,
PropertyBufferSizeInBytes: u32,
WrittenSizeInBytes: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetVpciDeviceNotification(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
// TODO: what to do with BytesParamIndex 3?
Notification: ?*WHV_VPCI_DEVICE_NOTIFICATION,
NotificationSizeInBytes: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvMapVpciDeviceMmioRanges(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
MappingCount: ?*u32,
Mappings: ?*?*WHV_VPCI_MMIO_MAPPING,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvUnmapVpciDeviceMmioRanges(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvSetVpciDevicePowerState(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
PowerState: DEVICE_POWER_STATE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvReadVpciDeviceRegister(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
Register: ?*const WHV_VPCI_DEVICE_REGISTER,
Data: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvWriteVpciDeviceRegister(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
Register: ?*const WHV_VPCI_DEVICE_REGISTER,
Data: ?*const anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvMapVpciDeviceInterrupt(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
Index: u32,
MessageCount: u32,
Target: ?*const WHV_VPCI_INTERRUPT_TARGET,
MsiAddress: ?*u64,
MsiData: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvUnmapVpciDeviceInterrupt(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
Index: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvRetargetVpciDeviceInterrupt(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
MsiAddress: u64,
MsiData: u32,
Target: ?*const WHV_VPCI_INTERRUPT_TARGET,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvRequestVpciDeviceInterrupt(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
MsiAddress: u64,
MsiData: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetVpciDeviceInterruptTarget(
Partition: WHV_PARTITION_HANDLE,
LogicalDeviceId: u64,
Index: u32,
MultiMessageNumber: u32,
// TODO: what to do with BytesParamIndex 5?
Target: ?*WHV_VPCI_INTERRUPT_TARGET,
TargetSizeInBytes: u32,
BytesWritten: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvCreateTrigger(
Partition: WHV_PARTITION_HANDLE,
Parameters: ?*const WHV_TRIGGER_PARAMETERS,
TriggerHandle: ?*?*anyopaque,
EventHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvUpdateTriggerParameters(
Partition: WHV_PARTITION_HANDLE,
Parameters: ?*const WHV_TRIGGER_PARAMETERS,
TriggerHandle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvDeleteTrigger(
Partition: WHV_PARTITION_HANDLE,
TriggerHandle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvCreateNotificationPort(
Partition: WHV_PARTITION_HANDLE,
Parameters: ?*const WHV_NOTIFICATION_PORT_PARAMETERS,
EventHandle: ?HANDLE,
PortHandle: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvSetNotificationPortProperty(
Partition: WHV_PARTITION_HANDLE,
PortHandle: ?*anyopaque,
PropertyCode: WHV_NOTIFICATION_PORT_PROPERTY_CODE,
PropertyValue: u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvDeleteNotificationPort(
Partition: WHV_PARTITION_HANDLE,
PortHandle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvPostVirtualProcessorSynicMessage(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
SintIndex: u32,
// TODO: what to do with BytesParamIndex 4?
Message: ?*const anyopaque,
MessageSizeInBytes: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetVirtualProcessorCpuidOutput(
Partition: WHV_PARTITION_HANDLE,
VpIndex: u32,
Eax: u32,
Ecx: u32,
CpuidOutput: ?*WHV_CPUID_OUTPUT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvGetInterruptTargetVpSet(
Partition: WHV_PARTITION_HANDLE,
Destination: u64,
DestinationMode: WHV_INTERRUPT_DESTINATION_MODE,
TargetVps: [*]u32,
VpCount: u32,
TargetVpCount: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvStartPartitionMigration(
Partition: WHV_PARTITION_HANDLE,
MigrationHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvCancelPartitionMigration(
Partition: WHV_PARTITION_HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvCompletePartitionMigration(
Partition: WHV_PARTITION_HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvplatform" fn WHvAcceptPartitionMigration(
MigrationHandle: ?HANDLE,
Partition: ?*WHV_PARTITION_HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvemulation" fn WHvEmulatorCreateEmulator(
Callbacks: ?*const WHV_EMULATOR_CALLBACKS,
Emulator: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvemulation" fn WHvEmulatorDestroyEmulator(
Emulator: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvemulation" fn WHvEmulatorTryIoEmulation(
Emulator: ?*anyopaque,
Context: ?*anyopaque,
VpContext: ?*const WHV_VP_EXIT_CONTEXT,
IoInstructionContext: ?*const WHV_X64_IO_PORT_ACCESS_CONTEXT,
EmulatorReturnStatus: ?*WHV_EMULATOR_STATUS,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "winhvemulation" fn WHvEmulatorTryMmioEmulation(
Emulator: ?*anyopaque,
Context: ?*anyopaque,
VpContext: ?*const WHV_VP_EXIT_CONTEXT,
MmioInstructionContext: ?*const WHV_MEMORY_ACCESS_CONTEXT,
EmulatorReturnStatus: ?*WHV_EMULATOR_STATUS,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmdevicehost" fn HdvInitializeDeviceHost(
computeSystem: HCS_SYSTEM,
deviceHostHandle: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmdevicehost" fn HdvTeardownDeviceHost(
deviceHostHandle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmdevicehost" fn HdvCreateDeviceInstance(
deviceHostHandle: ?*anyopaque,
deviceType: HDV_DEVICE_TYPE,
deviceClassId: ?*const Guid,
deviceInstanceId: ?*const Guid,
deviceInterface: ?*const anyopaque,
deviceContext: ?*anyopaque,
deviceHandle: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmdevicehost" fn HdvReadGuestMemory(
requestor: ?*anyopaque,
guestPhysicalAddress: u64,
byteCount: u32,
buffer: [*:0]u8,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmdevicehost" fn HdvWriteGuestMemory(
requestor: ?*anyopaque,
guestPhysicalAddress: u64,
byteCount: u32,
buffer: [*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmdevicehost" fn HdvCreateGuestMemoryAperture(
requestor: ?*anyopaque,
guestPhysicalAddress: u64,
byteCount: u32,
writeProtected: BOOL,
mappedAddress: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmdevicehost" fn HdvDestroyGuestMemoryAperture(
requestor: ?*anyopaque,
mappedAddress: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmdevicehost" fn HdvDeliverGuestInterrupt(
requestor: ?*anyopaque,
msiAddress: u64,
msiData: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmdevicehost" fn HdvRegisterDoorbell(
requestor: ?*anyopaque,
BarIndex: HDV_PCI_BAR_SELECTOR,
BarOffset: u64,
TriggerValue: u64,
Flags: u64,
DoorbellEvent: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmdevicehost" fn HdvUnregisterDoorbell(
requestor: ?*anyopaque,
BarIndex: HDV_PCI_BAR_SELECTOR,
BarOffset: u64,
TriggerValue: u64,
Flags: u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmdevicehost" fn HdvCreateSectionBackedMmioRange(
requestor: ?*anyopaque,
barIndex: HDV_PCI_BAR_SELECTOR,
offsetInPages: u64,
lengthInPages: u64,
MappingFlags: HDV_MMIO_MAPPING_FLAGS,
sectionHandle: ?HANDLE,
sectionOffsetInPages: u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmdevicehost" fn HdvDestroySectionBackedMmioRange(
requestor: ?*anyopaque,
barIndex: HDV_PCI_BAR_SELECTOR,
offsetInPages: u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn LocateSavedStateFiles(
vmName: ?[*:0]const u16,
snapshotName: ?[*:0]const u16,
binPath: ?*?PWSTR,
vsvPath: ?*?PWSTR,
vmrsPath: ?*?PWSTR,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn LoadSavedStateFile(
vmrsFile: ?[*:0]const u16,
vmSavedStateDumpHandle: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ApplyPendingSavedStateFileReplayLog(
vmrsFile: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn LoadSavedStateFiles(
binFile: ?[*:0]const u16,
vsvFile: ?[*:0]const u16,
vmSavedStateDumpHandle: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ReleaseSavedStateFiles(
vmSavedStateDumpHandle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetGuestEnabledVirtualTrustLevels(
vmSavedStateDumpHandle: ?*anyopaque,
virtualTrustLevels: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetGuestOsInfo(
vmSavedStateDumpHandle: ?*anyopaque,
virtualTrustLevel: u8,
guestOsInfo: ?*GUEST_OS_INFO,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetVpCount(
vmSavedStateDumpHandle: ?*anyopaque,
vpCount: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetArchitecture(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
architecture: ?*VIRTUAL_PROCESSOR_ARCH,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ForceArchitecture(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
architecture: VIRTUAL_PROCESSOR_ARCH,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetActiveVirtualTrustLevel(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
virtualTrustLevel: ?*u8,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetEnabledVirtualTrustLevels(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
virtualTrustLevels: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ForceActiveVirtualTrustLevel(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
virtualTrustLevel: u8,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn IsActiveVirtualTrustLevelEnabled(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
activeVirtualTrustLevelEnabled: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn IsNestedVirtualizationEnabled(
vmSavedStateDumpHandle: ?*anyopaque,
enabled: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetNestedVirtualizationMode(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
enabled: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ForceNestedHostMode(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
hostMode: BOOL,
oldMode: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn InKernelSpace(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
inKernelSpace: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetRegisterValue(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
registerId: u32,
registerValue: ?*VIRTUAL_PROCESSOR_REGISTER,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetPagingMode(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
pagingMode: ?*PAGING_MODE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ForcePagingMode(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
pagingMode: PAGING_MODE,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ReadGuestPhysicalAddress(
vmSavedStateDumpHandle: ?*anyopaque,
physicalAddress: u64,
// TODO: what to do with BytesParamIndex 3?
buffer: ?*anyopaque,
bufferSize: u32,
bytesRead: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GuestVirtualAddressToPhysicalAddress(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
virtualAddress: u64,
physicalAddress: ?*u64,
unmappedRegionSize: ?*u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetGuestPhysicalMemoryChunks(
vmSavedStateDumpHandle: ?*anyopaque,
memoryChunkPageSize: ?*u64,
memoryChunks: ?*GPA_MEMORY_CHUNK,
memoryChunkCount: ?*u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GuestPhysicalAddressToRawSavedMemoryOffset(
vmSavedStateDumpHandle: ?*anyopaque,
physicalAddress: u64,
rawSavedMemoryOffset: ?*u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ReadGuestRawSavedMemory(
vmSavedStateDumpHandle: ?*anyopaque,
rawSavedMemoryOffset: u64,
// TODO: what to do with BytesParamIndex 3?
buffer: ?*anyopaque,
bufferSize: u32,
bytesRead: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetGuestRawSavedMemorySize(
vmSavedStateDumpHandle: ?*anyopaque,
guestRawSavedMemorySize: ?*u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn SetMemoryBlockCacheLimit(
vmSavedStateDumpHandle: ?*anyopaque,
memoryBlockCacheLimit: u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetMemoryBlockCacheLimit(
vmSavedStateDumpHandle: ?*anyopaque,
memoryBlockCacheLimit: ?*u64,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ApplyGuestMemoryFix(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
virtualAddress: u64,
fixBuffer: ?*anyopaque,
fixBufferSize: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn LoadSavedStateSymbolProvider(
vmSavedStateDumpHandle: ?*anyopaque,
userSymbols: ?[*:0]const u16,
force: BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ReleaseSavedStateSymbolProvider(
vmSavedStateDumpHandle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetSavedStateSymbolProviderHandle(
vmSavedStateDumpHandle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) ?HANDLE;
pub extern "vmsavedstatedumpprovider" fn SetSavedStateSymbolProviderDebugInfoCallback(
vmSavedStateDumpHandle: ?*anyopaque,
Callback: ?GUEST_SYMBOLS_PROVIDER_DEBUG_INFO_CALLBACK,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn LoadSavedStateModuleSymbols(
vmSavedStateDumpHandle: ?*anyopaque,
imageName: ?[*:0]const u8,
moduleName: ?[*:0]const u8,
baseAddress: u64,
sizeOfBase: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn LoadSavedStateModuleSymbolsEx(
vmSavedStateDumpHandle: ?*anyopaque,
imageName: ?[*:0]const u8,
imageTimestamp: u32,
moduleName: ?[*:0]const u8,
baseAddress: u64,
sizeOfBase: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ResolveSavedStateGlobalVariableAddress(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
globalName: ?[*:0]const u8,
virtualAddress: ?*u64,
size: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ReadSavedStateGlobalVariable(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
globalName: ?[*:0]const u8,
buffer: ?*anyopaque,
bufferSize: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetSavedStateSymbolTypeSize(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
typeName: ?[*:0]const u8,
size: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn FindSavedStateSymbolFieldInType(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
typeName: ?[*:0]const u8,
fieldName: ?[*:0]const u16,
offset: ?*u32,
found: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn GetSavedStateSymbolFieldInfo(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
typeName: ?[*:0]const u8,
typeFieldInfoMap: ?*?PWSTR,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn ScanMemoryForDosImages(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
startAddress: u64,
endAddress: u64,
callbackContext: ?*anyopaque,
foundImageCallback: ?FOUND_IMAGE_CALLBACK,
standaloneAddress: ?*u64,
standaloneAddressCount: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
pub extern "vmsavedstatedumpprovider" fn CallStackUnwind(
vmSavedStateDumpHandle: ?*anyopaque,
vpId: u32,
imageInfo: ?*MODULE_INFO,
imageInfoCount: u32,
frameCount: u32,
callStack: ?*?PWSTR,
) callconv(@import("std").os.windows.WINAPI) HRESULT;
//--------------------------------------------------------------------------------
// Section: Unicode Aliases (0)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
.ansi => struct {
},
.wide => struct {
},
.unspecified => if (@import("builtin").is_test) struct {
} else struct {
},
};
//--------------------------------------------------------------------------------
// Section: Imports (9)
//--------------------------------------------------------------------------------
const Guid = @import("../zig.zig").Guid;
const BOOL = @import("../foundation.zig").BOOL;
const DEVICE_POWER_STATE = @import("../system/power.zig").DEVICE_POWER_STATE;
const HANDLE = @import("../foundation.zig").HANDLE;
const HCS_SYSTEM = @import("../system/host_compute_system.zig").HCS_SYSTEM;
const HRESULT = @import("../foundation.zig").HRESULT;
const LUID = @import("../foundation.zig").LUID;
const PSTR = @import("../foundation.zig").PSTR;
const PWSTR = @import("../foundation.zig").PWSTR;
test {
// The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
if (@hasDecl(@This(), "WHV_EMULATOR_IO_PORT_CALLBACK")) { _ = WHV_EMULATOR_IO_PORT_CALLBACK; }
if (@hasDecl(@This(), "WHV_EMULATOR_MEMORY_CALLBACK")) { _ = WHV_EMULATOR_MEMORY_CALLBACK; }
if (@hasDecl(@This(), "WHV_EMULATOR_GET_VIRTUAL_PROCESSOR_REGISTERS_CALLBACK")) { _ = WHV_EMULATOR_GET_VIRTUAL_PROCESSOR_REGISTERS_CALLBACK; }
if (@hasDecl(@This(), "WHV_EMULATOR_SET_VIRTUAL_PROCESSOR_REGISTERS_CALLBACK")) { _ = WHV_EMULATOR_SET_VIRTUAL_PROCESSOR_REGISTERS_CALLBACK; }
if (@hasDecl(@This(), "WHV_EMULATOR_TRANSLATE_GVA_PAGE_CALLBACK")) { _ = WHV_EMULATOR_TRANSLATE_GVA_PAGE_CALLBACK; }
if (@hasDecl(@This(), "HDV_PCI_DEVICE_INITIALIZE")) { _ = HDV_PCI_DEVICE_INITIALIZE; }
if (@hasDecl(@This(), "HDV_PCI_DEVICE_TEARDOWN")) { _ = HDV_PCI_DEVICE_TEARDOWN; }
if (@hasDecl(@This(), "HDV_PCI_DEVICE_SET_CONFIGURATION")) { _ = HDV_PCI_DEVICE_SET_CONFIGURATION; }
if (@hasDecl(@This(), "HDV_PCI_DEVICE_GET_DETAILS")) { _ = HDV_PCI_DEVICE_GET_DETAILS; }
if (@hasDecl(@This(), "HDV_PCI_DEVICE_START")) { _ = HDV_PCI_DEVICE_START; }
if (@hasDecl(@This(), "HDV_PCI_DEVICE_STOP")) { _ = HDV_PCI_DEVICE_STOP; }
if (@hasDecl(@This(), "HDV_PCI_READ_CONFIG_SPACE")) { _ = HDV_PCI_READ_CONFIG_SPACE; }
if (@hasDecl(@This(), "HDV_PCI_WRITE_CONFIG_SPACE")) { _ = HDV_PCI_WRITE_CONFIG_SPACE; }
if (@hasDecl(@This(), "HDV_PCI_READ_INTERCEPTED_MEMORY")) { _ = HDV_PCI_READ_INTERCEPTED_MEMORY; }
if (@hasDecl(@This(), "HDV_PCI_WRITE_INTERCEPTED_MEMORY")) { _ = HDV_PCI_WRITE_INTERCEPTED_MEMORY; }
if (@hasDecl(@This(), "GUEST_SYMBOLS_PROVIDER_DEBUG_INFO_CALLBACK")) { _ = GUEST_SYMBOLS_PROVIDER_DEBUG_INFO_CALLBACK; }
if (@hasDecl(@This(), "FOUND_IMAGE_CALLBACK")) { _ = FOUND_IMAGE_CALLBACK; }
@setEvalBranchQuota(
comptime @import("std").meta.declarations(@This()).len * 3
);
// reference all the pub declarations
if (!@import("builtin").is_test) return;
inline for (comptime @import("std").meta.declarations(@This())) |decl| {
_ = @field(@This(), decl.name);
}
}