4 typedef enum _IDENTIFIER_FLAG
15 typedef enum _CONFIGURATION_CLASS
25 } CONFIGURATION_CLASS
;
27 typedef enum _TYPE_OF_MEMORY
34 LoaderFirmwareTemporary
,
35 LoaderFirmwarePermanent
,
41 LoaderConsoleInDriver
,
42 LoaderConsoleOutDriver
,
43 LoaderStartupDpcStack
,
44 LoaderStartupKernelStack
,
45 LoaderStartupPanicStack
,
55 LoaderHALCachedMemory
,
56 LoaderLargePageFiller
,
60 typedef struct _MEMORY_ALLOCATION_DESCRIPTOR
63 TYPE_OF_MEMORY MemoryType
;
66 } MEMORY_ALLOCATION_DESCRIPTOR
, *PMEMORY_ALLOCATION_DESCRIPTOR
;
68 typedef struct _BOOT_DRIVER_LIST_ENTRY
71 UNICODE_STRING FilePath
;
72 UNICODE_STRING RegistryPath
;
73 struct _LDR_DATA_TABLE_ENTRY
*DataTableEntry
;
74 } BOOT_DRIVER_LIST_ENTRY
, *PBOOT_DRIVER_LIST_ENTRY
;
76 typedef struct _ARC_DISK_SIGNATURE
82 BOOLEAN ValidPartitionTable
;
86 CHAR GptSignature
[16];
87 } ARC_DISK_SIGNATURE
, *PARC_DISK_SIGNATURE
;
89 typedef struct _CONFIGURATION_COMPONENT
91 CONFIGURATION_CLASS Class
;
92 CONFIGURATION_TYPE Type
;
93 IDENTIFIER_FLAG Flags
;
98 ULONG ConfigurationDataLength
;
99 ULONG IdentifierLength
;
101 } CONFIGURATION_COMPONENT
, *PCONFIGURATION_COMPONENT
;
103 typedef struct _CONFIGURATION_COMPONENT_DATA
105 struct _CONFIGURATION_COMPONENT_DATA
*Parent
;
106 struct _CONFIGURATION_COMPONENT_DATA
*Child
;
107 struct _CONFIGURATION_COMPONENT_DATA
*Sibling
;
108 CONFIGURATION_COMPONENT ComponentEntry
;
109 PVOID ConfigurationData
;
110 } CONFIGURATION_COMPONENT_DATA
, *PCONFIGURATION_COMPONENT_DATA
;
112 typedef struct _ARC_DISK_INFORMATION
114 LIST_ENTRY DiskSignatureListHead
;
115 } ARC_DISK_INFORMATION
, *PARC_DISK_INFORMATION
;
117 typedef struct _MONITOR_CONFIGURATION_DATA
121 USHORT HorizontalResolution
;
122 USHORT HorizontalDisplayTime
;
123 USHORT HorizontalBackPorch
;
124 USHORT HorizontalFrontPorch
;
125 USHORT HorizontalSync
;
126 USHORT VerticalResolution
;
127 USHORT VerticalBackPorch
;
128 USHORT VerticalFrontPorch
;
130 USHORT HorizontalScreenSize
;
131 USHORT VerticalScreenSize
;
132 } MONITOR_CONFIGURATION_DATA
, *PMONITOR_CONFIGURATION_DATA
;
134 typedef struct _FLOPPY_CONFIGURATION_DATA
141 } FLOPPY_CONFIGURATION_DATA
, *PFLOPPY_CONFIGURATION_DATA
;
144 // SMBIOS Table Header (FIXME: maybe move to smbios.h?)
146 typedef struct _SMBIOS_TABLE_HEADER
153 USHORT MaximumStructureSize
;
154 UCHAR EntryPointRevision
;
157 UCHAR IntermediateChecksum
;
158 USHORT StructureTableLength
;
159 ULONG StructureTableAddress
;
160 USHORT NumberStructures
;
162 } SMBIOS_TABLE_HEADER
, *PSMBIOS_TABLE_HEADER
;
167 typedef struct _NLS_DATA_BLOCK
169 PVOID AnsiCodePageData
;
170 PVOID OemCodePageData
;
171 PVOID UnicodeCodePageData
;
172 } NLS_DATA_BLOCK
, *PNLS_DATA_BLOCK
;
175 // ACPI Docking State
177 typedef struct _PROFILE_ACPI_DOCKING_STATE
181 WCHAR SerialNumber
[1];
182 } PROFILE_ACPI_DOCKING_STATE
, *PPROFILE_ACPI_DOCKING_STATE
;
185 // Subsystem Specific Loader Blocks
187 typedef struct _PROFILE_PARAMETER_BLOCK
195 } PROFILE_PARAMETER_BLOCK
, *PPROFILE_PARAMETER_BLOCK
;
197 typedef struct _HEADLESS_LOADER_BLOCK
199 UCHAR UsedBiosSettings
;
210 UCHAR PciFunctionNumber
;
215 } HEADLESS_LOADER_BLOCK
, *PHEADLESS_LOADER_BLOCK
;
217 typedef struct _NETWORK_LOADER_BLOCK
220 ULONG DHCPServerACKLength
;
221 PCHAR BootServerReplyPacket
;
222 ULONG BootServerReplyPacketLength
;
223 } NETWORK_LOADER_BLOCK
, *PNETWORK_LOADER_BLOCK
;
225 typedef struct _LOADER_PERFORMANCE_DATA
229 } LOADER_PERFORMANCE_DATA
, *PLOADER_PERFORMANCE_DATA
;
232 // Extended Loader Parameter Block
234 typedef struct _LOADER_PARAMETER_EXTENSION
237 PROFILE_PARAMETER_BLOCK Profile
;
240 PVOID EmInfFileImage
;
242 PVOID TriageDumpBlock
;
246 ULONG LoaderPagesSpanned
;
247 PHEADLESS_LOADER_BLOCK HeadlessLoaderBlock
;
248 PSMBIOS_TABLE_HEADER SMBiosEPSHeader
;
251 PNETWORK_LOADER_BLOCK NetworkLoaderBlock
;
256 PCHAR HalpVectorToIRQL
;
257 LIST_ENTRY FirmwareDescriptorListHead
;
263 ULONG BootViaWinload
:1;
266 LOADER_PERFORMANCE_DATA LoaderPerformanceData
;
267 LIST_ENTRY BootApplicationPersistentData
;
270 } LOADER_PARAMETER_EXTENSION
, *PLOADER_PARAMETER_EXTENSION
;
273 // Architecture specific Loader Parameter Blocks
275 typedef struct _IA64_LOADER_BLOCK
278 } IA64_LOADER_BLOCK
, *PIA64_LOADER_BLOCK
;
280 typedef struct _ALPHA_LOADER_BLOCK
283 } ALPHA_LOADER_BLOCK
, *PALPHA_LOADER_BLOCK
;
285 typedef struct _I386_LOADER_BLOCK
287 PVOID CommonDataArea
;
290 } I386_LOADER_BLOCK
, *PI386_LOADER_BLOCK
;
292 typedef struct _POWERPC_LOADER_BLOCK
295 } POWERPC_LOADER_BLOCK
, *PPOWERPC_LOADER_BLOCK
;
298 // Loader Parameter Block
300 typedef struct _LOADER_PARAMETER_BLOCK
302 LIST_ENTRY LoadOrderListHead
;
303 LIST_ENTRY MemoryDescriptorListHead
;
304 LIST_ENTRY BootDriverListHead
;
305 ULONG_PTR KernelStack
;
309 ULONG RegistryLength
;
311 PCONFIGURATION_COMPONENT_DATA ConfigurationRoot
;
312 LPSTR ArcBootDeviceName
;
313 LPSTR ArcHalDeviceName
;
314 LPSTR NtBootPathName
;
317 PNLS_DATA_BLOCK NlsData
;
318 PARC_DISK_INFORMATION ArcDiskInformation
;
320 struct _SETUP_LOADER_BLOCK
*SetupLdrBlock
;
321 PLOADER_PARAMETER_EXTENSION Extension
;
324 I386_LOADER_BLOCK I386
;
325 ALPHA_LOADER_BLOCK Alpha
;
326 IA64_LOADER_BLOCK Ia64
;
327 POWERPC_LOADER_BLOCK PowerPC
;
329 } LOADER_PARAMETER_BLOCK
, *PLOADER_PARAMETER_BLOCK
;