Skip to content

Commit 5187834

Browse files
authored
[SDK] Update loader parameter block structure definitions to Windows 10 RTM (reactos#8236)
Mostly based on the information on Geoff Chappell's website, Vergilius Project and WDK 10.0.10586.0
1 parent 5a86857 commit 5187834

File tree

1 file changed

+254
-15
lines changed
  • sdk/include/reactos/arc

1 file changed

+254
-15
lines changed

sdk/include/reactos/arc/arc.h

Lines changed: 254 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,20 @@ typedef struct _SMBIOS_TABLE_HEADER
315315
UCHAR Revision;
316316
} SMBIOS_TABLE_HEADER, *PSMBIOS_TABLE_HEADER;
317317

318+
typedef struct _SMBIOS3_TABLE_HEADER
319+
{
320+
UCHAR Signature[5];
321+
UCHAR Checksum;
322+
UCHAR Length;
323+
UCHAR MajorVersion;
324+
UCHAR MinorVersion;
325+
UCHAR Docrev;
326+
UCHAR EntryPointRevision;
327+
UCHAR Reserved;
328+
ULONG StructureTableMaximumSize;
329+
ULONGLONG StructureTableAddress;
330+
} SMBIOS3_TABLE_HEADER, *PSMBIOS3_TABLE_HEADER;
331+
318332
//
319333
// NLS Data Block
320334
//
@@ -382,6 +396,102 @@ typedef struct _LOADER_PERFORMANCE_DATA
382396
ULONGLONG EndTime;
383397
} LOADER_PERFORMANCE_DATA, *PLOADER_PERFORMANCE_DATA;
384398

