[SDK] Update loader parameter block structure definitions to Windows 10 RTM (#8236)

Mostly based on the information on Geoff Chappell's website, Vergilius Project and WDK 10.0.10586.0
This commit is contained in:
Adam Słaboń
2025-10-04 16:11:00 +02:00
committed by GitHub
parent 5a86857637
commit 5187834463

View File

@@ -315,6 +315,20 @@ typedef struct _SMBIOS_TABLE_HEADER
UCHAR Revision;
} SMBIOS_TABLE_HEADER, *PSMBIOS_TABLE_HEADER;
typedef struct _SMBIOS3_TABLE_HEADER
{
UCHAR Signature[5];
UCHAR Checksum;
UCHAR Length;
UCHAR MajorVersion;
UCHAR MinorVersion;
UCHAR Docrev;
UCHAR EntryPointRevision;
UCHAR Reserved;
ULONG StructureTableMaximumSize;
ULONGLONG StructureTableAddress;
} SMBIOS3_TABLE_HEADER, *PSMBIOS3_TABLE_HEADER;
//
// NLS Data Block
//
@@ -382,6 +396,102 @@ typedef struct _LOADER_PERFORMANCE_DATA
ULONGLONG EndTime;
} LOADER_PERFORMANCE_DATA, *PLOADER_PERFORMANCE_DATA;
typedef enum _TPM_BOOT_ENTROPY_RESULT_CODE
{
TpmBootEntropyStructureUninitialized = 0,
TpmBootEntropyDisabledByPolicy = 1,
TpmBootEntropyNoTpmFound = 2,
TpmBootEntropyTpmError = 3,
TpmBootEntropySuccess = 4
} TPM_BOOT_ENTROPY_RESULT_CODE, *PTPM_BOOT_ENTROPY_RESULT_CODE;
typedef struct _TPM_BOOT_ENTROPY_LDR_RESULT
{
ULONGLONG Policy;
TPM_BOOT_ENTROPY_RESULT_CODE ResultCode;
LONG ResultStatus;
ULONGLONG Time;
ULONG EntropyLength;
UCHAR EntropyData[40];
} TPM_BOOT_ENTROPY_LDR_RESULT, *PTPM_BOOT_ENTROPY_LDR_RESULT;
typedef enum _BOOT_ENTROPY_SOURCE_RESULT_CODE
{
BootEntropySourceStructureUninitialized = 0,
BootEntropySourceDisabledByPolicy = 1,
BootEntropySourceNotPresent = 2,
BootEntropySourceError = 3,
BootEntropySourceSuccess = 4,
} BOOT_ENTROPY_SOURCE_RESULT_CODE, *PBOOT_ENTROPY_SOURCE_RESULT_CODE;
typedef enum _BOOT_ENTROPY_SOURCE_ID
{
BootEntropySourceNone = 0,
BootEntropySourceSeedfile = 1,
BootEntropySourceExternal = 2,
BootEntropySourceTpm = 3,
BootEntropySourceRdrand = 4,
BootEntropySourceTime = 5,
BootEntropySourceAcpiOem0 = 6,
BootEntropySourceUefi = 7,
BootEntropySourceCng = 8,
BootMaxEntropySources = 8,
} BOOT_ENTROPY_SOURCE_ID, *PBOOT_ENTROPY_SOURCE_ID;
typedef struct _BOOT_ENTROPY_SOURCE_LDR_RESULT
{
BOOT_ENTROPY_SOURCE_ID SourceId;
ULONGLONG Policy;
BOOT_ENTROPY_SOURCE_RESULT_CODE ResultCode;
NTSTATUS ResultStatus;
ULONGLONG Time;
ULONG EntropyLength;
UCHAR EntropyData[64];
} BOOT_ENTROPY_SOURCE_LDR_RESULT, *PBOOT_ENTROPY_SOURCE_LDR_RESULT;
typedef struct _BOOT_ENTROPY_LDR_RESULT
{
ULONG maxEntropySources;
BOOT_ENTROPY_SOURCE_LDR_RESULT EntropySourceResult[BootMaxEntropySources];
UCHAR SeedBytesForCng[48];
UCHAR RngBytesForNtoskrnl[1024];
} BOOT_ENTROPY_LDR_RESULT, *PBOOT_ENTROPY_LDR_RESULT;
typedef struct _LOADER_PARAMETER_HYPERVISOR_EXTENSION
{
ULONG HypervisorCrashdumpAreaPageCount;
ULONGLONG HypervisorCrashdumpAreaSpa;
ULONGLONG HypervisorLaunchStatus;
ULONGLONG HypervisorLaunchStatusArg1;
ULONGLONG HypervisorLaunchStatusArg2;
ULONGLONG HypervisorLaunchStatusArg3;
ULONGLONG HypervisorLaunchStatusArg4;
} LOADER_PARAMETER_HYPERVISOR_EXTENSION, *PLOADER_PARAMETER_HYPERVISOR_EXTENSION;
typedef struct _LOADER_BUGCHECK_PARAMETERS
{
ULONG BugcheckCode;
ULONG_PTR BugcheckParameter1;
ULONG_PTR BugcheckParameter2;
ULONG_PTR BugcheckParameter3;
ULONG_PTR BugcheckParameter4;
} LOADER_BUGCHECK_PARAMETERS, *PLOADER_BUGCHECK_PARAMETERS;
typedef struct _OFFLINE_CRASHDUMP_CONFIGURATION_TABLE
{
ULONG Version;
ULONG AbnormalResetOccurred;
ULONG OfflineMemoryDumpCapable;
} OFFLINE_CRASHDUMP_CONFIGURATION_TABLE, *POFFLINE_CRASHDUMP_CONFIGURATION_TABLE;
typedef struct _LOADER_PARAMETER_CI_EXTENSION
{
ULONG RevocationListOffset;
ULONG RevocationListSize;
_Field_size_bytes_(RevocationListSize)
UCHAR SerializedData[ANYSIZE_ARRAY];
} LOADER_PARAMETER_CI_EXTENSION, *PLOADER_PARAMETER_CI_EXTENSION;
//
// Extended Loader Parameter Block
//
@@ -392,47 +502,134 @@ typedef struct _LOADER_PARAMETER_EXTENSION
{
ULONG Size;
PROFILE_PARAMETER_BLOCK Profile;
ULONG MajorVersion; /* Not anymore present starting NT 6.1 */
ULONG MinorVersion; /* Not anymore present starting NT 6.1 */
#if (NTDDI_VERSION < NTDDI_WIN7)
ULONG MajorVersion;
ULONG MinorVersion;
#endif
PVOID EmInfFileImage;
ULONG EmInfFileSize;
PVOID TriageDumpBlock;
//
// NT 5.1
//
ULONG_PTR LoaderPagesSpanned; /* Not anymore present starting NT 6.2 */
#if (NTDDI_VERSION >= NTDDI_WINXP)
#if (NTDDI_VERSION < NTDDI_WIN8)
ULONG_PTR LoaderPagesSpanned;
#endif
PHEADLESS_LOADER_BLOCK HeadlessLoaderBlock;
#if (NTDDI_VERSION < NTDDI_WIN10)
PSMBIOS_TABLE_HEADER SMBiosEPSHeader;
#else
PSMBIOS3_TABLE_HEADER SMBiosEPSHeader;
#endif
PVOID DrvDBImage;
ULONG DrvDBSize;
#endif
#if (NTDDI_VERSION >= NTDDI_WINXPSP1)
PNETWORK_LOADER_BLOCK NetworkLoaderBlock;
//
// NT 5.2+
//
#endif
#if (NTDDI_VERSION >= NTDDI_WS03)
#ifdef _X86_
PUCHAR HalpIRQLToTPR;
PUCHAR HalpVectorToIRQL;
#endif
LIST_ENTRY FirmwareDescriptorListHead;
#endif
#if (NTDDI_VERSION >= NTDDI_WS03SP1)
PVOID AcpiTable;
ULONG AcpiTableSize;
//
// NT 5.2 SP1+
//
#endif
/** NT-version-dependent flags **/
#if (OSVER(NTDDI_VERSION) == NTDDI_LONGHORN)
ULONG BootViaWinload:1;
#endif
#if (NTDDI_VERSION >= NTDDI_WIN7)
ULONG LastBootSucceeded:1;
ULONG LastBootShutdown:1;
ULONG IoPortAccessSupported:1;
#endif
#if (NTDDI_VERSION >= NTDDI_WIN8)
ULONG BootDebuggerActive:1;
#endif
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
ULONG StrongCodeGuarantees:1;
ULONG HardStrongCodeGuarantees:1;
ULONG SidSharingDisabled:1;
#endif
#if (NTDDI_VERSION >= NTDDI_WIN10)
ULONG TpmInitialized:1;
ULONG VsmConfigured:1;
ULONG IumEnabled:1;
#endif
#if (OSVER(NTDDI_VERSION) == NTDDI_LONGHORN)
ULONG Reserved:31;
#elif (NTDDI_VERSION == NTDDI_WIN7)
ULONG Reserved:29;
#elif (NTDDI_VERSION == NTDDI_WIN8)
ULONG Reserved:28;
#elif (NTDDI_VERSION == NTDDI_WINBLUE)
ULONG Reserved:25;
#elif (NTDDI_VERSION == NTDDI_WIN10)
ULONG Reserved:22;
#elif defined(__REACTOS__)
ULONG BootViaWinload:1;
ULONG BootViaEFI:1;
ULONG Reserved:30;
#endif
/********************************/
PLOADER_PERFORMANCE_DATA LoaderPerformanceData;
LIST_ENTRY BootApplicationPersistentData;
PVOID WmdTestResult;
GUID BootIdentifier;
//
// NT 6
//
#if (NTDDI_VERSION >= NTDDI_WIN7)
ULONG ResumePages;
PVOID DumpHeader;
PVOID BgContext;
PVOID NumaLocalityInfo;
PVOID NumaGroupAssignment;
LIST_ENTRY AttachedHives;
ULONG MemoryCachingRequirementsCount;
PVOID MemoryCachingRequirements;
#if (NTDDI_VERSION < NTDDI_WIN8)
TPM_BOOT_ENTROPY_LDR_RESULT TpmBootEntropyResult;
#else
BOOT_ENTROPY_LDR_RESULT BootEntropyResult;
#endif
ULONGLONG ProcessorCounterFrequency;
#endif
#if (NTDDI_VERSION >= NTDDI_WIN8)
LOADER_PARAMETER_HYPERVISOR_EXTENSION HypervisorExtension;
GUID HardwareConfigurationId;
LIST_ENTRY HalExtensionModuleList;
LARGE_INTEGER SystemTime;
ULONGLONG TimeStampAtSystemTimeRead;
ULONGLONG BootFlags;
ULONGLONG InternalBootFlags;
PVOID WfsFPData;
ULONG WfsFPDataSize;
#if (NTDDI_VERSION < NTDDI_WINBLUE)
PVOID KdExtension[12]; //LOADER_PARAMETER_KD_EXTENSION KdExtension;
#else
LOADER_BUGCHECK_PARAMETERS BugcheckParameters;
PVOID ApiSetSchema;
ULONG ApiSetSchemaSize;
LIST_ENTRY ApiSetSchemaExtensions;
#endif
UNICODE_STRING AcpiBiosVersion;
UNICODE_STRING SmbiosVersion;
UNICODE_STRING EfiVersion;
#endif
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
DEBUG_DEVICE_DESCRIPTOR *KdDebugDevice;
OFFLINE_CRASHDUMP_CONFIGURATION_TABLE OfflineCrashdumpConfigurationTable;
#endif
#if (NTDDI_VERSION >= NTDDI_WIN10)
UNICODE_STRING ManufacturingProfile;
PVOID BbtBuffer;
ULONG64 XsaveAllowedFeatures;
ULONG XsaveFlags;
PVOID BootOptions;
ULONG BootId;
LOADER_PARAMETER_CI_EXTENSION *CodeIntegrityData;
ULONG CodeIntegrityDataSize;
#endif
} LOADER_PARAMETER_EXTENSION, *PLOADER_PARAMETER_EXTENSION;
//
@@ -511,6 +708,14 @@ typedef struct _EFI_FIRMWARE_INFORMATION
PVIRTUAL_EFI_RUNTIME_SERVICES VirtualEfiRuntimeServices;
ULONG SetVirtualAddressMapStatus;
ULONG MissedMappingsCount;
#if (NTDDI_VERSION >= NTDDI_WIN8)
LIST_ENTRY FirmwareResourceList;
#endif
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
PVOID EfiMemoryMap;
ULONG EfiMemoryMapSize;
ULONG EfiMemoryMapDescriptorSize;
#endif
} EFI_FIRMWARE_INFORMATION, *PEFI_FIRMWARE_INFORMATION;
typedef struct _PCAT_FIRMWARE_INFORMATION
@@ -521,7 +726,14 @@ typedef struct _PCAT_FIRMWARE_INFORMATION
typedef struct _FIRMWARE_INFORMATION_LOADER_BLOCK
{
ULONG FirmwareTypeEfi:1;
#if (NTDDI_VERSION < NTDDI_WIN10)
ULONG Reserved:31;
#else
ULONG EfiRuntimeUseIum:1;
ULONG EfiRuntimePageProtectionEnabled:1;
ULONG EfiRuntimePageProtectionSupported:1;
ULONG Reserved:28;
#endif
union
{
EFI_FIRMWARE_INFORMATION EfiInformation;
@@ -537,13 +749,30 @@ typedef struct _FIRMWARE_INFORMATION_LOADER_BLOCK
//
typedef struct _LOADER_PARAMETER_BLOCK
{
#if (NTDDI_VERSION >= NTDDI_WIN7)
ULONG OsMajorVersion;
ULONG OsMinorVersion;
ULONG Size;
ULONG Reserved;
#endif
LIST_ENTRY LoadOrderListHead;
LIST_ENTRY MemoryDescriptorListHead;
LIST_ENTRY BootDriverListHead;
#if (NTDDI_VERSION >= NTDDI_WIN8)
LIST_ENTRY EarlyLaunchListHead;
LIST_ENTRY CoreDriverListHead;
#endif
#if (NTDDI_VERSION >= NTDDI_WIN10)
LIST_ENTRY CoreExtensionsDriverListHead;
LIST_ENTRY TpmCoreDriverListHead;
#endif
ULONG_PTR KernelStack;
ULONG_PTR Prcb;
ULONG_PTR Process;
ULONG_PTR Thread;
#if (NTDDI_VERSION >= NTDDI_WIN8)
ULONG KernelStackSize;
#endif
ULONG RegistryLength;
PVOID RegistryBase;
PCONFIGURATION_COMPONENT_DATA ConfigurationRoot;
@@ -554,9 +783,17 @@ typedef struct _LOADER_PARAMETER_BLOCK
PSTR LoadOptions;
PNLS_DATA_BLOCK NlsData;
PARC_DISK_INFORMATION ArcDiskInformation;
#if (NTDDI_VERSION < NTDDI_WIN8)
PVOID OemFontFile;
#endif
#if (NTDDI_VERSION < NTDDI_WIN7)
struct _SETUP_LOADER_BLOCK *SetupLdrBlock;
#endif
#if (NTDDI_VERSION < NTDDI_WIN2K)
ULONG Spare1;
#else
PLOADER_PARAMETER_EXTENSION Extension;
#endif
union
{
I386_LOADER_BLOCK I386;
@@ -565,7 +802,9 @@ typedef struct _LOADER_PARAMETER_BLOCK
PPC_LOADER_BLOCK PowerPC;
ARM_LOADER_BLOCK Arm;
} u;
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
FIRMWARE_INFORMATION_LOADER_BLOCK FirmwareInformation;
#endif
} LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
typedef int CONFIGTYPE;