struct _HAL_INTEL_ENLIGHTENMENT_INFORMATION
{
ULONG Enlightenments;
ULONG HypervisorConnected;
VOID (*EndOfInterrupt)();
VOID (*ApicWriteIcr)(
ULONG arg1,
ULONG arg2);
ULONG Reserved0;
ULONG SpinCountMask;
VOID (*LongSpinWait)(
ULONG arg1);
ULONGLONG (*GetReferenceTime)();
LONG (*SetSystemSleepProperty)(
ULONG arg1,
UCHAR arg2,
UCHAR arg3);
LONG (*EnterSleepState)(
ULONG arg1);
LONG (*NotifyDebugDeviceAvailable)();
LONG (*MapDeviceInterrupt)(
ULONGLONG arg1,
VOID* arg2,
struct _GROUP_AFFINITY* arg3,
VOID* arg4);
LONG (*UnmapDeviceInterrupt)(
ULONGLONG arg1,
VOID* arg2);
LONG (*RetargetDeviceInterrupt)(
ULONGLONG arg1,
VOID* arg2,
VOID* arg3,
struct _GROUP_AFFINITY* arg4,
VOID* arg5);
LONG (*SetHpetConfig)(
union _LARGE_INTEGER arg1,
ULONG arg2,
ULONGLONG arg3,
UCHAR arg4,
VOID* arg5);
LONG (*NotifyHpetEnabled)();
LONG (*QueryAssociatedProcessors)(
ULONG arg1,
ULONG* arg2,
ULONG* arg3);
LONG (*ReadMultipleMsr)(
ULONG arg1,
ULONG arg2,
ULONG* arg3,
ULONGLONG* arg4);
LONG (*WriteMultipleMsr)(
ULONG arg1,
ULONG arg2,
ULONG* arg3,
ULONGLONG* arg4);
LONG (*ReadCpuid)(
ULONG arg1,
ULONG arg2,
ULONG* arg3,
ULONG* arg4,
ULONG* arg5,
ULONG* arg6);
LONG (*LpWritebackInvalidate)(
ULONG arg1);
LONG (*GetMachineCheckContext)(
ULONG arg1,
ULONG* arg2,
ULONGLONG* arg3,
ULONG* arg4);
LONG (*SuspendPartition)(
ULONGLONG arg1);
LONG (*ResumePartition)(
ULONGLONG arg1);
LONG (*SetSystemMachineCheckProperty)(
VOID* arg1);
LONG (*WheaErrorNotification)(
struct _WHEA_RECOVERY_CONTEXT* arg1,
UCHAR arg2,
UCHAR arg3);
ULONG (*GetProcessorIndexFromVpIndex)(
ULONG arg1);
LONG (*SyntheticClusterIpi)(
struct _KAFFINITY_EX* arg1,
ULONG arg2);
UCHAR (*VpStartEnabled)();
LONG (*StartVirtualProcessor)(
ULONG arg1,
VOID* arg2);
LONG (*GetVpIndexFromApicId)(
ULONG arg1,
ULONG* arg2);
LONG (*IumAccessPciDevice)(
UCHAR arg1,
ULONG arg2,
ULONG arg3,
ULONG arg4,
ULONG arg5,
ULONG arg6,
ULONG arg7,
VOID* arg8);
ULONGLONG (*IumEfiRuntimeService)(
ULONG arg1,
VOID* arg2,
ULONGLONG arg3,
ULONGLONG* arg4);
VOID (*SvmGetSystemCapabilities)(
struct _HAL_HV_SVM_SYSTEM_CAPABILITIES* arg1);
LONG (*SvmGetDeviceCapabilities)(
ULONG arg1,
struct _HAL_HV_SVM_DEVICE_CAPABILITIES* arg2);
LONG (*SvmCreatePasidSpace)(
ULONG arg1,
ULONG arg2);
LONG (*SvmSetPasidAddressSpace)(
ULONG arg1,
ULONG arg2,
ULONGLONG arg3);
VOID (*SvmFlushPasid)(
ULONG arg1,
ULONG arg2,
ULONG arg3,
struct _KTB_FLUSH_VA* arg4);
LONG (*SvmAttachPasidSpace)(
ULONG arg1,
ULONG arg2,
ULONG arg3,
ULONG arg4);
LONG (*SvmDetachPasidSpace)(
ULONG arg1);
LONG (*SvmEnablePasid)(
ULONG arg1,
ULONG arg2);
LONG (*SvmDisablePasid)(
ULONG arg1,
ULONG arg2);
LONG (*SvmAcknowledgePageRequest)(
ULONG arg1,
VOID* arg2,
ULONG* arg3);
LONG (*SvmCreatePrQueue)(
ULONG arg1,
ULONG arg2,
union _LARGE_INTEGER arg3,
ULONG arg4,
ULONG arg5);
LONG (*SvmDeletePrQueue)(
ULONG arg1);
LONG (*SvmClearPrqStalled)(
ULONG arg1);
LONG (*SvmSetDeviceEnabled)(
ULONG arg1,
UCHAR arg2);
LONG (*HvDebuggerPowerHandler)(
UCHAR arg1);
LONG (*SetQpcBias)(
ULONGLONG arg1);
ULONGLONG (*GetQpcBias)();
LONG (*RegisterDeviceId)(
struct _EXT_IOMMU_DEVICE_ID* arg1,
ULONGLONG arg2);
LONG (*UnregisterDeviceId)(
ULONGLONG arg1);
LONG (*AllocateDeviceDomain)(
struct _HAL_HV_DMA_DOMAIN_INFO* arg1);
LONG (*AttachDeviceDomain)(
struct _EXT_IOMMU_DEVICE_ID* arg1,
struct _HAL_HV_DMA_DOMAIN_INFO* arg2);
LONG (*DetachDeviceDomain)(
ULONGLONG arg1);
LONG (*DeleteDeviceDomain)(
struct _HAL_HV_DMA_DOMAIN_INFO* arg1);
LONG (*MapDeviceLogicalRange)(
struct _HAL_HV_DMA_DOMAIN_INFO* arg1,
ULONG arg2,
ULONGLONG arg3,
ULONGLONG* arg4,
ULONGLONG* arg5);
LONG (*UnmapDeviceLogicalRange)(
struct _HAL_HV_DMA_DOMAIN_INFO* arg1,
ULONGLONG arg2,
ULONGLONG* arg3);
LONG (*MapDeviceSparsePages)(
struct _HAL_HV_DMA_DOMAIN_INFO* arg1,
ULONG arg2,
ULONGLONG* arg3,
ULONGLONG* arg4);
LONG (*UnmapDeviceSparsePages)(
struct _HAL_HV_DMA_DOMAIN_INFO* arg1,
ULONGLONG* arg2,
ULONGLONG* arg3);
LONG (*GetDmaGuardEnabled)(
UCHAR* arg1);
LONG (*UpdateMicrocode)(
VOID* arg1,
ULONG arg2);
};