399+
typedef enum _TPM_BOOT_ENTROPY_RESULT_CODE
400+
{
401+
TpmBootEntropyStructureUninitialized = 0,
402+
TpmBootEntropyDisabledByPolicy = 1,
403+
TpmBootEntropyNoTpmFound = 2,
404+
TpmBootEntropyTpmError = 3,
405+
TpmBootEntropySuccess = 4
406+
} TPM_BOOT_ENTROPY_RESULT_CODE, *PTPM_BOOT_ENTROPY_RESULT_CODE;
407+
408+
typedef struct _TPM_BOOT_ENTROPY_LDR_RESULT
409+
{
410+
ULONGLONG Policy;
411+
TPM_BOOT_ENTROPY_RESULT_CODE ResultCode;
412+
LONG ResultStatus;
413+
ULONGLONG Time;
414+
ULONG EntropyLength;
415+
UCHAR EntropyData[40];
416+
} TPM_BOOT_ENTROPY_LDR_RESULT, *PTPM_BOOT_ENTROPY_LDR_RESULT;
417+
418+
typedef enum _BOOT_ENTROPY_SOURCE_RESULT_CODE
419+
{
420+
BootEntropySourceStructureUninitialized = 0,
421+
BootEntropySourceDisabledByPolicy = 1,
422+
BootEntropySourceNotPresent = 2,
423+
BootEntropySourceError = 3,
424+
BootEntropySourceSuccess = 4,
425+
} BOOT_ENTROPY_SOURCE_RESULT_CODE, *PBOOT_ENTROPY_SOURCE_RESULT_CODE;
426+
427+
typedef enum _BOOT_ENTROPY_SOURCE_ID
428+
{
429+
BootEntropySourceNone = 0,
430+
BootEntropySourceSeedfile = 1,
431+
BootEntropySourceExternal = 2,
432+
BootEntropySourceTpm = 3,
433+
BootEntropySourceRdrand = 4,
434+
BootEntropySourceTime = 5,
435+
BootEntropySourceAcpiOem0 = 6,
436+
BootEntropySourceUefi = 7,
437+
BootEntropySourceCng = 8,
438+
BootMaxEntropySources = 8,
439+
} BOOT_ENTROPY_SOURCE_ID, *PBOOT_ENTROPY_SOURCE_ID;
440+
441+
typedef struct _BOOT_ENTROPY_SOURCE_LDR_RESULT
442+
{
443+
BOOT_ENTROPY_SOURCE_ID SourceId;
444+
ULONGLONG Policy;
445+
BOOT_ENTROPY_SOURCE_RESULT_CODE ResultCode;
446+
NTSTATUS ResultStatus;
447+
ULONGLONG Time;
448+
ULONG EntropyLength;
449+
UCHAR EntropyData[64];
450+
} BOOT_ENTROPY_SOURCE_LDR_RESULT, *PBOOT_ENTROPY_SOURCE_LDR_RESULT;
451+
452+
typedef struct _BOOT_ENTROPY_LDR_RESULT
453+
{
454+
ULONG maxEntropySources;
455+
BOOT_ENTROPY_SOURCE_LDR_RESULT EntropySourceResult[BootMaxEntropySources];
456+
UCHAR SeedBytesForCng[48];
457+
UCHAR RngBytesForNtoskrnl[1024];
458+
} BOOT_ENTROPY_LDR_RESULT, *PBOOT_ENTROPY_LDR_RESULT;
459+
460+
typedef struct _LOADER_PARAMETER_HYPERVISOR_EXTENSION
461+
{
462+
ULONG HypervisorCrashdumpAreaPageCount;
463+
ULONGLONG HypervisorCrashdumpAreaSpa;
464+
ULONGLONG HypervisorLaunchStatus;
465+
ULONGLONG HypervisorLaunchStatusArg1;
466+
ULONGLONG HypervisorLaunchStatusArg2;
467+
ULONGLONG HypervisorLaunchStatusArg3;
468+
ULONGLONG HypervisorLaunchStatusArg4;
469+
} LOADER_PARAMETER_HYPERVISOR_EXTENSION, *PLOADER_PARAMETER_HYPERVISOR_EXTENSION;
470+
471+
typedef struct _LOADER_BUGCHECK_PARAMETERS
472+
{
473+
ULONG BugcheckCode;
474+
ULONG_PTR BugcheckParameter1;
475+
ULONG_PTR BugcheckParameter2;
476+
ULONG_PTR BugcheckParameter3;
477+
ULONG_PTR BugcheckParameter4;
478+
} LOADER_BUGCHECK_PARAMETERS, *PLOADER_BUGCHECK_PARAMETERS;
479+
480+
typedef struct _OFFLINE_CRASHDUMP_CONFIGURATION_TABLE
481+
{
482+
ULONG Version;
483+
ULONG AbnormalResetOccurred;
484+
ULONG OfflineMemoryDumpCapable;
485+
} OFFLINE_CRASHDUMP_CONFIGURATION_TABLE, *POFFLINE_CRASHDUMP_CONFIGURATION_TABLE;
486+
487+
typedef struct _LOADER_PARAMETER_CI_EXTENSION
488+
{
489+
ULONG RevocationListOffset;
490+
ULONG RevocationListSize;
491+
_Field_size_bytes_(RevocationListSize)
492+
UCHAR SerializedData[ANYSIZE_ARRAY];
493+
} LOADER_PARAMETER_CI_EXTENSION, *PLOADER_PARAMETER_CI_EXTENSION;
494+
385495
//
386496
// Extended Loader Parameter Block
387497
//
@@ -392,47 +502,134 @@ typedef struct _LOADER_PARAMETER_EXTENSION
392502
{
393503
ULONG Size;
394504
PROFILE_PARAMETER_BLOCK Profile;
395-
ULONG MajorVersion; /* Not anymore present starting NT 6.1 */
396-
ULONG MinorVersion; /* Not anymore present starting NT 6.1 */
505+
#if (NTDDI_VERSION < NTDDI_WIN7)
506+
ULONG MajorVersion;
507+
ULONG MinorVersion;
508+
#endif
397509
PVOID EmInfFileImage;
398510
ULONG EmInfFileSize;
399511
PVOID TriageDumpBlock;
400-
//
401-
// NT 5.1
402-
//
403-
ULONG_PTR LoaderPagesSpanned; /* Not anymore present starting NT 6.2 */
512+
#if (NTDDI_VERSION >= NTDDI_WINXP)
513+
#if (NTDDI_VERSION < NTDDI_WIN8)
514+
ULONG_PTR LoaderPagesSpanned;
515+
#endif
404516
PHEADLESS_LOADER_BLOCK HeadlessLoaderBlock;
517+
#if (NTDDI_VERSION < NTDDI_WIN10)
405518
PSMBIOS_TABLE_HEADER SMBiosEPSHeader;
519+
#else
520+
PSMBIOS3_TABLE_HEADER SMBiosEPSHeader;
521+
#endif
406522
PVOID DrvDBImage;
407523
ULONG DrvDBSize;
524+
#endif
525+
#if (NTDDI_VERSION >= NTDDI_WINXPSP1)
408526
PNETWORK_LOADER_BLOCK NetworkLoaderBlock;
409-
//
410-
// NT 5.2+
411-
//
527+
#endif
528+
#if (NTDDI_VERSION >= NTDDI_WS03)
412529
#ifdef _X86_
413530
PUCHAR HalpIRQLToTPR;
414531
PUCHAR HalpVectorToIRQL;
415532
#endif
416533
LIST_ENTRY FirmwareDescriptorListHead;
534+
#endif
535+
#if (NTDDI_VERSION >= NTDDI_WS03SP1)
417536
PVOID AcpiTable;
418537
ULONG AcpiTableSize;
419-
//
420-
// NT 5.2 SP1+
421-
//
538+
#endif
422539
/** NT-version-dependent flags **/
540+
#if (OSVER(NTDDI_VERSION) == NTDDI_LONGHORN)
541+
ULONG BootViaWinload:1;
542+
#endif
543+
#if (NTDDI_VERSION >= NTDDI_WIN7)
544+
ULONG LastBootSucceeded:1;
545+
ULONG LastBootShutdown:1;
546+
ULONG IoPortAccessSupported:1;
547+
#endif
548+
#if (NTDDI_VERSION >= NTDDI_WIN8)
549+
ULONG BootDebuggerActive:1;
550+
#endif
551+
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
552+
ULONG StrongCodeGuarantees:1;
553+
ULONG HardStrongCodeGuarantees:1;
554+
ULONG SidSharingDisabled:1;
555+
#endif
556+
#if (NTDDI_VERSION >= NTDDI_WIN10)
557+
ULONG TpmInitialized:1;
558+
ULONG VsmConfigured:1;
559+
ULONG IumEnabled:1;
560+
#endif
561+
#if (OSVER(NTDDI_VERSION) == NTDDI_LONGHORN)
562+
ULONG Reserved:31;
563+
#elif (NTDDI_VERSION == NTDDI_WIN7)
564+
ULONG Reserved:29;
565+
#elif (NTDDI_VERSION == NTDDI_WIN8)
566+
ULONG Reserved:28;
567+
#elif (NTDDI_VERSION == NTDDI_WINBLUE)
568+
ULONG Reserved:25;
569+
#elif (NTDDI_VERSION == NTDDI_WIN10)
570+
ULONG Reserved:22;
571+
#elif defined(__REACTOS__)
423572
ULONG BootViaWinload:1;
424573
ULONG BootViaEFI:1;
425574
ULONG Reserved:30;
575+
#endif
426576
/********************************/
427577
PLOADER_PERFORMANCE_DATA LoaderPerformanceData;
428578
LIST_ENTRY BootApplicationPersistentData;
429579
PVOID WmdTestResult;
430580
GUID BootIdentifier;
431-
//
432-
// NT 6
433-
//
581+
#if (NTDDI_VERSION >= NTDDI_WIN7)
434582
ULONG ResumePages;
435583
PVOID DumpHeader;
584+
PVOID BgContext;
585+
PVOID NumaLocalityInfo;
586+
PVOID NumaGroupAssignment;
587+
LIST_ENTRY AttachedHives;
588+
ULONG MemoryCachingRequirementsCount;
589+
PVOID MemoryCachingRequirements;
590+
#if (NTDDI_VERSION < NTDDI_WIN8)
591+
TPM_BOOT_ENTROPY_LDR_RESULT TpmBootEntropyResult;
592+
#else
593+
BOOT_ENTROPY_LDR_RESULT BootEntropyResult;
594+
#endif
595+
ULONGLONG ProcessorCounterFrequency;
596+
#endif
597+
#if (NTDDI_VERSION >= NTDDI_WIN8)
598+
LOADER_PARAMETER_HYPERVISOR_EXTENSION HypervisorExtension;
599+
GUID HardwareConfigurationId;
600+
LIST_ENTRY HalExtensionModuleList;
601+
LARGE_INTEGER SystemTime;
602+
ULONGLONG TimeStampAtSystemTimeRead;
603+
ULONGLONG BootFlags;
604+
ULONGLONG InternalBootFlags;
605+
PVOID WfsFPData;
606+
ULONG WfsFPDataSize;
607+
#if (NTDDI_VERSION < NTDDI_WINBLUE)
608+
PVOID KdExtension[12]; //LOADER_PARAMETER_KD_EXTENSION KdExtension;
609+
#else
610+
LOADER_BUGCHECK_PARAMETERS BugcheckParameters;
611+
PVOID ApiSetSchema;
612+
ULONG ApiSetSchemaSize;
613+
LIST_ENTRY ApiSetSchemaExtensions;
614+
#endif
615+
UNICODE_STRING AcpiBiosVersion;
616+
UNICODE_STRING SmbiosVersion;
617+
UNICODE_STRING EfiVersion;
618+
#endif
619+
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
620+
DEBUG_DEVICE_DESCRIPTOR *KdDebugDevice;
621+
OFFLINE_CRASHDUMP_CONFIGURATION_TABLE OfflineCrashdumpConfigurationTable;
622+
#endif
623+
#if (NTDDI_VERSION >= NTDDI_WIN10)
624+
UNICODE_STRING ManufacturingProfile;
625+
PVOID BbtBuffer;
626+
ULONG64 XsaveAllowedFeatures;
627+
ULONG XsaveFlags;
628+
PVOID BootOptions;
629+
ULONG BootId;
630+
LOADER_PARAMETER_CI_EXTENSION *CodeIntegrityData;
631+
ULONG CodeIntegrityDataSize;
632+
#endif
436633
} LOADER_PARAMETER_EXTENSION, *PLOADER_PARAMETER_EXTENSION;
437634

