mirror of
https://github.com/reactos/reactos
synced 2025-10-05 16:02:58 +02:00
[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:
@@ -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;
|
||||
|
Reference in New Issue
Block a user