@@ -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
516721typedef struct _PCAT_FIRMWARE_INFORMATION
@@ -521,7 +726,14 @@ typedef struct _PCAT_FIRMWARE_INFORMATION
521726typedef 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//
538750typedef 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
571810typedef int CONFIGTYPE ;
0 commit comments