438635
//
@@ -511,6 +708,14 @@ typedef struct _EFI_FIRMWARE_INFORMATION
511708
PVIRTUAL_EFI_RUNTIME_SERVICES VirtualEfiRuntimeServices;
512709
ULONG SetVirtualAddressMapStatus;
513710
ULONG MissedMappingsCount;
711+
#if (NTDDI_VERSION >= NTDDI_WIN8)
712+
LIST_ENTRY FirmwareResourceList;
713+
#endif
714+
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
715+
PVOID EfiMemoryMap;
716+
ULONG EfiMemoryMapSize;
717+
ULONG EfiMemoryMapDescriptorSize;
718+
#endif
514719
} EFI_FIRMWARE_INFORMATION, *PEFI_FIRMWARE_INFORMATION;
515720

516721
typedef struct _PCAT_FIRMWARE_INFORMATION
@@ -521,7 +726,14 @@ typedef struct _PCAT_FIRMWARE_INFORMATION
521726
typedef struct _FIRMWARE_INFORMATION_LOADER_BLOCK
522727
{
523728
ULONG FirmwareTypeEfi:1;
729+
#if (NTDDI_VERSION < NTDDI_WIN10)
524730
ULONG Reserved:31;
731+
#else
732+
ULONG EfiRuntimeUseIum:1;
733+
ULONG EfiRuntimePageProtectionEnabled:1;
734+
ULONG EfiRuntimePageProtectionSupported:1;
735+
ULONG Reserved:28;
736+
#endif
525737
union
526738
{
527739
EFI_FIRMWARE_INFORMATION EfiInformation;
@@ -537,13 +749,30 @@ typedef struct _FIRMWARE_INFORMATION_LOADER_BLOCK
537749
//
538750
typedef struct _LOADER_PARAMETER_BLOCK
539751
{
752+
#if (NTDDI_VERSION >= NTDDI_WIN7)
753+
ULONG OsMajorVersion;
754+
ULONG OsMinorVersion;
755+
ULONG Size;
756+
ULONG Reserved;
757+
#endif
540758
LIST_ENTRY LoadOrderListHead;
541759
LIST_ENTRY MemoryDescriptorListHead;
542760
LIST_ENTRY BootDriverListHead;
761+
#if (NTDDI_VERSION >= NTDDI_WIN8)
762+
LIST_ENTRY EarlyLaunchListHead;
763+
LIST_ENTRY CoreDriverListHead;
764+
#endif
765+
#if (NTDDI_VERSION >= NTDDI_WIN10)
766+
LIST_ENTRY CoreExtensionsDriverListHead;
767+
LIST_ENTRY TpmCoreDriverListHead;
768+
#endif
543769
ULONG_PTR KernelStack;
544770
ULONG_PTR Prcb;
545771
ULONG_PTR Process;
546772
ULONG_PTR Thread;
773+
#if (NTDDI_VERSION >= NTDDI_WIN8)
774+
ULONG KernelStackSize;
775+
#endif
547776
ULONG RegistryLength;
548777
PVOID RegistryBase;
549778
PCONFIGURATION_COMPONENT_DATA ConfigurationRoot;
@@ -554,9 +783,17 @@ typedef struct _LOADER_PARAMETER_BLOCK
554783
PSTR LoadOptions;
555784
PNLS_DATA_BLOCK NlsData;
556785
PARC_DISK_INFORMATION ArcDiskInformation;
786+
#if (NTDDI_VERSION < NTDDI_WIN8)
557787
PVOID OemFontFile;
788+
#endif
789+
#if (NTDDI_VERSION < NTDDI_WIN7)
558790
struct _SETUP_LOADER_BLOCK *SetupLdrBlock;
791+
#endif
792+
#if (NTDDI_VERSION < NTDDI_WIN2K)
793+
ULONG Spare1;
794+
#else
559795
PLOADER_PARAMETER_EXTENSION Extension;
796+
#endif
560797
union
561798
{
562799
I386_LOADER_BLOCK I386;
@@ -565,7 +802,9 @@ typedef struct _LOADER_PARAMETER_BLOCK
565802
PPC_LOADER_BLOCK PowerPC;
566803
ARM_LOADER_BLOCK Arm;
567804
} u;
805+
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
568806
FIRMWARE_INFORMATION_LOADER_BLOCK FirmwareInformation;
807+
#endif
569808
} LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
570809

571810
typedef int CONFIGTYPE;

0 commit comments

Comments
 (0)