3 Copyright (c) Alex Ionescu. All rights reserved.
11 Type definitions for the HAL.
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
27 #ifndef NTOS_MODE_USER
30 // Multi-Boot Flags (REMOVE ME)
33 #define MB_FLAGS_MEM_INFO (0x1)
34 #define MB_FLAGS_BOOT_DEVICE (0x2)
35 #define MB_FLAGS_COMMAND_LINE (0x4)
36 #define MB_FLAGS_MODULE_INFO (0x8)
37 #define MB_FLAGS_AOUT_SYMS (0x10)
38 #define MB_FLAGS_ELF_SYMS (0x20)
39 #define MB_FLAGS_MMAP_INFO (0x40)
40 #define MB_FLAGS_DRIVES_INFO (0x80)
41 #define MB_FLAGS_CONFIG_TABLE (0x100)
42 #define MB_FLAGS_BOOT_LOADER_NAME (0x200)
43 #define MB_FLAGS_APM_TABLE (0x400)
44 #define MB_FLAGS_GRAPHICS_TABLE (0x800)
45 #define MB_FLAGS_ACPI_TABLE (0x1000)
49 // HalShutdownSystem Types
51 typedef enum _FIRMWARE_ENTRY
57 HalInteractiveModeRoutine
,
59 } FIRMWARE_REENTRY
, *PFIRMWARE_REENTRY
;
62 // Hal Private dispatch Table
64 #define HAL_PRIVATE_DISPATCH_VERSION 2
65 typedef struct _HAL_PRIVATE_DISPATCH
68 PVOID HalHandlerForBus
;
69 PVOID HalHandlerForBus2
;
70 PVOID HalLocateHiberRanges
;
71 PVOID HalRegisterBusHandler
;
72 PVOID HalSetWakeEnable
;
73 PVOID HalSetWakeAlarm
;
74 PVOID HalTranslateBusAddress
;
75 PVOID HalTranslateBusAddress2
;
79 PVOID HalAllocateMapRegisters
;
80 PVOID KdSetupPciDeviceForDebugging
;
81 PVOID KdReleasePciDeviceforDebugging
;
82 PVOID KdGetAcpiTablePhase0
;
83 PVOID HalReferenceHandler
;
84 PVOID HalVectorToIDTEntry
;
86 PVOID KdUnmapVirtualAddress
;
87 } HAL_PRIVATE_DISPATCH
, *PHAL_PRIVATE_DISPATCH
;
93 typedef struct _NLS_TABLE_DATA
95 PVOID AnsiCodePageData
;
96 PVOID OemCodePageData
;
97 PVOID UnicodeCodePageData
;
98 } NLS_TABLE_DATA
, *PNLS_TABLE_DATA
;
101 // Subsystem Specific Loader Blocks
103 typedef struct _PROFILE_PARAMETER_BLOCK
111 } PROFILE_PARAMETER_BLOCK
, *PPROFILE_PARAMETER_BLOCK
;
113 typedef struct _HEADLESS_LOADER_BLOCK
116 } HEADLESS_LOADER_BLOCK
, *PHEADLESS_LOADER_BLOCK
;
118 typedef struct _NETWORK_LOADER_BLOCK
121 } NETWORK_LOADER_BLOCK
, *PNETWORK_LOADER_BLOCK
;
124 // Extended Loader Parameter Block
126 typedef struct _LOADER_PARAMETER_EXTENSION
129 PROFILE_PARAMETER_BLOCK ProfileParameterBlock
;
132 PVOID SpecialConfigInfFile
;
133 ULONG SpecialConfigInfSize
;
134 PVOID TriageDumpData
;
139 PHEADLESS_LOADER_BLOCK HeadlessLoaderBlock
;
141 PVOID PrefetchDatabaseBase
;
142 ULONG PrefetchDatabaseSize
;
143 PNETWORK_LOADER_BLOCK NetworkLoaderBlock
;
148 LIST_ENTRY FirmwareListEntry
;
151 } LOADER_PARAMETER_EXTENSION
, *PLOADER_PARAMETER_EXTENSION
;
154 // Architecture specific Loader Parameter Blocks
156 typedef struct _I386_LOADER_BLOCK
158 PVOID CommonDataArea
;
161 } I386_LOADER_BLOCK
, *PI386_LOADER_BLOCK
;
164 // Setup Loader Parameter Block
166 typedef struct _SETUP_LOADER_BLOCK
170 } SETUP_LOADER_BLOCK
, *PSETUP_LOADER_BLOCK
;
173 // Loader Parameter Block
175 typedef struct _LOADER_PARAMETER_BLOCK
177 LIST_ENTRY LoadOrderListHead
;
178 LIST_ENTRY MemoryDescriptorListHead
;
179 LIST_ENTRY DriverList
;
184 ULONG RegistryLength
;
186 PCONFIGURATION_COMPONENT_DATA ConfigurationRoot
;
187 LPSTR ArcBootDeviceName
;
188 LPSTR ArcHalDeviceName
;
192 PNLS_TABLE_DATA NlsTables
;
193 PARC_DISK_INFORMATION ArcDevices
;
195 PSETUP_LOADER_BLOCK SetupLdrBlock
;
196 PLOADER_PARAMETER_EXTENSION LpbExtension
;
199 I386_LOADER_BLOCK I386
;
201 } LOADER_PARAMETER_BLOCK
, *PLOADER_PARAMETER_BLOCK
;
206 // FIXME: ReactOS ONLY
208 typedef struct _LOADER_MODULE
214 } LOADER_MODULE
, *PLOADER_MODULE
;
215 typedef struct _LOADER_PARAMETER_BLOCK
230 ULONG BootLoaderName
;
231 ULONG PageDirectoryStart
;
232 ULONG PageDirectoryEnd
;
234 } LOADER_PARAMETER_BLOCK
, *PLOADER_PARAMETER_BLOCK
;
241 extern HAL_PRIVATE_DISPATCH NTSYSAPI HalPrivateDispatchTable
;
243 extern PHAL_PRIVATE_DISPATCH NTSYSAPI HalPrivateDispatchTable
;
245 extern ULONG NTSYSAPI KdComPortInUse
;