_HAL_INTEL_ENLIGHTENMENT_INFORMATION

//0x248 bytes (sizeof) struct _HAL_INTEL_ENLIGHTENMENT_INFORMATION { ULONG Enlightenments; //0x0 ULONG HypervisorConnected; //0x4 VOID (*EndOfInterrupt)(); //0x8 VOID (*ApicWriteIcr)(ULONG arg1, ULONG arg2); //0x10 ULONG Reserved0; //0x18 ULONG SpinCountMask; //0x1c VOID (*LongSpinWait)(ULONG arg1); //0x20 ULONGLONG (*GetReferenceTime)(ULONG* arg1); //0x28 LONG (*SetSystemSleepProperty)(ULONG arg1, UCHAR arg2, UCHAR arg3); //0x30 LONG (*EnterSleepState)(ULONG arg1); //0x38 LONG (*NotifyDebugDeviceAvailable)(); //0x40 LONG (*MapDeviceInterrupt)(ULONGLONG arg1, VOID* arg2, struct _GROUP_AFFINITY* arg3, VOID* arg4); //0x48 LONG (*UnmapDeviceInterrupt)(ULONGLONG arg1, VOID* arg2); //0x50 LONG (*RetargetDeviceInterrupt)(ULONGLONG arg1, VOID* arg2, VOID* arg3, struct _GROUP_AFFINITY* arg4, VOID* arg5); //0x58 LONG (*SetHpetConfig)(ULONG arg1, ULONGLONG arg2, UCHAR arg3, VOID* arg4); //0x60 LONG (*NotifyHpetEnabled)(); //0x68 LONG (*QueryAssociatedProcessors)(ULONG arg1, ULONG* arg2, ULONG* arg3); //0x70 LONG (*ReadMultipleMsr)(ULONG arg1, ULONG arg2, ULONG* arg3, ULONGLONG* arg4); //0x78 LONG (*WriteMultipleMsr)(ULONG arg1, ULONG arg2, ULONG* arg3, ULONGLONG* arg4); //0x80 LONG (*ReadCpuid)(ULONG arg1, ULONG arg2, ULONG* arg3, ULONG* arg4, ULONG* arg5, ULONG* arg6); //0x88 LONG (*LpWritebackInvalidate)(ULONG arg1); //0x90 LONG (*GetMachineCheckContext)(ULONG arg1, ULONG* arg2, ULONGLONG* arg3, ULONG* arg4); //0x98 LONG (*SuspendPartition)(ULONGLONG arg1); //0xa0 LONG (*ResumePartition)(ULONGLONG arg1); //0xa8 LONG (*SetSystemMachineCheckProperty)(VOID* arg1); //0xb0 LONG (*WheaErrorNotification)(struct _WHEA_RECOVERY_CONTEXT* arg1, UCHAR arg2, UCHAR arg3); //0xb8 ULONG (*GetProcessorIndexFromVpIndex)(ULONG arg1); //0xc0 LONG (*SyntheticClusterIpi)(struct _KAFFINITY_EX* arg1, ULONG arg2); //0xc8 UCHAR (*VpStartEnabled)(); //0xd0 LONG (*StartVirtualProcessor)(ULONG arg1, VOID* arg2); //0xd8 LONG (*GetVpIndexFromApicId)(ULONG arg1, ULONG* arg2); //0xe0 LONG (*IumAccessPciDevice)(UCHAR arg1, ULONG arg2, ULONG arg3, ULONG arg4, ULONG arg5, ULONG arg6, ULONG arg7, VOID* arg8); //0xe8 ULONGLONG (*IumEfiRuntimeService)(ULONG arg1, VOID* arg2, ULONGLONG arg3, ULONGLONG* arg4); //0xf0 VOID (*GetSystemPasidCapabilities)(struct _HAL_HV_SYSTEM_PASID_CAPABILITIES* arg1); //0xf8 LONG (*GetDeviceCapabilities)(struct _EXT_IOMMU_DEVICE_ID* arg1, VOID* arg2); //0x100 LONG (*CreatePasidSpace)(ULONG arg1, ULONG arg2); //0x108 LONG (*SetPasidAddressSpace)(ULONG arg1, ULONG arg2, ULONGLONG arg3); //0x110 VOID (*FlushPasid)(ULONG arg1, ULONG arg2, ULONG arg3, struct _KTB_FLUSH_VA* arg4, UCHAR arg5); //0x118 LONG (*AttachPasidSpace)(ULONGLONG arg1, ULONG arg2); //0x120 LONG (*DetachPasidSpace)(ULONGLONG arg1); //0x128 LONG (*EnablePasid)(ULONGLONG arg1, ULONG arg2); //0x130 LONG (*DisablePasid)(ULONGLONG arg1, ULONG arg2); //0x138 LONG (*AcknowledgePageRequest)(ULONG arg1, VOID* arg2, ULONG* arg3); //0x140 LONG (*CreatePrQueue)(ULONG arg1, ULONG arg2, union _LARGE_INTEGER arg3, ULONG arg4, ULONG arg5); //0x148 LONG (*DeletePrQueue)(ULONG arg1); //0x150 LONG (*ClearPrqStalled)(ULONG arg1); //0x158 LONG (*SetDeviceDmaEnabled)(struct _EXT_IOMMU_DEVICE_ID* arg1, UCHAR arg2); //0x160 LONG (*SetDeviceCapabilities)(ULONGLONG arg1, ULONG arg2, ULONG arg3); //0x168 LONG (*AttachPrQueue)(ULONGLONG arg1, ULONG arg2); //0x170 LONG (*DetachPrQueue)(ULONGLONG arg1); //0x178 LONG (*HvDebuggerPowerHandler)(UCHAR arg1); //0x180 LONG (*SetQpcBias)(ULONGLONG arg1); //0x188 ULONGLONG (*GetQpcBias)(); //0x190 LONG (*RegisterDeviceId)(struct _EXT_IOMMU_DEVICE_ID* arg1, ULONGLONG arg2); //0x198 LONG (*UnregisterDeviceId)(ULONGLONG arg1); //0x1a0 LONG (*AllocateDeviceDomain)(struct _HAL_HV_DMA_CREATE_DOMAIN_INFO* arg1); //0x1a8 LONG (*AttachDeviceDomain)(ULONGLONG arg1, struct _HAL_HV_DMA_DOMAIN_INFO* arg2); //0x1b0 LONG (*DetachDeviceDomain)(ULONGLONG arg1); //0x1b8 LONG (*DeleteDeviceDomain)(struct _HAL_HV_DMA_DOMAIN_INFO* arg1); //0x1c0 LONG (*MapDeviceLogicalRange)(struct _HAL_HV_DMA_DOMAIN_INFO* arg1, ULONG arg2, ULONGLONG arg3, ULONGLONG* arg4, ULONGLONG* arg5, UCHAR arg6); //0x1c8 LONG (*UnmapDeviceLogicalRange)(struct _HAL_HV_DMA_DOMAIN_INFO* arg1, ULONGLONG arg2, ULONGLONG* arg3); //0x1d0 LONG (*MapDeviceSparsePages)(struct _HAL_HV_DMA_DOMAIN_INFO* arg1, ULONG arg2, ULONGLONG* arg3, ULONGLONG* arg4); //0x1d8 LONG (*UnmapDeviceSparsePages)(struct _HAL_HV_DMA_DOMAIN_INFO* arg1, ULONGLONG* arg2, ULONGLONG* arg3); //0x1e0 LONG (*GetDmaGuardEnabled)(UCHAR* arg1); //0x1e8 LONG (*UpdateMicrocode)(VOID* arg1, ULONG arg2, UCHAR arg3); //0x1f0 LONG (*GetSintMessage)(UCHAR arg1, VOID** arg2); //0x1f8 LONG (*RestoreTime)(ULONG arg1, ULONGLONG arg2, ULONGLONG arg3); //0x200 LONG (*SetRootFaultReportingReady)(); //0x208 LONG (*ConfigureDeviceDomain)(struct _HAL_HV_DMA_DOMAIN_INFO* arg1, struct _HAL_HV_DMA_DOMAIN_CONFIG* arg2); //0x210 LONG (*UnblockDefaultDma)(); //0x218 LONG (*FlushDeviceDomain)(struct _HAL_HV_DMA_DOMAIN_INFO* arg1); //0x220 LONG (*FlushDeviceDomainVaList)(struct _HAL_HV_DMA_DOMAIN_INFO* arg1, ULONG arg2, struct _KTB_FLUSH_VA* arg3); //0x228 LONG (*GetHybridPassthroughReservedRegions)(struct _HAL_HV_DMA_HYBRID_PASSTHROUGH_RESERVED_REGIONS* arg1); //0x230 LONG (*ReserveDeviceDomainAttachment)(ULONGLONG arg1, struct _HAL_HV_DMA_DOMAIN_INFO* arg2); //0x238 LONG (*UnreserveDeviceDomainAttachment)(ULONGLONG arg1); //0x240 };