struct HAL_PRIVATE_DISPATCH
{
ULONG Version;
struct _BUS_HANDLER* (*HalHandlerForBus)(enum _INTERFACE_TYPE arg1, ULONG arg2);
struct _BUS_HANDLER* (*HalHandlerForConfigSpace)(enum _BUS_DATA_TYPE arg1, ULONG arg2);
VOID (*HalLocateHiberRanges)(
VOID* arg1);
LONG (*HalRegisterBusHandler)(
enum _INTERFACE_TYPE arg1,
enum _BUS_DATA_TYPE arg2,
ULONG arg3,
enum _INTERFACE_TYPE arg4,
ULONG arg5,
ULONG arg6,
LONG (*arg7)(
struct _BUS_HANDLER* arg1),
struct _BUS_HANDLER** arg8);
VOID (*HalSetWakeEnable)(
UCHAR arg1);
LONG (*HalSetWakeAlarm)(
ULONGLONG arg1,
ULONGLONG arg2);
UCHAR (*HalPciTranslateBusAddress)(
enum _INTERFACE_TYPE arg1,
ULONG arg2,
union _LARGE_INTEGER arg3,
ULONG* arg4,
union _LARGE_INTEGER* arg5);
LONG (*HalPciAssignSlotResources)(
struct _UNICODE_STRING* arg1,
struct _UNICODE_STRING* arg2,
struct _DRIVER_OBJECT* arg3,
struct _DEVICE_OBJECT* arg4,
enum _INTERFACE_TYPE arg5,
ULONG arg6,
ULONG arg7,
struct _CM_RESOURCE_LIST** arg8);
VOID (*HalHaltSystem)();
UCHAR (*HalFindBusAddressTranslation)(
union _LARGE_INTEGER arg1,
ULONG* arg2,
union _LARGE_INTEGER* arg3,
ULONG* arg4,
UCHAR arg5);
UCHAR (*HalResetDisplay)();
LONG (*HalAllocateMapRegisters)(
struct _ADAPTER_OBJECT* arg1,
ULONG arg2,
ULONG arg3,
struct _MAP_REGISTER_ENTRY* arg4);
LONG (*KdSetupPciDeviceForDebugging)(
VOID* arg1,
struct _DEBUG_DEVICE_DESCRIPTOR* arg2);
LONG (*KdReleasePciDeviceForDebugging)(
struct _DEBUG_DEVICE_DESCRIPTOR* arg1);
VOID* (*KdGetAcpiTablePhase0)(
struct _LOADER_PARAMETER_BLOCK* arg1,
ULONG arg2);
VOID (*KdCheckPowerButton)();
UCHAR (*HalVectorToIDTEntry)(
ULONG arg1);
VOID* (*KdMapPhysicalMemory64)(
union _LARGE_INTEGER arg1,
ULONG arg2,
UCHAR arg3);
VOID (*KdUnmapVirtualAddress)(
VOID* arg1,
ULONG arg2,
UCHAR arg3);
ULONG (*KdGetPciDataByOffset)(
ULONG arg1,
ULONG arg2,
VOID* arg3,
ULONG arg4,
ULONG arg5);
ULONG (*KdSetPciDataByOffset)(
ULONG arg1,
ULONG arg2,
VOID* arg3,
ULONG arg4,
ULONG arg5);
ULONG (*HalGetInterruptVectorOverride)(
enum _INTERFACE_TYPE arg1,
ULONG arg2,
ULONG arg3,
ULONG arg4,
UCHAR* arg5,
ULONG* arg6);
LONG (*HalGetVectorInputOverride)(
ULONG arg1,
struct _GROUP_AFFINITY* arg2,
ULONG* arg3,
enum _KINTERRUPT_POLARITY* arg4,
struct _INTERRUPT_REMAPPING_INFO* arg5);
LONG (*HalLoadMicrocode)(
VOID* arg1);
LONG (*HalUnloadMicrocode)();
LONG (*HalPostMicrocodeUpdate)();
LONG (*HalAllocateMessageTargetOverride)(
struct _DEVICE_OBJECT* arg1,
struct _GROUP_AFFINITY* arg2,
ULONG arg3,
enum _KINTERRUPT_MODE arg4,
UCHAR arg5,
ULONG* arg6,
UCHAR* arg7,
ULONG* arg8);
VOID (*HalFreeMessageTargetOverride)(
struct _DEVICE_OBJECT* arg1,
ULONG arg2,
struct _GROUP_AFFINITY* arg3);
LONG (*HalDpReplaceBegin)(
struct _HAL_DP_REPLACE_PARAMETERS* arg1,
VOID** arg2);
VOID (*HalDpReplaceTarget)(
VOID* arg1);
LONG (*HalDpReplaceControl)(
ULONG arg1,
VOID* arg2);
VOID (*HalDpReplaceEnd)(
VOID* arg1);
VOID (*HalPrepareForBugcheck)(
ULONG arg1);
UCHAR (*HalQueryWakeTime)(
ULONGLONG* arg1,
ULONGLONG* arg2);
VOID (*HalReportIdleStateUsage)(
UCHAR arg1,
struct _KAFFINITY_EX* arg2);
VOID (*HalTscSynchronization)(
UCHAR arg1,
ULONG* arg2);
LONG (*HalWheaInitProcessorGenericSection)(
struct _WHEA_ERROR_RECORD_SECTION_DESCRIPTOR* arg1,
struct _WHEA_PROCESSOR_GENERIC_ERROR_SECTION* arg2);
VOID (*HalStopLegacyUsbInterrupts)(
enum _SYSTEM_POWER_STATE arg1);
LONG (*HalReadWheaPhysicalMemory)(
union _LARGE_INTEGER arg1,
ULONG arg2,
VOID* arg3);
LONG (*HalWriteWheaPhysicalMemory)(
union _LARGE_INTEGER arg1,
ULONG arg2,
VOID* arg3);
LONG (*HalDpMaskLevelTriggeredInterrupts)();
LONG (*HalDpUnmaskLevelTriggeredInterrupts)();
LONG (*HalDpGetInterruptReplayState)(
VOID* arg1,
VOID** arg2);
LONG (*HalDpReplayInterrupts)(
VOID* arg1);
UCHAR (*HalQueryIoPortAccessSupported)();
LONG (*KdSetupIntegratedDeviceForDebugging)(
VOID* arg1,
struct _DEBUG_DEVICE_DESCRIPTOR* arg2);
LONG (*KdReleaseIntegratedDeviceForDebugging)(
struct _DEBUG_DEVICE_DESCRIPTOR* arg1);
VOID (*HalGetEnlightenmentInformation)(
struct _HAL_INTEL_ENLIGHTENMENT_INFORMATION* arg1);
VOID* (*HalAllocateEarlyPages)(
struct _LOADER_PARAMETER_BLOCK* arg1,
ULONG arg2,
ULONGLONG* arg3,
ULONG arg4);
VOID* (*HalMapEarlyPages)(
ULONGLONG arg1,
ULONG arg2,
ULONG arg3);
VOID* Dummy1;
VOID* Dummy2;
VOID (*HalNotifyProcessorFreeze)(
UCHAR arg1,
UCHAR arg2);
LONG (*HalPrepareProcessorForIdle)(
ULONG arg1);
VOID (*HalRegisterLogRoutine)(
struct _HAL_LOG_REGISTER_CONTEXT* arg1);
VOID (*HalResumeProcessorFromIdle)();
VOID* Dummy;
ULONG (*HalVectorToIDTEntryEx)(
ULONG arg1);
LONG (*HalSecondaryInterruptQueryPrimaryInformation)(
struct _INTERRUPT_VECTOR_DATA* arg1,
ULONG* arg2);
LONG (*HalMaskInterrupt)(
ULONG arg1,
ULONG arg2);
LONG (*HalUnmaskInterrupt)(
ULONG arg1,
ULONG arg2);
UCHAR (*HalIsInterruptTypeSecondary)(
ULONG arg1,
ULONG arg2);
LONG (*HalAllocateGsivForSecondaryInterrupt)(
CHAR* arg1,
USHORT arg2,
ULONG* arg3);
LONG (*HalAddInterruptRemapping)(
ULONG arg1,
ULONG arg2,
struct _PCI_BUSMASTER_DESCRIPTOR* arg3,
UCHAR arg4,
struct _INTERRUPT_VECTOR_DATA* arg5,
ULONG arg6);
VOID (*HalRemoveInterruptRemapping)(
ULONG arg1,
ULONG arg2,
struct _PCI_BUSMASTER_DESCRIPTOR* arg3,
UCHAR arg4,
struct _INTERRUPT_VECTOR_DATA* arg5,
ULONG arg6);
VOID (*HalSaveAndDisableHvEnlightenment)();
VOID (*HalRestoreHvEnlightenment)();
VOID (*HalFlushIoBuffersExternalCache)(
struct _MDL* arg1,
UCHAR arg2);
VOID (*HalFlushExternalCache)(
UCHAR arg1);
LONG (*HalPciEarlyRestore)(
enum _SYSTEM_POWER_STATE arg1);
LONG (*HalGetProcessorId)(
ULONG arg1,
ULONG* arg2,
ULONG* arg3);
LONG (*HalAllocatePmcCounterSet)(
ULONG arg1,
enum _KPROFILE_SOURCE* arg2,
ULONG arg3,
struct _HAL_PMC_COUNTERS** arg4);
VOID (*HalCollectPmcCounters)(
struct _HAL_PMC_COUNTERS* arg1,
ULONGLONG* arg2);
VOID (*HalFreePmcCounterSet)(
struct _HAL_PMC_COUNTERS* arg1);
LONG (*HalProcessorHalt)(
ULONG arg1,
VOID* arg2,
LONG (*arg3)(
VOID* arg1));
ULONGLONG (*HalTimerQueryCycleCounter)(
ULONGLONG* arg1);
VOID* Dummy3;
VOID (*HalPciMarkHiberPhase)();
LONG (*HalQueryProcessorRestartEntryPoint)(
union _LARGE_INTEGER* arg1);
LONG (*HalRequestInterrupt)(
ULONG arg1);
LONG (*HalEnumerateUnmaskedInterrupts)(
UCHAR (*arg1)(
VOID* arg1,
struct _HAL_UNMASKED_INTERRUPT_INFORMATION* arg2),
VOID* arg2,
struct _HAL_UNMASKED_INTERRUPT_INFORMATION* arg3);
VOID (*HalFlushAndInvalidatePageExternalCache)(
union _LARGE_INTEGER arg1);
LONG (*KdEnumerateDebuggingDevices)(
VOID* arg1,
struct _DEBUG_DEVICE_DESCRIPTOR* arg2,
enum KD_CALLBACK_ACTION (*arg3)(
struct _DEBUG_DEVICE_DESCRIPTOR* arg1));
VOID (*HalFlushIoRectangleExternalCache)(
struct _MDL* arg1,
ULONG arg2,
ULONG arg3,
ULONG arg4,
ULONG arg5,
UCHAR arg6);
VOID (*HalPowerEarlyRestore)(
ULONG arg1);
LONG (*HalQueryCapsuleCapabilities)(
VOID* arg1,
ULONG arg2,
ULONGLONG* arg3,
ULONG* arg4);
LONG (*HalUpdateCapsule)(
VOID* arg1,
ULONG arg2,
union _LARGE_INTEGER arg3);
UCHAR (*HalPciMultiStageResumeCapable)();
VOID (*HalDmaFreeCrashDumpRegisters)(
ULONG arg1);
UCHAR (*HalAcpiAoacCapable)();
LONG (*HalInterruptSetDestination)(
struct _INTERRUPT_VECTOR_DATA* arg1,
struct _GROUP_AFFINITY* arg2,
ULONG* arg3);
VOID (*HalGetClockConfiguration)(
struct _HAL_CLOCK_TIMER_CONFIGURATION* arg1);
VOID (*HalClockTimerActivate)(
UCHAR arg1);
VOID (*HalClockTimerInitialize)();
VOID (*HalClockTimerStop)();
LONG (*HalClockTimerArm)(
enum _HAL_CLOCK_TIMER_MODE arg1,
ULONGLONG arg2,
ULONGLONG* arg3);
UCHAR (*HalTimerOnlyClockInterruptPending)();
VOID* (*HalAcpiGetMultiNode)();
VOID (*)(
ULONG arg1,
volatile LONG* arg2)(*HalPowerSetRebootHandler)(
VOID (*arg1)(
ULONG arg1,
volatile LONG* arg2));
VOID (*HalIommuRegisterDispatchTable)(
struct _HAL_IOMMU_DISPATCH* arg1);
VOID (*HalTimerWatchdogStart)();
VOID (*HalTimerWatchdogResetCountdown)();
VOID (*HalTimerWatchdogStop)();
UCHAR (*HalTimerWatchdogGeneratedLastReset)();
LONG (*HalTimerWatchdogTriggerSystemReset)(
UCHAR arg1);
LONG (*HalInterruptVectorDataToGsiv)(
struct _INTERRUPT_VECTOR_DATA* arg1,
ULONG* arg2);
LONG (*HalInterruptGetHighestPriorityInterrupt)(
ULONG* arg1,
UCHAR* arg2);
LONG (*HalProcessorOn)(
ULONG arg1);
LONG (*HalProcessorOff)();
LONG (*HalProcessorFreeze)();
LONG (*HalDmaLinkDeviceObjectByToken)(
ULONG arg1,
struct _DEVICE_OBJECT* arg2);
LONG (*HalDmaCheckAdapterToken)(
ULONG arg1);
VOID* Dummy4;
LONG (*HalTimerConvertPerformanceCounterToAuxiliaryCounter)(
ULONGLONG arg1,
ULONGLONG* arg2,
ULONGLONG* arg3);
LONG (*HalTimerConvertAuxiliaryCounterToPerformanceCounter)(
ULONGLONG arg1,
ULONGLONG* arg2,
ULONGLONG* arg3);
LONG (*HalTimerQueryAuxiliaryCounterFrequency)(
ULONGLONG* arg1);
LONG (*HalConnectThermalInterrupt)(
UCHAR (*arg1)(
struct _KINTERRUPT* arg1,
VOID* arg2));
UCHAR (*HalIsEFIRuntimeActive)();
UCHAR (*HalTimerQueryAndResetRtcErrors)(
UCHAR arg1);
VOID (*HalAcpiLateRestore)();
LONG (*KdWatchdogDelayExpiration)(
ULONGLONG* arg1);
LONG (*HalGetProcessorStats)(
enum _HAL_PROCESSOR_STAT_TYPE arg1,
ULONG arg2,
ULONG arg3,
ULONG* arg4);
ULONGLONG (*HalTimerWatchdogQueryDueTime)();
LONG (*HalConnectSyntheticInterrupt)(
UCHAR (*arg1)(
struct _KINTERRUPT* arg1,
VOID* arg2));
VOID (*HalPreprocessNmi)(
ULONG arg1);
LONG (*HalEnumerateEnvironmentVariablesWithFilter)(
ULONG arg1,
UCHAR (*arg2)(
struct _GUID* arg1,
WCHAR* arg2),
VOID* arg3,
ULONG* arg4);
LONG (*HalCaptureLastBranchRecordStack)(
ULONG arg1,
struct _HAL_LBR_ENTRY* arg2,
ULONG* arg3);
UCHAR (*HalClearLastBranchRecordStack)();
LONG (*HalConfigureLastBranchRecord)(
ULONG arg1,
ULONG arg2);
UCHAR (*HalGetLastBranchInformation)(
ULONG* arg1,
ULONG* arg2);
VOID (*HalResumeLastBranchRecord)(
UCHAR arg1);
LONG (*HalStartLastBranchRecord)(
ULONG arg1,
ULONG* arg2);
LONG (*HalStopLastBranchRecord)(
ULONG arg1);
LONG (*HalIommuBlockDevice)(
VOID* arg1);
LONG (*HalIommuUnblockDevice)(
struct _EXT_IOMMU_DEVICE_ID* arg1,
VOID** arg2);
LONG (*HalGetIommuInterface)(
ULONG arg1,
struct _DMA_IOMMU_INTERFACE* arg2);
LONG (*HalRequestGenericErrorRecovery)(
VOID* arg1,
ULONG* arg2);
LONG (*HalTimerQueryHostPerformanceCounter)(
ULONGLONG* arg1);
LONG (*HalTopologyQueryProcessorRelationships)(
ULONG arg1,
ULONG arg2,
UCHAR* arg3,
UCHAR* arg4,
UCHAR* arg5,
ULONG* arg6,
ULONG* arg7);
VOID (*HalInitPlatformDebugTriggers)();
VOID (*HalRunPlatformDebugTriggers)(
UCHAR arg1);
VOID* (*HalTimerGetReferencePage)();
};