3 Copyright (c) Alex Ionescu. All rights reserved.
11 Type definitions for the HAL.
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
27 #ifndef NTOS_MODE_USER
30 // HalShutdownSystem Types
32 typedef enum _FIRMWARE_REENTRY
38 HalInteractiveModeRoutine
,
40 } FIRMWARE_REENTRY
, *PFIRMWARE_REENTRY
;
43 // HAL Private function Types
47 (NTAPI
*pHalHandlerForConfigSpace
)(
48 IN BUS_DATA_TYPE ConfigSpace
,
54 (NTAPI
*PINSTALL_BUS_HANDLER
)(
60 (NTAPI
*pHalRegisterBusHandler
)(
61 IN INTERFACE_TYPE InterfaceType
,
62 IN BUS_DATA_TYPE ConfigSpace
,
64 IN INTERFACE_TYPE ParentInterfaceType
,
65 IN ULONG ParentBusNumber
,
67 IN PINSTALL_BUS_HANDLER InstallCallback
,
68 OUT PBUS_HANDLER
*BusHandler
73 (NTAPI
*pHalSetWakeEnable
)(
79 (NTAPI
*pHalSetWakeAlarm
)(
80 IN ULONGLONG AlartTime
,
81 IN PTIME_FIELDS TimeFields
86 (NTAPI
*pHalLocateHiberRanges
)(
92 (NTAPI
*pHalAllocateMapRegisters
)(
93 IN PADAPTER_OBJECT AdapterObject
,
96 PMAP_REGISTER_ENTRY Registers
100 // HAL Bus Handler Callback Types
104 (NTAPI
*pAdjustResourceList
)(
105 IN PBUS_HANDLER BusHandler
,
107 IN OUT PCM_RESOURCE_LIST Resources
112 (NTAPI
*pAssignSlotResources
)(
113 IN PBUS_HANDLER BusHandler
,
114 IN PBUS_HANDLER RootHandler
,
115 IN PUNICODE_STRING RegistryPath
,
116 IN PUNICODE_STRING DriverClassName
,
117 IN PDRIVER_OBJECT DriverObject
,
118 IN PDEVICE_OBJECT DeviceObject
,
120 IN OUT PCM_RESOURCE_LIST
*AllocatedResources
125 (NTAPI
*pGetSetBusData
)(
126 IN PBUS_HANDLER BusHandler
,
127 IN PBUS_HANDLER RootHandler
,
128 IN PCI_SLOT_NUMBER SlotNumber
,
136 (NTAPI
*pGetInterruptVector
)(
137 IN PBUS_HANDLER BusHandler
,
139 IN ULONG BusInterruptLevel
,
140 IN ULONG BusInterruptVector
,
142 OUT PKAFFINITY Affinity
147 (NTAPI
*pTranslateBusAddress
)(
148 IN PBUS_HANDLER BusHandler
,
150 IN PHYSICAL_ADDRESS BusAddress
,
151 IN OUT PULONG AddressSpace
,
152 OUT PPHYSICAL_ADDRESS TranslatedAddress
156 // Hal Private dispatch Table
158 #define HAL_PRIVATE_DISPATCH_VERSION 2
159 typedef struct _HAL_PRIVATE_DISPATCH
162 pHalHandlerForBus HalHandlerForBus
;
163 pHalHandlerForConfigSpace HalHandlerForConfigSpace
;
164 pHalLocateHiberRanges HalLocateHiberRanges
;
165 pHalRegisterBusHandler HalRegisterBusHandler
;
166 pHalSetWakeEnable HalSetWakeEnable
;
167 pHalSetWakeAlarm HalSetWakeAlarm
;
168 pHalTranslateBusAddress HalPciTranslateBusAddress
;
169 pHalAssignSlotResources HalPciAssignSlotResources
;
170 pHalHaltSystem HalHaltSystem
;
171 pHalFindBusAddressTranslation HalFindBusAddressTranslation
;
172 pHalResetDisplay HalResetDisplay
;
173 pHalAllocateMapRegisters HalAllocateMapRegisters
;
174 pKdSetupPciDeviceForDebugging KdSetupPciDeviceForDebugging
;
175 pKdReleasePciDeviceForDebugging KdReleasePciDeviceforDebugging
;
176 pKdGetAcpiTablePhase0 KdGetAcpiTablePhase0
;
177 pKdCheckPowerButton KdCheckPowerButton
;
178 pHalVectorToIDTEntry HalVectorToIDTEntry
;
179 pKdMapPhysicalMemory64 KdMapPhysicalMemory64
;
180 pKdUnmapVirtualAddress KdUnmapVirtualAddress
;
181 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
182 pKdGetPciDataByOffset KdGetPciDataByOffset
;
183 pKdSetPciDataByOffset KdSetPciDataByOffset
;
184 PVOID HalGetInterruptVectorOverride
;
185 PVOID HalGetVectorInputOverride
;
187 } HAL_PRIVATE_DISPATCH
, *PHAL_PRIVATE_DISPATCH
;
192 typedef struct _BUS_HANDLER
195 INTERFACE_TYPE InterfaceType
;
196 BUS_DATA_TYPE ConfigurationType
;
198 PDEVICE_OBJECT DeviceObject
;
199 struct _BUS_HANDLER
*ParentHandler
;
201 ULONG DeviceControlExtensionSize
;
202 //PSUPPORTED_RANGES BusAddresses;
204 pGetSetBusData GetBusData
;
205 pGetSetBusData SetBusData
;
206 pAdjustResourceList AdjustResourceList
;
207 pAssignSlotResources AssignSlotResources
;
208 pGetInterruptVector GetInterruptVector
;
209 pTranslateBusAddress TranslateBusAddress
;
215 #if defined(_NTDRIVER_) || defined(_NTHAL_)
216 extern NTSYSAPI PHAL_PRIVATE_DISPATCH HalPrivateDispatchTable
;
217 #define HALPRIVATEDISPATCH ((PHAL_PRIVATE_DISPATCH)&HalPrivateDispatchTable)
219 extern NTSYSAPI HAL_PRIVATE_DISPATCH HalPrivateDispatchTable
;
220 #define HALPRIVATEDISPATCH (&HalPrivateDispatchTable)
227 extern NTHALAPI PUCHAR
*KdComPortInUse
;