4 typedef ULONG ARC_STATUS
;
6 typedef enum _ARC_CODES
33 typedef enum _IDENTIFIER_FLAG
44 typedef enum _CONFIGURATION_CLASS
54 } CONFIGURATION_CLASS
;
56 typedef enum _TYPE_OF_MEMORY
63 LoaderFirmwareTemporary
,
64 LoaderFirmwarePermanent
,
70 LoaderConsoleInDriver
,
71 LoaderConsoleOutDriver
,
72 LoaderStartupDpcStack
,
73 LoaderStartupKernelStack
,
74 LoaderStartupPanicStack
,
84 LoaderHALCachedMemory
,
85 LoaderLargePageFiller
,
90 typedef enum _MEMORY_TYPE
97 MemoryFirmwareTemporary
,
98 MemoryFirmwarePermanent
,
104 typedef struct _MEMORY_DESCRIPTOR
106 MEMORY_TYPE MemoryType
;
109 } MEMORY_DESCRIPTOR
, *PMEMORY_DESCRIPTOR
;
111 typedef struct _MEMORY_ALLOCATION_DESCRIPTOR
113 LIST_ENTRY ListEntry
;
114 TYPE_OF_MEMORY MemoryType
;
117 } MEMORY_ALLOCATION_DESCRIPTOR
, *PMEMORY_ALLOCATION_DESCRIPTOR
;
119 typedef struct _BOOT_DRIVER_LIST_ENTRY
121 LIST_ENTRY ListEntry
;
122 UNICODE_STRING FilePath
;
123 UNICODE_STRING RegistryPath
;
124 struct _LDR_DATA_TABLE_ENTRY
*DataTableEntry
;
125 } BOOT_DRIVER_LIST_ENTRY
, *PBOOT_DRIVER_LIST_ENTRY
;
127 typedef struct _ARC_DISK_SIGNATURE
129 LIST_ENTRY ListEntry
;
133 BOOLEAN ValidPartitionTable
;
137 CHAR GptSignature
[16];
138 } ARC_DISK_SIGNATURE
, *PARC_DISK_SIGNATURE
;
140 typedef struct _CONFIGURATION_COMPONENT
142 CONFIGURATION_CLASS Class
;
143 CONFIGURATION_TYPE Type
;
144 IDENTIFIER_FLAG Flags
;
149 ULONG ConfigurationDataLength
;
150 ULONG IdentifierLength
;
152 } CONFIGURATION_COMPONENT
, *PCONFIGURATION_COMPONENT
;
154 typedef struct _CONFIGURATION_COMPONENT_DATA
156 struct _CONFIGURATION_COMPONENT_DATA
*Parent
;
157 struct _CONFIGURATION_COMPONENT_DATA
*Child
;
158 struct _CONFIGURATION_COMPONENT_DATA
*Sibling
;
159 CONFIGURATION_COMPONENT ComponentEntry
;
160 PVOID ConfigurationData
;
161 } CONFIGURATION_COMPONENT_DATA
, *PCONFIGURATION_COMPONENT_DATA
;
163 typedef struct _ARC_DISK_INFORMATION
165 LIST_ENTRY DiskSignatureListHead
;
166 } ARC_DISK_INFORMATION
, *PARC_DISK_INFORMATION
;
168 typedef struct _MONITOR_CONFIGURATION_DATA
172 USHORT HorizontalResolution
;
173 USHORT HorizontalDisplayTime
;
174 USHORT HorizontalBackPorch
;
175 USHORT HorizontalFrontPorch
;
176 USHORT HorizontalSync
;
177 USHORT VerticalResolution
;
178 USHORT VerticalBackPorch
;
179 USHORT VerticalFrontPorch
;
181 USHORT HorizontalScreenSize
;
182 USHORT VerticalScreenSize
;
183 } MONITOR_CONFIGURATION_DATA
, *PMONITOR_CONFIGURATION_DATA
;
185 typedef struct _FLOPPY_CONFIGURATION_DATA
192 } FLOPPY_CONFIGURATION_DATA
, *PFLOPPY_CONFIGURATION_DATA
;
195 // SMBIOS Table Header (FIXME: maybe move to smbios.h?)
197 typedef struct _SMBIOS_TABLE_HEADER
204 USHORT MaximumStructureSize
;
205 UCHAR EntryPointRevision
;
208 UCHAR IntermediateChecksum
;
209 USHORT StructureTableLength
;
210 ULONG StructureTableAddress
;
211 USHORT NumberStructures
;
213 } SMBIOS_TABLE_HEADER
, *PSMBIOS_TABLE_HEADER
;
218 typedef struct _NLS_DATA_BLOCK
220 PVOID AnsiCodePageData
;
221 PVOID OemCodePageData
;
222 PVOID UnicodeCodePageData
;
223 } NLS_DATA_BLOCK
, *PNLS_DATA_BLOCK
;
226 // ACPI Docking State
228 typedef struct _PROFILE_ACPI_DOCKING_STATE
232 WCHAR SerialNumber
[1];
233 } PROFILE_ACPI_DOCKING_STATE
, *PPROFILE_ACPI_DOCKING_STATE
;
236 // Subsystem Specific Loader Blocks
238 typedef struct _PROFILE_PARAMETER_BLOCK
246 } PROFILE_PARAMETER_BLOCK
, *PPROFILE_PARAMETER_BLOCK
;
248 typedef struct _HEADLESS_LOADER_BLOCK
250 UCHAR UsedBiosSettings
;
261 UCHAR PciFunctionNumber
;
266 } HEADLESS_LOADER_BLOCK
, *PHEADLESS_LOADER_BLOCK
;
268 typedef struct _NETWORK_LOADER_BLOCK
271 ULONG DHCPServerACKLength
;
272 PCHAR BootServerReplyPacket
;
273 ULONG BootServerReplyPacketLength
;
274 } NETWORK_LOADER_BLOCK
, *PNETWORK_LOADER_BLOCK
;
276 typedef struct _LOADER_PERFORMANCE_DATA
280 } LOADER_PERFORMANCE_DATA
, *PLOADER_PERFORMANCE_DATA
;
283 // Extended Loader Parameter Block
285 typedef struct _LOADER_PARAMETER_EXTENSION
288 PROFILE_PARAMETER_BLOCK Profile
;
291 PVOID EmInfFileImage
;
293 PVOID TriageDumpBlock
;
297 ULONG LoaderPagesSpanned
;
298 PHEADLESS_LOADER_BLOCK HeadlessLoaderBlock
;
299 PSMBIOS_TABLE_HEADER SMBiosEPSHeader
;
302 PNETWORK_LOADER_BLOCK NetworkLoaderBlock
;
307 PCHAR HalpVectorToIRQL
;
308 LIST_ENTRY FirmwareDescriptorListHead
;
314 ULONG BootViaWinload
:1;
317 LOADER_PERFORMANCE_DATA LoaderPerformanceData
;
318 LIST_ENTRY BootApplicationPersistentData
;
326 } LOADER_PARAMETER_EXTENSION
, *PLOADER_PARAMETER_EXTENSION
;
329 // Architecture specific Loader Parameter Blocks
331 typedef struct _IA64_LOADER_BLOCK
334 } IA64_LOADER_BLOCK
, *PIA64_LOADER_BLOCK
;
336 typedef struct _ALPHA_LOADER_BLOCK
339 } ALPHA_LOADER_BLOCK
, *PALPHA_LOADER_BLOCK
;
341 typedef struct _I386_LOADER_BLOCK
343 PVOID CommonDataArea
;
346 } I386_LOADER_BLOCK
, *PI386_LOADER_BLOCK
;
348 typedef struct _PPC_LOADER_BLOCK
352 } PPC_LOADER_BLOCK
, *PPPC_LOADER_BLOCK
;
354 typedef struct _ARM_LOADER_BLOCK
357 ULONG InterruptStack
;
358 ULONG FirstLevelDcacheSize
;
359 ULONG FirstLevelDcacheFillSize
;
360 ULONG FirstLevelIcacheSize
;
361 ULONG FirstLevelIcacheFillSize
;
366 ULONG SecondLevelDcacheSize
;
367 ULONG SecondLevelDcacheFillSize
;
368 ULONG SecondLevelIcacheSize
;
369 ULONG SecondLevelIcacheFillSize
;
374 } ARM_LOADER_BLOCK
, *PARM_LOADER_BLOCK
;
377 // Firmware information block (NT6+)
380 typedef struct _VIRTUAL_EFI_RUNTIME_SERVICES
384 ULONG_PTR GetWakeupTime
;
385 ULONG_PTR SetWakeupTime
;
386 ULONG_PTR SetVirtualAddressMap
;
387 ULONG_PTR ConvertPointer
;
388 ULONG_PTR GetVariable
;
389 ULONG_PTR GetNextVariableName
;
390 ULONG_PTR SetVariable
;
391 ULONG_PTR GetNextHighMonotonicCount
;
392 ULONG_PTR ResetSystem
;
393 ULONG_PTR UpdateCapsule
;
394 ULONG_PTR QueryCapsuleCapabilities
;
395 ULONG_PTR QueryVariableInfo
;
396 } VIRTUAL_EFI_RUNTIME_SERVICES
, *PVIRTUAL_EFI_RUNTIME_SERVICES
;
398 typedef struct _EFI_FIRMWARE_INFORMATION
400 ULONG FirmwareVersion
;
401 PVIRTUAL_EFI_RUNTIME_SERVICES VirtualEfiRuntimeServices
;
402 ULONG SetVirtualAddressMapStatus
;
403 ULONG MissedMappingsCount
;
404 } EFI_FIRMWARE_INFORMATION
, *PEFI_FIRMWARE_INFORMATION
;
406 typedef struct _PCAT_FIRMWARE_INFORMATION
409 } PCAT_FIRMWARE_INFORMATION
, *PPCAT_FIRMWARE_INFORMATION
;
411 typedef struct _FIRMWARE_INFORMATION_LOADER_BLOCK
413 ULONG FirmwareTypeEfi
:1;
416 EFI_FIRMWARE_INFORMATION EfiInformation
;
417 PCAT_FIRMWARE_INFORMATION PcatInformation
;
419 } FIRMWARE_INFORMATION_LOADER_BLOCK
, *PFIRMWARE_INFORMATION_LOADER_BLOCK
;
422 // Loader Parameter Block
424 typedef struct _LOADER_PARAMETER_BLOCK
426 LIST_ENTRY LoadOrderListHead
;
427 LIST_ENTRY MemoryDescriptorListHead
;
428 LIST_ENTRY BootDriverListHead
;
429 ULONG_PTR KernelStack
;
433 ULONG RegistryLength
;
435 PCONFIGURATION_COMPONENT_DATA ConfigurationRoot
;
436 LPSTR ArcBootDeviceName
;
437 LPSTR ArcHalDeviceName
;
438 LPSTR NtBootPathName
;
441 PNLS_DATA_BLOCK NlsData
;
442 PARC_DISK_INFORMATION ArcDiskInformation
;
444 struct _SETUP_LOADER_BLOCK
*SetupLdrBlock
;
445 PLOADER_PARAMETER_EXTENSION Extension
;
448 I386_LOADER_BLOCK I386
;
449 ALPHA_LOADER_BLOCK Alpha
;
450 IA64_LOADER_BLOCK Ia64
;
451 PPC_LOADER_BLOCK PowerPC
;
452 ARM_LOADER_BLOCK Arm
;
454 FIRMWARE_INFORMATION_LOADER_BLOCK FirmwareInformation
;
455 } LOADER_PARAMETER_BLOCK
, *PLOADER_PARAMETER_BLOCK
;