393 Size =
sizeof(LastBootShutdown);
404 Size =
sizeof(LastBootGood);
415 Size =
sizeof(LastBootCheckpoint);
426 Size =
sizeof(BootAttemptCount);
458 BOOLEAN localBootShutdown, localBootGood;
468 Size =
sizeof(*LastBootId);
487 Size =
sizeof(localBootShutdown);
498 *BootShutdown = localBootShutdown;
501 Size =
sizeof(localBootGood);
512 *BootGood = localBootGood;
540 SIZE_T RootLength, RootLengthWithSep;
545 ULONG OsDeviceHandle;
546 BOOLEAN LastBootGood, LastBootShutdown, LastBootCheckpoint;
548 BOOLEAN BootGood, BootShutdown;
611 #ifdef BL_ETW_SUPPORT 612 TraceLoggingRegister(&TlgOslBootProviderProv);
716 LastBootShutdown =
TRUE;
717 LastBootCheckpoint =
TRUE;
734 BsdSize =
sizeof(PowerTransitionData);
737 &PowerTransitionData,
742 PowerBuffer = &PowerTransitionData;
754 if (!(LastBootGood) &&
774 if (!(LastBootCheckpoint) &&
778 *ReturnFlags |= 0x10;
797 *ReturnFlags |= 0x10;
842 EfiPrintf(
L"Delta: %lld\r\n", EndPerf - StartPerf);
845 #if BL_BITLOCKER_SUPPORT 847 SymCryptRngAesUninstantiate();
885 #if defined(_MSC_VER) && !defined(__clang__) && !defined(_M_ARM) 993 if (!(CpuInfo.
Edx & 0x10000))
1022 #if !defined(_M_ARM) 1068 BootParameters->ReturnArgumentsOffset);
1073 BootParameters->AppEntryOffset);
1083 #if !defined(_M_ARM) 1091 if (CpuInfo.
Edx & 0x40)
1093 EfiPrintf(
L"PAE Supported, but won't be used\r\n");
ULONG_PTR OslSystemHiveHandle
#define STATUS_REVISION_MISMATCH
PBL_DEVICE_DESCRIPTOR BlpBootDevice
__INTRIN_INLINE void __writecr4(unsigned int Data)
ULONG OslBootCountUpdateIncrement
_In_ NDIS_ERROR_CODE ErrorCode
_In_ ULONG _In_ ULONG _In_ ULONG Length
VOID BlDestroyLibrary(VOID)
ULONG HeapAllocationAttributes
#define BL_DEVICE_WRITE_ACCESS
#define STATUS_INVALID_PARAMETER
LIST_ENTRY OslLoadedFirmwareDriverList
PBL_MM_RELOCATE_SELF_MAP BlMmRelocateSelfMap
OSL_BSD_ITEM_TABLE_ENTRY OslpBootStatusFields[RtlBsdItemMax]
LIST_ENTRY OslCoreExtensionSubGroups[2]
#define STATUS_INVALID_PARAMETER_9
struct BcdObjectType::@100::@102::@104 Application
NTSTATUS NTAPI OslMain(_In_ PBOOT_APPLICATION_PARAMETER_BLOCK BootParameters)
VOID BlRemoveBootOption(_In_ PBL_BCD_OPTION List, _In_ ULONG Type)
IN PVOID IN PVOID IN USHORT IN USHORT Size
VOID NTAPI OslDrawLogo(VOID)
ULONG LastReportedAbnormalShutdownBootId
PVOID OslMemoryDescriptorBuffer
BOOLEAN OslpAdvancedOptionsRequested(VOID)
VOID OslpInitializeBootStatusDataLog(VOID)
NTSTATUS BlMmFreeHeap(_In_ PVOID Buffer)
BOOLEAN OslCurrentBootCheckpoint
NTSTATUS BlGetBootOptionInteger(_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PULONGLONG Value)
BOOLEAN OslImcProcessingValid
PLOADER_PARAMETER_BLOCK OslLoaderBlock
#define BL_APP_ENTRY_SIGNATURE
#define STATUS_BUFFER_TOO_SMALL
BL_LOADED_APPLICATION_ENTRY BlpApplicationEntry
#define MSR_IA32_MISC_ENABLE
RTL_BSD_DATA_ERROR_INFO ErrorInfo
PBL_MM_ZERO_VIRTUAL_ADDRESS_RANGE BlMmZeroVirtualAddressRange
return STATUS_NOT_IMPLEMENTED
#define MSR_XD_ENABLE_MASK
VOID OslAbortBoot(_In_ NTSTATUS Status)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
PBL_DEVICE_DESCRIPTOR OslLoadDevice
#define BCD_OBJECT_TYPE_APPLICATION
#define OBJ_NAME_PATH_SEPARATOR
NTSTATUS OslpReadWriteBootStatusData(_In_ BOOLEAN WriteAccess)
BOOLEAN OslCurrentBootSucceeded
BOOLEAN BlDeviceIsVirtualPartitionDevice(_In_ PBL_DEVICE_DESCRIPTOR InputDevice, _Outptr_ PBL_DEVICE_DESCRIPTOR *VirtualDevice)
VOID OslpSanitizeStringOptions(_In_ PBL_BCD_OPTION BcdOptions)
PPC_QUAL unsigned long long __readmsr()
LIST_ENTRY OslFreeMemoryDesctiptorsList
PVOID BlMmAllocateHeap(_In_ SIZE_T Size)
ULONG OslBootCountUpdateRequestForAbort
enum _RTL_BSD_ITEM_TYPE RTL_BSD_ITEM_TYPE
ULONGLONG ArchCr4BitsToClear
_CRTIMP wchar_t *__cdecl _wcsupr(_Inout_z_ wchar_t *_String)
NTSTATUS OslArchpKernelSetupPhase0(_In_ PLOADER_PARAMETER_BLOCK LoaderBlock)
NTSTATUS OslArchKernelSetup(_In_ ULONG Phase, _In_ PLOADER_PARAMETER_BLOCK LoaderBlock)
BOOLEAN BlArchIsCpuIdFunctionSupported(_In_ ULONG Function)
ULONG_PTR OslImcHiveHandle
NTSTATUS OslFwpKernelSetupPhase1(_In_ PLOADER_PARAMETER_BLOCK LoaderBlock)
#define DBG_UNREFERENCED_LOCAL_VARIABLE(L)
_Must_inspect_result_ _In_ ULONG Flags
BcdObjectType BlpSbdiCurrentApplicationType
NTSYSAPI ULONG NTAPI RtlEqualMemory(CONST VOID *Source1, CONST VOID *Source2, ULONG Length)
static const WCHAR SystemRoot[]
BOOLEAN OslCurrentBootShutdown
#define NT_SUCCESS(StatCode)
ULONG_PTR OslMachineHiveHandle
PRTL_BSD_DATA BsdBootStatusData
#define BCD_IMAGE_TYPE_BOOT_APP
NTSTATUS BlInitializeLibrary(_In_ PBOOT_APPLICATION_PARAMETER_BLOCK BootAppParameters, _In_ PBL_LIBRARY_PARAMETERS LibraryParameters)
RTL_BSD_POWER_BUTTON_PRESS_INFO PowerButtonPressInfo
VOID ArchRestoreProcessorFeatures(VOID)
IN PVOID IN PVOID IN USHORT Version
FORCEINLINE VOID BlSetupDefaultParameters(_Out_ PBL_LIBRARY_PARAMETERS LibraryParameters)
#define BL_LIBRARY_FLAG_ZERO_HEAP_ALLOCATIONS_ON_FREE
PGUID BlGetApplicationIdentifier(VOID)
#define STATUS_UNSUCCESSFUL
VOID OslpSanitizeLoadOptionsString(_In_ PWCHAR OptionString, _In_ PWCHAR SanitizeString)
NTSTATUS OslSetBootStatusData(_In_ BOOLEAN LastBootGood, _In_ BOOLEAN LastBootShutdown, _In_ BOOLEAN LastBootCheckpoint, _In_ ULONG UpdateIncrement, _In_ ULONG BootAttemptCount)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
NTSTATUS BlGetBootOptionString(_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PWCHAR *Value)
CPU_VENDORS BlArchGetCpuVendor(VOID)
LIST_ENTRY OslFinalMemoryMap
BOOLEAN BdDebugAfterExitBootServices
#define KI_USER_SHARED_DATA
VOID OslFatalErrorEx(_In_ ULONG ErrorCode, _In_ ULONG Parameter1, _In_ ULONG_PTR Parameter2, _In_ ULONG_PTR Parameter3)
BOOLEAN LastBootSucceeded
ULONG_PTR OslElamHiveHandle
__INTRIN_INLINE unsigned long __readcr4(void)
NTSTATUS BlAppendBootOptionString(_In_ PBL_LOADED_APPLICATION_ENTRY AppEntry, _In_ ULONG OptionId, _In_ PWCHAR OptionString)
NTSTATUS OslExecuteTransition(VOID)
PPC_QUAL void __writemsr(const unsigned long Value)
_In_ ULONG _In_ ULONG Offset
#define BL_DEVICE_READ_ACCESS
NTSTATUS OslpRemoveInternalApplicationOptions(VOID)
NTSTATUS BlGetBootOptionDevice(_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PBL_DEVICE_DESCRIPTOR *Value, _In_opt_ PBL_BCD_OPTION *ExtraOptions)
GUID OslApplicationIdentifier
NTSTATUS OslArchTransferToKernel(_In_ PLOADER_PARAMETER_BLOCK LoaderBlock, _In_ PVOID KernelEntrypoint)
NTSTATUS OslGetBootStatusData(_Out_ PBOOLEAN LastBootGood, _Out_ PBOOLEAN LastBootShutdown, _Out_ PBOOLEAN LastBootCheckpoint, _Out_ PULONG LastBootId, _Out_ PBOOLEAN BootGood, _Out_ PBOOLEAN BootShutdown)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
ULONG LastSuccessfulShutdownBootId
#define InitializeListHead(ListHead)
ULONG OslBootAttemptCount
ULONG OslFreeMemoryDesctiptorsListSize
RTL_BSD_DATA_POWER_TRANSITION PowerTransition
#define FIELD_OFFSET(t, f)
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
VOID EfiPrintf(_In_ PWCHAR Format,...)
ULONG OslBootAttemptMaximum
NTSTATUS OslpCheckForcedFailure(VOID)
#define BL_LIBRARY_FLAG_REINITIALIZE_ALL
BL_BUFFER_DESCRIPTOR OslFinalMemoryMapDescriptorsBuffer
ULONGLONG BlArchGetPerformanceCounter(VOID)
VOID BlStatusPrint(_In_ PCWCH Format,...)
ULONG MinimumAllocationCount
NTSTATUS OslpGetSetBootStatusData(_In_ BOOLEAN Read, _In_ RTL_BSD_ITEM_TYPE DataClass, _Out_ PVOID Buffer, _Inout_ PULONG Size)
#define RtlZeroMemory(Destination, Length)
struct _BL_APPLICATION_ENTRY * PBL_APPLICATION_ENTRY
VOID BlArchCpuId(_In_ ULONG Function, _In_ ULONG SubFunction, _Out_ PCPU_INFO Result)
#define BCD_APPLICATION_TYPE_OSLOADER
#define RtlCopyMemory(Destination, Source, Length)
#define BL_RETURN_ARGUMENTS_VERSION
NTSTATUS BlpDeviceOpen(_In_ PBL_DEVICE_DESCRIPTOR Device, _In_ ULONG Flags, _In_ ULONG Unknown, _Out_ PULONG DeviceId)
NTSTATUS OslBlStatusErrorHandler(_In_ ULONG ErrorCode, _In_ ULONG Parameter1, _In_ ULONG_PTR Parameter2, _In_ ULONG_PTR Parameter3, _In_ ULONG_PTR Parameter4)
NTSTATUS OslPrepareTarget(_Out_ PULONG ReturnFlags, _Out_ PBOOLEAN Jump)
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
NTSTATUS OslpMain(_Out_ PULONG ReturnFlags)
ULONGLONG ArchXCr0BitsToClear
NTSTATUS BlAppendBootOptionBoolean(_In_ PBL_LOADED_APPLICATION_ENTRY AppEntry, _In_ ULONG OptionId, _In_ BOOLEAN Value)
PBL_MM_MOVE_VIRTUAL_ADDRESS_RANGE BlMmMoveVirtualAddressRange
PBL_STATUS_ERROR_HANDLER BlpStatusErrorHandler
struct _BL_RETURN_ARGUMENTS * PBL_RETURN_ARGUMENTS