4 typedef ULONG ARC_STATUS
;
6 typedef enum _ARC_CODES
33 typedef enum _SEEKMODE
39 typedef enum _OPENMODE
53 typedef enum _IDENTIFIER_FLAG
64 typedef enum _CONFIGURATION_CLASS
74 } CONFIGURATION_CLASS
;
76 typedef enum _TYPE_OF_MEMORY
83 LoaderFirmwareTemporary
,
84 LoaderFirmwarePermanent
,
90 LoaderConsoleInDriver
,
91 LoaderConsoleOutDriver
,
92 LoaderStartupDpcStack
,
93 LoaderStartupKernelStack
,
94 LoaderStartupPanicStack
,
104 LoaderHALCachedMemory
,
105 LoaderLargePageFiller
,
106 LoaderErrorLogMemory
,
110 typedef enum _MEMORY_TYPE
112 MemoryExceptionBlock
,
117 MemoryFirmwareTemporary
,
118 MemoryFirmwarePermanent
,
119 MemoryFreeContiguous
,
124 typedef struct _TIMEINFO
134 typedef struct _MEMORY_DESCRIPTOR
136 MEMORY_TYPE MemoryType
;
139 } MEMORY_DESCRIPTOR
, *PMEMORY_DESCRIPTOR
;
141 typedef struct _MEMORY_ALLOCATION_DESCRIPTOR
143 LIST_ENTRY ListEntry
;
144 TYPE_OF_MEMORY MemoryType
;
147 } MEMORY_ALLOCATION_DESCRIPTOR
, *PMEMORY_ALLOCATION_DESCRIPTOR
;
149 typedef struct _BOOT_DRIVER_LIST_ENTRY
152 UNICODE_STRING FilePath
;
153 UNICODE_STRING RegistryPath
;
154 struct _LDR_DATA_TABLE_ENTRY
*LdrEntry
;
155 } BOOT_DRIVER_LIST_ENTRY
, *PBOOT_DRIVER_LIST_ENTRY
;
157 typedef struct _ARC_DISK_SIGNATURE
159 LIST_ENTRY ListEntry
;
163 BOOLEAN ValidPartitionTable
;
167 CHAR GptSignature
[16];
168 } ARC_DISK_SIGNATURE
, *PARC_DISK_SIGNATURE
;
170 typedef struct _CONFIGURATION_COMPONENT
172 CONFIGURATION_CLASS Class
;
173 CONFIGURATION_TYPE Type
;
174 IDENTIFIER_FLAG Flags
;
179 ULONG ConfigurationDataLength
;
180 ULONG IdentifierLength
;
182 } CONFIGURATION_COMPONENT
, *PCONFIGURATION_COMPONENT
;
184 typedef struct _CONFIGURATION_COMPONENT_DATA
186 struct _CONFIGURATION_COMPONENT_DATA
*Parent
;
187 struct _CONFIGURATION_COMPONENT_DATA
*Child
;
188 struct _CONFIGURATION_COMPONENT_DATA
*Sibling
;
189 CONFIGURATION_COMPONENT ComponentEntry
;
190 PVOID ConfigurationData
;
191 } CONFIGURATION_COMPONENT_DATA
, *PCONFIGURATION_COMPONENT_DATA
;
193 typedef struct _ARC_DISK_INFORMATION
195 LIST_ENTRY DiskSignatureListHead
;
196 } ARC_DISK_INFORMATION
, *PARC_DISK_INFORMATION
;
198 typedef struct _MONITOR_CONFIGURATION_DATA
202 USHORT HorizontalResolution
;
203 USHORT HorizontalDisplayTime
;
204 USHORT HorizontalBackPorch
;
205 USHORT HorizontalFrontPorch
;
206 USHORT HorizontalSync
;
207 USHORT VerticalResolution
;
208 USHORT VerticalBackPorch
;
209 USHORT VerticalFrontPorch
;
211 USHORT HorizontalScreenSize
;
212 USHORT VerticalScreenSize
;
213 } MONITOR_CONFIGURATION_DATA
, *PMONITOR_CONFIGURATION_DATA
;
215 typedef struct _FLOPPY_CONFIGURATION_DATA
222 } FLOPPY_CONFIGURATION_DATA
, *PFLOPPY_CONFIGURATION_DATA
;
225 // SMBIOS Table Header (FIXME: maybe move to smbios.h?)
227 typedef struct _SMBIOS_TABLE_HEADER
234 USHORT MaximumStructureSize
;
235 UCHAR EntryPointRevision
;
238 UCHAR IntermediateChecksum
;
239 USHORT StructureTableLength
;
240 ULONG StructureTableAddress
;
241 USHORT NumberStructures
;
243 } SMBIOS_TABLE_HEADER
, *PSMBIOS_TABLE_HEADER
;
248 typedef struct _NLS_DATA_BLOCK
250 PVOID AnsiCodePageData
;
251 PVOID OemCodePageData
;
252 PVOID UnicodeCodePageData
;
253 } NLS_DATA_BLOCK
, *PNLS_DATA_BLOCK
;
256 // ACPI Docking State
258 typedef struct _PROFILE_ACPI_DOCKING_STATE
262 WCHAR SerialNumber
[1];
263 } PROFILE_ACPI_DOCKING_STATE
, *PPROFILE_ACPI_DOCKING_STATE
;
266 // Subsystem Specific Loader Blocks
268 typedef struct _PROFILE_PARAMETER_BLOCK
276 } PROFILE_PARAMETER_BLOCK
, *PPROFILE_PARAMETER_BLOCK
;
278 typedef struct _HEADLESS_LOADER_BLOCK
280 UCHAR UsedBiosSettings
;
291 UCHAR PciFunctionNumber
;
296 } HEADLESS_LOADER_BLOCK
, *PHEADLESS_LOADER_BLOCK
;
298 typedef struct _NETWORK_LOADER_BLOCK
301 ULONG DHCPServerACKLength
;
302 PCHAR BootServerReplyPacket
;
303 ULONG BootServerReplyPacketLength
;
304 } NETWORK_LOADER_BLOCK
, *PNETWORK_LOADER_BLOCK
;
306 typedef struct _LOADER_PERFORMANCE_DATA
310 } LOADER_PERFORMANCE_DATA
, *PLOADER_PERFORMANCE_DATA
;
313 // Extended Loader Parameter Block
315 typedef struct _LOADER_PARAMETER_EXTENSION
318 PROFILE_PARAMETER_BLOCK Profile
;
321 PVOID EmInfFileImage
;
323 PVOID TriageDumpBlock
;
327 ULONG LoaderPagesSpanned
;
328 PHEADLESS_LOADER_BLOCK HeadlessLoaderBlock
;
329 PSMBIOS_TABLE_HEADER SMBiosEPSHeader
;
332 PNETWORK_LOADER_BLOCK NetworkLoaderBlock
;
337 PCHAR HalpVectorToIRQL
;
338 LIST_ENTRY FirmwareDescriptorListHead
;
344 ULONG BootViaWinload
:1;
347 LOADER_PERFORMANCE_DATA LoaderPerformanceData
;
348 LIST_ENTRY BootApplicationPersistentData
;
356 } LOADER_PARAMETER_EXTENSION
, *PLOADER_PARAMETER_EXTENSION
;
359 // Architecture specific Loader Parameter Blocks
361 typedef struct _IA64_LOADER_BLOCK
364 } IA64_LOADER_BLOCK
, *PIA64_LOADER_BLOCK
;
366 typedef struct _ALPHA_LOADER_BLOCK
369 } ALPHA_LOADER_BLOCK
, *PALPHA_LOADER_BLOCK
;
371 typedef struct _I386_LOADER_BLOCK
373 PVOID CommonDataArea
;
376 } I386_LOADER_BLOCK
, *PI386_LOADER_BLOCK
;
378 typedef struct _PPC_LOADER_BLOCK
382 } PPC_LOADER_BLOCK
, *PPPC_LOADER_BLOCK
;
384 typedef struct _ARM_LOADER_BLOCK
387 ULONG InterruptStack
;
388 ULONG FirstLevelDcacheSize
;
389 ULONG FirstLevelDcacheFillSize
;
390 ULONG FirstLevelIcacheSize
;
391 ULONG FirstLevelIcacheFillSize
;
396 ULONG SecondLevelDcacheSize
;
397 ULONG SecondLevelDcacheFillSize
;
398 ULONG SecondLevelIcacheSize
;
399 ULONG SecondLevelIcacheFillSize
;
404 } ARM_LOADER_BLOCK
, *PARM_LOADER_BLOCK
;
407 // Firmware information block (NT6+)
410 typedef struct _VIRTUAL_EFI_RUNTIME_SERVICES
414 ULONG_PTR GetWakeupTime
;
415 ULONG_PTR SetWakeupTime
;
416 ULONG_PTR SetVirtualAddressMap
;
417 ULONG_PTR ConvertPointer
;
418 ULONG_PTR GetVariable
;
419 ULONG_PTR GetNextVariableName
;
420 ULONG_PTR SetVariable
;
421 ULONG_PTR GetNextHighMonotonicCount
;
422 ULONG_PTR ResetSystem
;
423 ULONG_PTR UpdateCapsule
;
424 ULONG_PTR QueryCapsuleCapabilities
;
425 ULONG_PTR QueryVariableInfo
;
426 } VIRTUAL_EFI_RUNTIME_SERVICES
, *PVIRTUAL_EFI_RUNTIME_SERVICES
;
428 typedef struct _EFI_FIRMWARE_INFORMATION
430 ULONG FirmwareVersion
;
431 PVIRTUAL_EFI_RUNTIME_SERVICES VirtualEfiRuntimeServices
;
432 ULONG SetVirtualAddressMapStatus
;
433 ULONG MissedMappingsCount
;
434 } EFI_FIRMWARE_INFORMATION
, *PEFI_FIRMWARE_INFORMATION
;
436 typedef struct _PCAT_FIRMWARE_INFORMATION
439 } PCAT_FIRMWARE_INFORMATION
, *PPCAT_FIRMWARE_INFORMATION
;
441 typedef struct _FIRMWARE_INFORMATION_LOADER_BLOCK
443 ULONG FirmwareTypeEfi
:1;
447 EFI_FIRMWARE_INFORMATION EfiInformation
;
448 PCAT_FIRMWARE_INFORMATION PcatInformation
;
450 } FIRMWARE_INFORMATION_LOADER_BLOCK
, *PFIRMWARE_INFORMATION_LOADER_BLOCK
;
453 // Loader Parameter Block
455 typedef struct _LOADER_PARAMETER_BLOCK
457 LIST_ENTRY LoadOrderListHead
;
458 LIST_ENTRY MemoryDescriptorListHead
;
459 LIST_ENTRY BootDriverListHead
;
460 ULONG_PTR KernelStack
;
464 ULONG RegistryLength
;
466 PCONFIGURATION_COMPONENT_DATA ConfigurationRoot
;
467 LPSTR ArcBootDeviceName
;
468 LPSTR ArcHalDeviceName
;
469 LPSTR NtBootPathName
;
472 PNLS_DATA_BLOCK NlsData
;
473 PARC_DISK_INFORMATION ArcDiskInformation
;
475 struct _SETUP_LOADER_BLOCK
*SetupLdrBlock
;
476 PLOADER_PARAMETER_EXTENSION Extension
;
479 I386_LOADER_BLOCK I386
;
480 ALPHA_LOADER_BLOCK Alpha
;
481 IA64_LOADER_BLOCK IA64
;
482 PPC_LOADER_BLOCK PowerPC
;
483 ARM_LOADER_BLOCK Arm
;
485 FIRMWARE_INFORMATION_LOADER_BLOCK FirmwareInformation
;
486 } LOADER_PARAMETER_BLOCK
, *PLOADER_PARAMETER_BLOCK
;
488 typedef int CONFIGTYPE
;
489 typedef struct tagFILEINFORMATION
491 LARGE_INTEGER StartingAddress
;
492 LARGE_INTEGER EndingAddress
;
493 LARGE_INTEGER CurrentAddress
;
495 ULONG FileNameLength
;
500 typedef LONG (*ARC_CLOSE
)(ULONG FileId
);
501 typedef LONG (*ARC_GET_FILE_INFORMATION
)(ULONG FileId
, FILEINFORMATION
* Information
);
502 typedef LONG (*ARC_OPEN
)(CHAR
* Path
, OPENMODE OpenMode
, ULONG
* FileId
);
503 typedef LONG (*ARC_READ
)(ULONG FileId
, VOID
* Buffer
, ULONG N
, ULONG
* Count
);
504 typedef LONG (*ARC_SEEK
)(ULONG FileId
, LARGE_INTEGER
* Position
, SEEKMODE SeekMode
);