Skip to content

Instantly share code, notes, and snippets.

@inoperable
Last active August 31, 2024 08:36
Show Gist options
  • Save inoperable/25693d502acca3746e9d0b751e8b0ff3 to your computer and use it in GitHub Desktop.
Save inoperable/25693d502acca3746e9d0b751e8b0ff3 to your computer and use it in GitHub Desktop.

Revisions

  1. inoperable revised this gist Aug 31, 2024. No changes.
  2. inoperable renamed this gist Aug 31, 2024. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. inoperable created this gist Aug 31, 2024.
    162 changes: 162 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,162 @@
    //0x4f0 bytes (sizeof)
    struct HAL_PRIVATE_DISPATCH
    {
    ULONG Version; //0x0
    struct _BUS_HANDLER* (*HalHandlerForBus)(enum _INTERFACE_TYPE arg1, ULONG arg2); //0x8
    struct _BUS_HANDLER* (*HalHandlerForConfigSpace)(enum _BUS_DATA_TYPE arg1, ULONG arg2); //0x10
    VOID (*HalLocateHiberRanges)(VOID* arg1); //0x18
    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); //0x20
    VOID (*HalSetWakeEnable)(UCHAR arg1); //0x28
    LONG (*HalSetWakeAlarm)(ULONGLONG arg1, ULONGLONG arg2); //0x30
    UCHAR (*HalPciTranslateBusAddress)(enum _INTERFACE_TYPE arg1, ULONG arg2, union _LARGE_INTEGER arg3, ULONG* arg4, union _LARGE_INTEGER* arg5); //0x38
    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); //0x40
    VOID (*HalHaltSystem)(); //0x48
    UCHAR (*HalFindBusAddressTranslation)(union _LARGE_INTEGER arg1, ULONG* arg2, union _LARGE_INTEGER* arg3, ULONGLONG* arg4, UCHAR arg5); //0x50
    UCHAR (*HalResetDisplay)(); //0x58
    LONG (*HalAllocateMapRegisters)(struct _ADAPTER_OBJECT* arg1, ULONG arg2, ULONG arg3, struct _MAP_REGISTER_ENTRY* arg4); //0x60
    LONG (*KdSetupPciDeviceForDebugging)(VOID* arg1, struct _DEBUG_DEVICE_DESCRIPTOR* arg2); //0x68
    LONG (*KdReleasePciDeviceForDebugging)(struct _DEBUG_DEVICE_DESCRIPTOR* arg1); //0x70
    VOID* (*KdGetAcpiTablePhase0)(struct _LOADER_PARAMETER_BLOCK* arg1, ULONG arg2); //0x78
    VOID (*KdCheckPowerButton)(); //0x80
    UCHAR (*HalVectorToIDTEntry)(ULONG arg1); //0x88
    VOID* (*KdMapPhysicalMemory64)(union _LARGE_INTEGER arg1, ULONG arg2, UCHAR arg3); //0x90
    VOID (*KdUnmapVirtualAddress)(VOID* arg1, ULONG arg2, UCHAR arg3); //0x98
    ULONG (*KdGetPciDataByOffset)(ULONG arg1, ULONG arg2, VOID* arg3, ULONG arg4, ULONG arg5); //0xa0
    ULONG (*KdSetPciDataByOffset)(ULONG arg1, ULONG arg2, VOID* arg3, ULONG arg4, ULONG arg5); //0xa8
    ULONG (*HalGetInterruptVectorOverride)(enum _INTERFACE_TYPE arg1, ULONG arg2, ULONG arg3, ULONG arg4, UCHAR* arg5, ULONGLONG* arg6); //0xb0
    LONG (*HalGetVectorInputOverride)(ULONG arg1, struct _GROUP_AFFINITY* arg2, ULONG* arg3, enum _KINTERRUPT_POLARITY* arg4, struct _INTERRUPT_REMAPPING_INFO* arg5); //0xb8
    LONG (*HalLoadMicrocode)(VOID* arg1); //0xc0
    LONG (*HalUnloadMicrocode)(); //0xc8
    LONG (*HalPostMicrocodeUpdate)(); //0xd0
    LONG (*HalAllocateMessageTargetOverride)(struct _DEVICE_OBJECT* arg1, struct _GROUP_AFFINITY* arg2, ULONG arg3, enum _KINTERRUPT_MODE arg4, UCHAR arg5, ULONG* arg6, UCHAR* arg7, ULONG* arg8); //0xd8
    VOID (*HalFreeMessageTargetOverride)(struct _DEVICE_OBJECT* arg1, ULONG arg2, struct _GROUP_AFFINITY* arg3); //0xe0
    LONG (*HalDpReplaceBegin)(struct _HAL_DP_REPLACE_PARAMETERS* arg1, VOID** arg2); //0xe8
    VOID (*HalDpReplaceTarget)(VOID* arg1); //0xf0
    LONG (*HalDpReplaceControl)(ULONG arg1, VOID* arg2); //0xf8
    VOID (*HalDpReplaceEnd)(VOID* arg1); //0x100
    VOID (*HalPrepareForBugcheck)(ULONG arg1); //0x108
    UCHAR (*HalQueryWakeTime)(ULONGLONG* arg1, ULONGLONG* arg2); //0x110
    VOID (*HalReportIdleStateUsage)(UCHAR arg1, struct _KAFFINITY_EX* arg2); //0x118
    VOID (*HalTscSynchronization)(UCHAR arg1, ULONG* arg2); //0x120
    LONG (*HalWheaInitProcessorGenericSection)(struct _WHEA_ERROR_RECORD_SECTION_DESCRIPTOR* arg1, struct _WHEA_PROCESSOR_GENERIC_ERROR_SECTION* arg2); //0x128
    VOID (*HalStopLegacyUsbInterrupts)(enum _SYSTEM_POWER_STATE arg1); //0x130
    LONG (*HalReadWheaPhysicalMemory)(union _LARGE_INTEGER arg1, ULONG arg2, VOID* arg3); //0x138
    LONG (*HalWriteWheaPhysicalMemory)(union _LARGE_INTEGER arg1, ULONG arg2, VOID* arg3); //0x140
    LONG (*HalDpMaskLevelTriggeredInterrupts)(); //0x148
    LONG (*HalDpUnmaskLevelTriggeredInterrupts)(); //0x150
    LONG (*HalDpGetInterruptReplayState)(VOID* arg1, VOID** arg2); //0x158
    LONG (*HalDpReplayInterrupts)(VOID* arg1); //0x160
    UCHAR (*HalQueryIoPortAccessSupported)(); //0x168
    LONG (*KdSetupIntegratedDeviceForDebugging)(VOID* arg1, struct _DEBUG_DEVICE_DESCRIPTOR* arg2); //0x170
    LONG (*KdReleaseIntegratedDeviceForDebugging)(struct _DEBUG_DEVICE_DESCRIPTOR* arg1); //0x178
    VOID (*HalGetEnlightenmentInformation)(struct _HAL_INTEL_ENLIGHTENMENT_INFORMATION* arg1); //0x180
    VOID* (*HalAllocateEarlyPages)(struct _LOADER_PARAMETER_BLOCK* arg1, ULONG arg2, ULONGLONG* arg3, ULONG arg4); //0x188
    VOID* (*HalMapEarlyPages)(ULONGLONG arg1, ULONG arg2, ULONG arg3); //0x190
    VOID* Dummy1; //0x198
    VOID* Dummy2; //0x1a0
    VOID (*HalNotifyProcessorFreeze)(UCHAR arg1, UCHAR arg2); //0x1a8
    LONG (*HalPrepareProcessorForIdle)(ULONG arg1); //0x1b0
    VOID (*HalRegisterLogRoutine)(struct _HAL_LOG_REGISTER_CONTEXT* arg1); //0x1b8
    VOID (*HalResumeProcessorFromIdle)(); //0x1c0
    VOID* Dummy; //0x1c8
    ULONG (*HalVectorToIDTEntryEx)(ULONG arg1); //0x1d0
    LONG (*HalSecondaryInterruptQueryPrimaryInformation)(struct _INTERRUPT_VECTOR_DATA* arg1, ULONG* arg2); //0x1d8
    LONG (*HalMaskInterrupt)(ULONG arg1, ULONG arg2); //0x1e0
    LONG (*HalUnmaskInterrupt)(ULONG arg1, ULONG arg2); //0x1e8
    UCHAR (*HalIsInterruptTypeSecondary)(ULONG arg1, ULONG arg2); //0x1f0
    LONG (*HalAllocateGsivForSecondaryInterrupt)(CHAR* arg1, USHORT arg2, ULONG* arg3); //0x1f8
    LONG (*HalAddInterruptRemapping)(ULONG arg1, ULONG arg2, struct _PCI_BUSMASTER_DESCRIPTOR* arg3, UCHAR arg4, struct _INTERRUPT_VECTOR_DATA* arg5, ULONG arg6); //0x200
    VOID (*HalRemoveInterruptRemapping)(ULONG arg1, ULONG arg2, struct _PCI_BUSMASTER_DESCRIPTOR* arg3, UCHAR arg4, struct _INTERRUPT_VECTOR_DATA* arg5, ULONG arg6); //0x208
    VOID (*HalSaveAndDisableHvEnlightenment)(UCHAR arg1); //0x210
    VOID (*HalRestoreHvEnlightenment)(); //0x218
    VOID (*HalFlushIoBuffersExternalCache)(struct _MDL* arg1, UCHAR arg2); //0x220
    VOID (*HalFlushExternalCache)(UCHAR arg1); //0x228
    LONG (*HalPciEarlyRestore)(enum _SYSTEM_POWER_STATE arg1); //0x230
    LONG (*HalGetProcessorId)(ULONG arg1, ULONG* arg2, ULONG* arg3); //0x238
    LONG (*HalAllocatePmcCounterSet)(ULONG arg1, enum _KPROFILE_SOURCE* arg2, ULONG arg3, struct _HAL_PMC_COUNTERS** arg4); //0x240
    VOID (*HalCollectPmcCounters)(struct _HAL_PMC_COUNTERS* arg1, ULONGLONG* arg2); //0x248
    VOID (*HalFreePmcCounterSet)(struct _HAL_PMC_COUNTERS* arg1); //0x250
    LONG (*HalProcessorHalt)(ULONG arg1, VOID* arg2, LONG (*arg3)(VOID* arg1)); //0x258
    ULONGLONG (*HalTimerQueryCycleCounter)(ULONGLONG* arg1); //0x260
    VOID* Dummy3; //0x268
    VOID (*HalPciMarkHiberPhase)(); //0x270
    LONG (*HalQueryProcessorRestartEntryPoint)(union _LARGE_INTEGER* arg1); //0x278
    LONG (*HalRequestInterrupt)(ULONG arg1); //0x280
    LONG (*HalEnumerateUnmaskedInterrupts)(UCHAR (*arg1)(VOID* arg1, struct _HAL_UNMASKED_INTERRUPT_INFORMATION* arg2), VOID* arg2, struct _HAL_UNMASKED_INTERRUPT_INFORMATION* arg3); //0x288
    VOID (*HalFlushAndInvalidatePageExternalCache)(union _LARGE_INTEGER arg1); //0x290
    LONG (*KdEnumerateDebuggingDevices)(VOID* arg1, struct _DEBUG_DEVICE_DESCRIPTOR* arg2, enum KD_CALLBACK_ACTION (*arg3)(struct _DEBUG_DEVICE_DESCRIPTOR* arg1)); //0x298
    VOID (*HalFlushIoRectangleExternalCache)(struct _MDL* arg1, ULONG arg2, ULONG arg3, ULONG arg4, ULONG arg5, UCHAR arg6); //0x2a0
    VOID (*HalPowerEarlyRestore)(ULONG arg1); //0x2a8
    LONG (*HalQueryCapsuleCapabilities)(VOID* arg1, ULONG arg2, ULONGLONG* arg3, ULONG* arg4); //0x2b0
    LONG (*HalUpdateCapsule)(VOID* arg1, ULONG arg2, union _LARGE_INTEGER arg3); //0x2b8
    UCHAR (*HalPciMultiStageResumeCapable)(); //0x2c0
    VOID (*HalDmaFreeCrashDumpRegisters)(ULONG arg1); //0x2c8
    UCHAR (*HalAcpiAoacCapable)(); //0x2d0
    LONG (*HalInterruptSetDestination)(struct _INTERRUPT_VECTOR_DATA* arg1, struct _GROUP_AFFINITY* arg2, ULONG* arg3); //0x2d8
    VOID (*HalGetClockConfiguration)(struct _HAL_CLOCK_TIMER_CONFIGURATION* arg1); //0x2e0
    VOID (*HalClockTimerActivate)(UCHAR arg1); //0x2e8
    VOID (*HalClockTimerInitialize)(); //0x2f0
    VOID (*HalClockTimerStop)(); //0x2f8
    LONG (*HalClockTimerArm)(enum _HAL_CLOCK_TIMER_MODE arg1, ULONGLONG arg2, ULONGLONG* arg3); //0x300
    UCHAR (*HalTimerOnlyClockInterruptPending)(); //0x308
    VOID* (*HalAcpiGetMultiNode)(); //0x310
    VOID (*)(ULONG arg1, volatile LONG* arg2)(*HalPowerSetRebootHandler)(VOID (*arg1)(ULONG arg1, volatile LONG* arg2)); //0x318
    VOID (*HalIommuRegisterDispatchTable)(struct _HAL_IOMMU_DISPATCH* arg1); //0x320
    VOID (*HalTimerWatchdogStart)(); //0x328
    VOID (*HalTimerWatchdogResetCountdown)(); //0x330
    VOID (*HalTimerWatchdogStop)(); //0x338
    UCHAR (*HalTimerWatchdogGeneratedLastReset)(); //0x340
    LONG (*HalTimerWatchdogTriggerSystemReset)(UCHAR arg1); //0x348
    LONG (*HalInterruptVectorDataToGsiv)(struct _INTERRUPT_VECTOR_DATA* arg1, ULONG* arg2); //0x350
    LONG (*HalInterruptGetHighestPriorityInterrupt)(ULONG* arg1, UCHAR* arg2); //0x358
    LONG (*HalProcessorOn)(ULONG arg1); //0x360
    LONG (*HalProcessorOff)(); //0x368
    LONG (*HalProcessorFreeze)(); //0x370
    LONG (*HalDmaLinkDeviceObjectByToken)(ULONGLONG arg1, struct _DEVICE_OBJECT* arg2); //0x378
    LONG (*HalDmaCheckAdapterToken)(ULONGLONG arg1); //0x380
    VOID* Dummy4; //0x388
    LONG (*HalTimerConvertPerformanceCounterToAuxiliaryCounter)(ULONGLONG arg1, ULONGLONG* arg2, ULONGLONG* arg3); //0x390
    LONG (*HalTimerConvertAuxiliaryCounterToPerformanceCounter)(ULONGLONG arg1, ULONGLONG* arg2, ULONGLONG* arg3); //0x398
    LONG (*HalTimerQueryAuxiliaryCounterFrequency)(ULONGLONG* arg1); //0x3a0
    LONG (*HalConnectThermalInterrupt)(UCHAR (*arg1)(struct _KINTERRUPT* arg1, VOID* arg2)); //0x3a8
    UCHAR (*HalIsEFIRuntimeActive)(); //0x3b0
    UCHAR (*HalTimerQueryAndResetRtcErrors)(UCHAR arg1); //0x3b8
    VOID (*HalAcpiLateRestore)(); //0x3c0
    LONG (*KdWatchdogDelayExpiration)(ULONGLONG* arg1); //0x3c8
    LONG (*HalGetProcessorStats)(enum _HAL_PROCESSOR_STAT_TYPE arg1, ULONG arg2, ULONG arg3, ULONGLONG* arg4); //0x3d0
    ULONGLONG (*HalTimerWatchdogQueryDueTime)(UCHAR arg1); //0x3d8
    LONG (*HalConnectSyntheticInterrupt)(UCHAR (*arg1)(struct _KINTERRUPT* arg1, VOID* arg2)); //0x3e0
    VOID (*HalPreprocessNmi)(ULONG arg1); //0x3e8
    LONG (*HalEnumerateEnvironmentVariablesWithFilter)(ULONG arg1, UCHAR (*arg2)(struct _GUID* arg1, WCHAR* arg2), VOID* arg3, ULONG* arg4); //0x3f0
    LONG (*HalCaptureLastBranchRecordStack)(ULONG arg1, struct _HAL_LBR_ENTRY* arg2, ULONG* arg3); //0x3f8
    UCHAR (*HalClearLastBranchRecordStack)(); //0x400
    LONG (*HalConfigureLastBranchRecord)(ULONG arg1, ULONG arg2); //0x408
    UCHAR (*HalGetLastBranchInformation)(ULONG* arg1, ULONG* arg2); //0x410
    VOID (*HalResumeLastBranchRecord)(UCHAR arg1); //0x418
    LONG (*HalStartLastBranchRecord)(ULONG arg1, ULONG* arg2); //0x420
    LONG (*HalStopLastBranchRecord)(ULONG arg1); //0x428
    LONG (*HalIommuBlockDevice)(struct _IOMMU_DMA_DEVICE* arg1); //0x430
    LONG (*HalIommuUnblockDevice)(struct _EXT_IOMMU_DEVICE_ID* arg1, struct _DEVICE_OBJECT* arg2, struct _IOMMU_DMA_DEVICE** arg3); //0x438
    LONG (*HalGetIommuInterface)(ULONG arg1, struct _DMA_IOMMU_INTERFACE* arg2); //0x440
    LONG (*HalRequestGenericErrorRecovery)(VOID* arg1, ULONG* arg2); //0x448
    LONG (*HalTimerQueryHostPerformanceCounter)(ULONGLONG* arg1); //0x450
    LONG (*HalTopologyQueryProcessorRelationships)(ULONG arg1, ULONG arg2, UCHAR* arg3, UCHAR* arg4, UCHAR* arg5, ULONG* arg6, ULONG* arg7); //0x458
    VOID (*HalInitPlatformDebugTriggers)(); //0x460
    VOID (*HalRunPlatformDebugTriggers)(UCHAR arg1); //0x468
    VOID* (*HalTimerGetReferencePage)(); //0x470
    LONG (*HalGetHiddenProcessorPowerInterface)(struct _HIDDEN_PROCESSOR_POWER_INTERFACE* arg1); //0x478
    ULONG (*HalGetHiddenProcessorPackageId)(ULONG arg1); //0x480
    ULONG (*HalGetHiddenPackageProcessorCount)(ULONG arg1); //0x488
    LONG (*HalGetHiddenProcessorApicIdByIndex)(ULONG arg1, ULONG* arg2); //0x490
    LONG (*HalRegisterHiddenProcessorIdleState)(ULONG arg1, ULONGLONG arg2); //0x498
    VOID (*HalIommuReportIommuFault)(ULONGLONG arg1, struct _FAULT_INFORMATION* arg2); //0x4a0
    UCHAR (*HalIommuDmaRemappingCapable)(struct _EXT_IOMMU_DEVICE_ID* arg1, ULONG* arg2); //0x4a8
    LONG (*HalAllocatePmcCounterSetEx)(ULONG arg1, enum _KPROFILE_SOURCE* arg2, ULONG arg3, ULONG* arg4, struct _HAL_PMC_COUNTERS** arg5, ULONG* arg6); //0x4b0
    LONG (*HalStartProfileInterruptEx)(enum _KPROFILE_SOURCE arg1, ULONG* arg2, ULONG* arg3, struct _HAL_PMC_COUNTERS** arg4); //0x4b8
    LONG (*HalGetIommuInterfaceEx)(ULONG arg1, ULONGLONG arg2, struct _DMA_IOMMU_INTERFACE_EX* arg3); //0x4c0
    VOID (*HalNotifyIommuDomainPolicyChange)(struct _DEVICE_OBJECT* arg1); //0x4c8
    UCHAR (*HalPciGetDeviceLocationFromPhysicalAddress)(ULONGLONG arg1, USHORT* arg2, UCHAR* arg3, UCHAR* arg4, UCHAR* arg5); //0x4d0
    VOID (*HalInvokeSmc)(ULONGLONG arg1, ULONGLONG arg2, ULONGLONG arg3, ULONGLONG arg4, ULONGLONG arg5, ULONGLONG arg6, ULONGLONG arg7, ULONGLONG* arg8, ULONGLONG* arg9, ULONGLONG* arg10, ULONGLONG* arg11); //0x4d8
    VOID (*HalInvokeHvc)(ULONGLONG arg1, ULONGLONG arg2, ULONGLONG arg3, ULONGLONG arg4, ULONGLONG arg5, ULONGLONG arg6, ULONGLONG arg7, ULONGLONG* arg8, ULONGLONG* arg9, ULONGLONG* arg10, ULONGLONG* arg11); //0x4e0
    union _LARGE_INTEGER (*HalGetSoftRebootDatabase)(); //0x4e8
    }