134 PVOID RemoteFileAddress;
150 NewFile->BaseAddress = RemoteFileAddress;
168 NewFile->FileId = FileId;
218 if (!(ImageBase) || !(ImageSize))
372 ULONG RemainingLength, CurrentSize, ImageSize, ReadSize;
373 BOOLEAN ComputeSignature, ComputeHash, Completed;
468 if (*MappedSize < ImageSize)
471 *MappedSize = ImageSize;
491 RemainingLength = ImageSize;
500 ShowProgress &= (Completed != 0) - 1;
505 if (ReadSize > ImageSize)
507 ReadSize = ImageSize;
520 while (RemainingLength)
523 if (RemainingLength > ReadSize)
526 CurrentSize = ReadSize;
531 CurrentSize = RemainingLength;
553 RemainingLength -= CurrentSize;
562 ShowProgress &= (Completed != 0) - 1;
574 *MappedSize = ImageSize;
637 FoundSection = SectionHeader;
682 if (!(ImageSize) || !(ImageBase))
713 ULONG_PTR EndOfHeaders, SectionStart, Slack, SectionEnd;
716 UCHAR LocalBuffer[1024];
717 UCHAR TrustedBootInformation[52];
718 ULONG WorkaroundForBinutils;
721 WorkaroundForBinutils = 0;
728 CertDirectory =
NULL;
732 ImageHashValid =
FALSE;
733 RtlZeroMemory(&TrustedBootInformation,
sizeof(TrustedBootInformation));
757 LocalFile = &LocalFileBuffer;
840 Status = RtlULongLongAdd(VirtualSize,
860 if (*ImageSize < VirtualSize)
863 *ImageSize = VirtualSize;
884 if (VirtualSize < HeaderSize)
927 for (
i = 0;
i < SectionCount;
i++)
942 if (!(
First) && (EndOfHeaders < SectionStart))
945 Slack = SectionStart - EndOfHeaders;
954 Status = RtlULongAdd(RawSize, 1, &AlignSize);
964 SectionSize = RawSize;
972 else if (SectionSize < RawSize)
975 RawSize = SectionSize;
990 if (VirtualSize < SectionEnd)
1008 if (VirtualSize < SectionEnd)
1023 if ((*(
PULONG)&Section->
Name ==
'ler.') && (RawSize < AlignSize))
1032 WorkaroundForBinutils = AlignSize - RawSize;
1033 AlignSize -= WorkaroundForBinutils;
1041 (
PVOID)SectionStart,
1057 AlignSize += WorkaroundForBinutils;
1065 if (RawSize < SectionSize)
1068 Slack = SectionSize - RawSize;
1073 EndOfHeaders = SectionStart + SectionSize;
1087 if (EndOfHeaders < SectionStart)
1090 Slack = SectionStart - EndOfHeaders;
1100 while (RemainingLength)
1103 if (RemainingLength >=
sizeof(LocalBuffer))
1139 FinalSum =
FileSize + PartialSum + WorkaroundForBinutils;
1140 if ((FinalSum !=
CheckSum) && (PartialSum == 0xFFFF))
1172 "Boot Environment Library",
1186 if (!ImageHashValid)
1189 BlEnNotifyEvent(0x10000002,
NULL);
1197 Context.ImageSize = VirtualSize;
1198 Context.HashValid = ImageHashValid;
1200 BlEnNotifyEvent(0x10000002, &
Context);
1209 *ImageSize = VirtualSize;
1229 if ((CertBuffer) && (CertDirectory))
1294 if (!(ImageBase) || !(
Path))
1334 PVOID UnlockCode, ImageBase;
1339 BOOLEAN DisableIntegrity, TestSigning;
1344 BitLockerDevice =
NULL;
1349 ImageAppEntry =
NULL;
1364 for (
i = 0;
i < AllowedCount;
i++)
1378 #if BL_BITLOCKER_SUPPORT 1380 Status = BlFveSecureBootUnlockBootDevice(BootEntry, &BitLockerDevice, &UnlockCode);
1423 Context.BootEntry = BootEntry;
1424 BlEnNotifyEvent(0x10000003, &
Context);
1429 if (!DisableIntegrity)
1449 if (BdDebugTransitions)
1453 Status = BlBdInitialize();
1462 BlBdLoadImageSymbols(&PathString, ImageBase);
1468 #if BL_BITLOCKER_SUPPORT 1470 Status = BlSecureBootCheckPolicyOnFveDevice(BitLockerDevice);
1477 #if BL_BITLOCKER_SUPPORT 1479 Status = BlFveSecureBootCheckpointBootApp(BootEntry, BitLockerDevice,
Hash, UnlockCode);
1502 AppEntry->
Guid = BootEntry->Guid;
1503 AppEntry->
Flags = BootEntry->Flags;
1519 ImageAppEntry->
AppEntry = AppEntry;
1565 if (BitLockerDevice)
1624 if (ReturnArguments->DataPage == 0)
1631 EfiPrintf(
L"Return arguments not supported\r\n");
1650 EfiPrintf(
L"Partition copy not supported\r\n");
1706 sizeof(*ReturnArguments) +
1707 sizeof(*MemoryData) +
1708 sizeof(*FirmwareParameters) +
1709 sizeof(*ParameterBlock);
1712 if (ImageParameters->BufferSize <
BufferSize)
1715 if (ImageParameters->BufferSize)
1723 if (!ImageParameters->Buffer)
1741 ParameterBlock->ImageBase = (
ULONG_PTR)ImageBase;
1745 ParameterBlock->MemoryDataOffset =
sizeof(*ParameterBlock);
1749 ParameterBlock->MemoryDataOffset);
1756 MemoryParameters.
Buffer = MemoryData + 1;
1775 ParameterBlock->AppEntryOffset = ParameterBlock->MemoryDataOffset +
1781 ParameterBlock->AppEntryOffset);
1785 ParameterBlock->BootDeviceOffset = ParameterBlock->AppEntryOffset +
1790 ParameterBlock->BootDeviceOffset);
1798 ParameterBlock->FirmwareParametersOffset = ParameterBlock->BootDeviceOffset +
1804 FirmwareParametersOffset);
1812 ParameterBlock->ReturnArgumentsOffset = ParameterBlock->FirmwareParametersOffset +
1818 ReturnArgumentsOffset);
1824 ImageParameters->ActualSize = ParameterBlock->ReturnArgumentsOffset +
1825 sizeof(*ReturnArguments);
1839 ULONG BootSizeNeeded;
1843 PVOID NewStack, NewGdt, NewIdt;
1894 AddressOfEntryPoint);
1906 EfiPrintf(
L"EFI APPLICATION RETURNED!!!\r\n");
1923 EfiPrintf(
L"ImgArchEfiStartBootApplication not implemented for this platform.\r\n");
1943 if (!ReturnArguments)
1948 LocalReturnArgs.
Flags = 0;
1951 ReturnArguments = &LocalReturnArgs;
1970 while (NextEntry != ListHead)
1985 NextEntry = NextEntry->
Flink;
2000 #if BL_BITLOCKER_SUPPORT 2002 FvebpCheckAllPartitions(
TRUE);
2007 BlEnNotifyEvent(0x10000005,
NULL);
static ACPI_BUFFER CurrentBuffer
#define BL_LOAD_IMG_COMPUTE_HASH
static int Hash(const char *)
PBL_DEVICE_DESCRIPTOR BlpBootDevice
#define STATUS_INVALID_IMAGE_WIN_64
NTSTATUS BlFileGetInformation(_In_ ULONG FileId, _In_ PBL_FILE_INFORMATION FileInfo)
return STATUS_NOT_SUPPORTED
ULONG BlGetBootOptionListSize(_In_ PBL_BCD_OPTION BcdOption)
#define BL_MM_INCLUDE_PERSISTENT_MEMORY
NTSTATUS BlFileOpen(_In_ ULONG DeviceId, _In_ PWCHAR FileName, _In_ ULONG Flags, _Out_ PULONG FileId)
NTSTATUS BlImgStartBootApplication(_In_ ULONG AppHandle, _Inout_opt_ PBL_RETURN_ARGUMENTS ReturnArguments)
NTSTATUS BlDeviceClose(_In_ ULONG DeviceId)
#define BL_LOAD_PE_IMG_COMPUTE_HASH
NTSTATUS BlMmMapPhysicalAddressEx(_In_ PVOID *VirtualAddress, _In_ ULONG Attributes, _In_ ULONGLONG Size, _In_ PHYSICAL_ADDRESS PhysicalAddress)
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
#define BL_IMG_VALID_FILE
#define BL_LOAD_IMG_UNKNOWN_BUFFER_FLAG
NTSTATUS EfiStall(_In_ ULONG StallTime)
#define BL_LOAD_PE_IMG_SKIP_RELOCATIONS
NTSTATUS ImgpInitializeBootApplicationParameters(_In_ PBL_BUFFER_DESCRIPTOR ImageParameters, _In_ PBL_APPLICATION_ENTRY AppEntry, _In_ PVOID ImageBase, _In_ ULONG ImageSize)
IN BOOLEAN OUT PSTR Buffer
KDESCRIPTOR BootAppIdtRegister
#define STATUS_INVALID_PARAMETER
NTSTATUS BlFwGetParameters(_In_ PBL_FIRMWARE_DESCRIPTOR Parameters)
NTSTATUS ImgpCloseFile(_In_ PBL_IMG_FILE File)
_In_ BOOLEAN _In_ ULONG HashAlgorithm
#define STATUS_INVALID_IMAGE_WIN_32
NTSTATUS TblDoNotPurgeEntry(_In_ PVOID Entry)
#define BL_LOAD_IMG_EXISTING_BUFFER
struct _BL_MEMORY_DESCRIPTOR BL_MEMORY_DESCRIPTOR
#define BOOT_APPLICATION_SIGNATURE_2
#define BL_LOAD_PE_IMG_EXISTING_BUFFER
static OUT PIO_STATUS_BLOCK OUT PVOID FileInformation
IN PVOID IN PVOID IN USHORT IN USHORT Size
NTSTATUS BlMmAllocatePhysicalPages(_Inout_ PPHYSICAL_ADDRESS Address, _In_ BL_MEMORY_TYPE MemoryType, _In_ ULONGLONG PageCount, _In_ ULONG Attributes, _In_ ULONG Alignment)
NTSTATUS BlImgUnLoadImage(_In_ PVOID ImageBase, _In_ ULONG ImageSize, _In_ ULONG ImageFlags)
NTSTATUS BlImgLoadImageWithProgress2(_In_ ULONG DeviceId, _In_ BL_MEMORY_TYPE MemoryType, _In_ PWCHAR FileName, _Inout_ PVOID *MappedBase, _Inout_ PULONG MappedSize, _In_ ULONG ImageFlags, _In_ BOOLEAN ShowProgress, _Out_opt_ PUCHAR *HashBuffer, _Out_opt_ PULONG HashSize)
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT SourceDevice
#define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY
NTSTATUS BlMmFreePhysicalPages(_In_ PHYSICAL_ADDRESS Address)
#define STATUS_FILE_INVALID
NTSTATUS BlMmFreeHeap(_In_ PVOID Buffer)
#define IMAGE_FILE_MACHINE_AMD64
#define BL_LOAD_IMG_VIRTUAL_BUFFER
#define BL_LOAD_PE_IMG_IGNORE_CHECKSUM_MISMATCH
VOID BlImgQueryCodeIntegrityBootOptions(_In_ PBL_LOADED_APPLICATION_ENTRY ApplicationEntry, _Out_ PBOOLEAN IntegrityChecksDisabled, _Out_ PBOOLEAN TestSigning)
NTSTATUS BlImgUnloadBootApplication(_In_ ULONG AppHandle)
#define BL_MM_INCLUDE_RESERVED_ALLOCATED
struct _BL_FIRMWARE_DESCRIPTOR * PBL_FIRMWARE_DESCRIPTOR
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesReturned
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesRead
KDESCRIPTOR BootAppGdtRegister
#define STATUS_BUFFER_TOO_SMALL
#define IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION
NTSTATUS ImgpReadAtFileOffset(_In_ PBL_IMG_FILE File, _In_ ULONG Size, _In_ ULONGLONG ByteOffset, _In_ PVOID Buffer, _Out_ PULONG BytesReturned)
NTSTATUS ImgpGetFileSize(_In_ PBL_IMG_FILE File, _Out_ PULONG FileSize)
return STATUS_NOT_IMPLEMENTED
PIMAGE_SECTION_HEADER BlImgFindSection(_In_ PVOID ImageBase, _In_ ULONG ImageSize)
#define BL_LOAD_PE_IMG_CHECK_SUBSYSTEM
NTSTATUS BlBdPullRemoteFile(_In_ PWCHAR FilePath, _Out_ PVOID BaseAddress, _Out_ PULONGLONG FileSize)
#define IMAGE_FIRST_SECTION(NtHeader)
__INTRIN_INLINE void __sidt(void *Destination)
ULONGLONG BlTimeQueryPerformanceCounter(_Out_opt_ PLARGE_INTEGER Frequency)
NTSTATUS ImgArchEfiStartBootApplication(_In_ PBL_APPLICATION_ENTRY AppEntry, _In_ PVOID ImageBase, _In_ ULONG ImageSize, _In_ PBL_RETURN_ARGUMENTS ReturnArguments)
struct _BOOT_APPLICATION_PARAMETER_BLOCK * PBOOT_APPLICATION_PARAMETER_BLOCK
BL_TRANSLATION_TYPE MmTranslationType
NTSTATUS BlGetBootOptionBoolean(_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PBOOLEAN Value)
PVOID BlMmAllocateHeap(_In_ SIZE_T Size)
NTSTATUS ImgpOpenFile(_In_ ULONG DeviceId, _In_ PWCHAR FileName, _In_ ULONG Flags, _Out_ PBL_IMG_FILE NewFile)
NTSTATUS NTAPI RtlImageNtHeaderEx(_In_ ULONG Flags, _In_ PVOID Base, _In_ ULONG64 Size, _Out_ PIMAGE_NT_HEADERS *OutHeaders)
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
NTSTATUS BlpGetBootOptionIntegerList(_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PULONGLONG *Value, _Out_ PULONGLONG Count, _In_ BOOLEAN NoCopy)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
NTSTATUS BlpPdParseReturnArguments(_In_ PBL_RETURN_ARGUMENTS ReturnArguments)
#define STATUS_IMAGE_CHECKSUM_MISMATCH
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
#define BL_MM_INCLUDE_MAPPED_ALLOCATED
#define IMAGE_FILE_MACHINE_I386
struct _LIST_ENTRY * Flink
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
#define BL_LOAD_PE_IMG_VIRTUAL_BUFFER
_Must_inspect_result_ _In_ ULONG Flags
#define STATUS_INVALID_IMAGE_FORMAT
NTSTATUS BlMmGetMemoryMap(_In_ PLIST_ENTRY MemoryMap, _In_ PBL_BUFFER_DESCRIPTOR MemoryParameters, _In_ ULONG WhichTypes, _In_ ULONG Flags)
#define NT_SUCCESS(StatCode)
NTSTATUS BlImgLoadPEImageEx(_In_ ULONG DeviceId, _In_ BL_MEMORY_TYPE MemoryType, _In_ PWCHAR Path, _Out_ PVOID *ImageBase, _Out_ PULONG ImageSize, _Out_ PVOID Hash, _In_ ULONG Flags)
ULONG IapAllocatedTableEntries
static FILE_SYSTEM RegisteredFileSystems[]
#define BL_LOAD_PE_IMG_CHECK_FORCED_INTEGRITY
BOOLEAN BdDebuggerNotPresent
UCHAR CheckSum(LPSTR p, ULONG Len)
struct _BL_FIRMWARE_DESCRIPTOR BL_FIRMWARE_DESCRIPTOR
NTSTATUS BlMmUnmapVirtualAddressEx(_In_ PVOID VirtualAddress, _In_ ULONGLONG Size)
NTSTATUS BlImgLoadBootApplication(_In_ PBL_LOADED_APPLICATION_ENTRY BootEntry, _Out_ PULONG AppHandle)
enum _BL_MEMORY_TYPE BL_MEMORY_TYPE
#define STATUS_UNSUCCESSFUL
#define BOOT_APPLICATION_VERSION
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
BOOLEAN BlBdDebuggerEnabled(VOID)
#define BL_LOAD_IMG_COMPUTE_SIGNATURE
NTSTATUS BlGetBootOptionString(_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PWCHAR *Value)
#define BL_MM_INCLUDE_UNMAPPED_ALLOCATED
#define BL_MM_INCLUDE_MAPPED_UNALLOCATED
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
#define BL_LOAD_PE_IMG_CHECK_MACHINE
NTSTATUS MmPapFreePages(_In_ PVOID Address, _In_ ULONG WhichList)
NTSTATUS BlImgUnallocateImageBuffer(_In_ PVOID ImageBase, _In_ ULONG ImageSize, _In_ ULONG ImageFlags)
_Must_inspect_result_ _In_ WDFDEVICE Device
__INTRIN_INLINE void _sgdt(void *Destination)
VOID BlUtlUpdateProgress(_In_ ULONG Percentage, _Out_opt_ PBOOLEAN Completed)
#define BL_IMG_MEMORY_FILE
PBOOT_APPLICATION_PARAMETER_BLOCK BootApp32Parameters
NTSTATUS BlFileClose(_In_ ULONG FileId)
PVOID BootApp32EntryRoutine
#define ALIGN_DOWN_BY(size, align)
_In_ ULONG _In_ ULONG Offset
struct _BL_DEVICE_DESCRIPTOR * PBL_DEVICE_DESCRIPTOR
NTSTATUS ImgpCopyApplicationBootDevice(__in PBL_DEVICE_DESCRIPTOR DestinationDevice, __in PBL_DEVICE_DESCRIPTOR SourceDevice)
#define BL_DEVICE_READ_ACCESS
NTSTATUS BlGetBootOptionDevice(_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PBL_DEVICE_DESCRIPTOR *Value, _In_opt_ PBL_BCD_OPTION *ExtraOptions)
struct _FileName FileName
PRTL_UNICODE_STRING_BUFFER Path
#define BL_UTL_CHECKSUM_USHORT_BUFFER
#define BL_FILE_READ_ACCESS
#define STATUS_MEMORY_NOT_ALLOCATED
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
#define ROUND_TO_PAGES(Size)
#define FIELD_OFFSET(t, f)
#define BL_LOAD_PE_IMG_VALIDATE_ORIGINAL_FILENAME
#define BL_UTL_CHECKSUM_COMPLEMENT
FORCEINLINE PVOID PhysicalAddressToPtr(_In_ PHYSICAL_ADDRESS PhysicalAddress)
ULONG NTAPI LdrRelocateImage(IN PVOID BaseAddress, IN PCCH LoaderName, IN ULONG Success, IN ULONG Conflict, IN ULONG Invalid)
VOID EfiPrintf(_In_ PWCHAR Format,...)
#define BL_MEMORY_DATA_VERSION
static LARGE_INTEGER Frequency
#define BOOT_APPLICATION_SIGNATURE_1
VOID Archx86TransferTo32BitApplicationAsm(VOID)
_Must_inspect_result_ _Outptr_result_bytebuffer_ ViewSize PVOID * MappedBase
NTSTATUS BlTblSetEntry(_Inout_ PVOID **Table, _Inout_ PULONG Count, _In_ PVOID Entry, _Out_ PULONG EntryIndex, _In_ PBL_TBL_SET_ROUTINE Callback)
NTSTATUS BlpDisplayReinitialize(VOID)
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
char * strcpy(char *DstString, const char *SrcString)
NTSTATUS BlImgAllocateImageBuffer(_Inout_ PVOID *ImageBuffer, _In_ ULONG MemoryType, _In_ ULONGLONG ImageSize, _In_ ULONG Flags)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
struct _BL_APPLICATION_ENTRY * PBL_APPLICATION_ENTRY
#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)
BOOLEAN BlMmTranslateVirtualAddress(_In_ PVOID VirtualAddress, _Out_ PPHYSICAL_ADDRESS PhysicalAddress)
struct _BL_MEMORY_DATA * PBL_MEMORY_DATA
NTSTATUS MmPapAllocatePagesInRange(_Inout_ PVOID *PhysicalAddress, _In_ BL_MEMORY_TYPE MemoryType, _In_ ULONGLONG Pages, _In_ ULONG Attributes, _In_ ULONG Alignment, _In_opt_ PBL_ADDRESS_RANGE Range, _In_ ULONG Type)
ULONG BlUtlCheckSum(_In_ ULONG PartialSum, _In_ PUCHAR Buffer, _In_ ULONG Length, _In_ ULONG Flags)
NTSTATUS BlAppendBootOptionInteger(_In_ PBL_LOADED_APPLICATION_ENTRY AppEntry, _In_ ULONG OptionId, _In_ ULONGLONG Value)
NTSTATUS ImgpLoadPEImage(_In_ PBL_IMG_FILE ImageFile, _In_ BL_MEMORY_TYPE MemoryType, _Inout_ PVOID *ImageBase, _Out_opt_ PULONG ImageSize, _Inout_opt_ PVOID Hash, _In_ ULONG Flags)
PBL_APPLICATION_ENTRY AppEntry
#define BL_IMG_REMOTE_FILE
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT OUT PBCB OUT PVBO ByteOffset
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
NTSTATUS BlFileReadAtOffsetEx(_In_ ULONG FileId, _In_ ULONG Size, _In_ ULONGLONG ByteOffset, _In_ PVOID Buffer, _Out_ PULONG BytesReturned, _In_ ULONG Flags)
struct _BL_RETURN_ARGUMENTS * PBL_RETURN_ARGUMENTS