ReactOS 0.4.16-dev-334-g4d9f67c
bl.h File Reference
#include <stdlib.h>
#include <stdio.h>
#include <wchar.h>
#include <ntifs.h>
#include <ntndk.h>
#include <ntintsafe.h>
#include <ntimage.h>
#include <drivers/acpi/acpi.h>
#include <Uefi.h>
#include <DevicePath.h>
#include <LoadedImage.h>
#include <GraphicsOutput.h>
#include <UgaDraw.h>
#include <BlockIo.h>
#include <Acpi.h>
#include <GlobalVariable.h>
#include <cmlib.h>
Include dependency graph for bl.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _BL_LIBRARY_PARAMETERS
 
struct  _BOOT_APPLICATION_PARAMETER_BLOCK
 
struct  _BL_MEMORY_DATA
 
struct  _BL_FIRMWARE_DESCRIPTOR
 
struct  _BL_RETURN_ARGUMENTS
 
struct  _BL_MEMORY_DESCRIPTOR
 
struct  _BL_BCD_OPTION
 
struct  _BL_APPLICATION_ENTRY
 
struct  _BL_LOADED_APPLICATION_ENTRY
 
struct  _BL_MENU_STATUS
 
struct  _BL_HARDDISK_DEVICE
 
struct  _BL_LOCAL_DEVICE
 
struct  _BL_DEVICE_DESCRIPTOR
 
struct  _BL_FILE_PATH_DESCRIPTOR
 
struct  _BL_WINDOWS_LOAD_OPTIONS
 
struct  _BL_ARCH_CONTEXT
 
struct  _BL_MEMORY_DESCRIPTOR_LIST
 
struct  _BL_ADDRESS_RANGE
 
struct  _BL_FILE_INFORMATION
 
struct  _BL_FILE_CALLBACKS
 
struct  _BL_FILE_ENTRY
 
struct  _BL_FILE_SYSTEM_ENTRY
 
struct  _BL_FILE_SYSTEM_REGISTRATION_TABLE
 
struct  _BL_DISPLAY_STATE
 
struct  _BL_DISPLAY_MODE
 
struct  _BL_TEXT_CONSOLE_VTABLE
 
struct  _BL_GRAPHICS_CONSOLE_VTABLE
 
struct  _BL_TEXT_CONSOLE
 
struct  _BL_INPUT_CONSOLE_VTABLE
 
struct  _BL_INPUT_CONSOLE
 
struct  _BL_GRAPHICS_CONSOLE
 
struct  _BL_REMOTE_CONSOLE
 
struct  _BL_HASH_TABLE
 
struct  _BL_HASH_ENTRY
 
struct  _BL_HASH_VALUE
 
struct  _BL_HASH_NODE
 
struct  _BL_BLOCK_DEVICE_INFORMATION
 
struct  _BL_DEVICE_INFORMATION
 
struct  _BL_BLOCK_DEVICE
 
struct  _BL_PROTOCOL_HANDLE
 
struct  _BL_DEVICE_CALLBACKS
 
struct  _BL_DEVICE_ENTRY
 
struct  _BL_IMG_FILE
 
struct  _BL_IMAGE_APPLICATION_ENTRY
 
struct  _BL_BUFFER_DESCRIPTOR
 
struct  _BL_DEFERRED_FONT_FILE
 
struct  _BMP_HEADER
 
struct  _DIB_HEADER
 
struct  _BITMAP
 
struct  _COORD
 
struct  _BL_PD_DATA_BLOB
 

Macros

#define BL_APPLICATION_FLAG_CONVERTED_FROM_EFI   0x01
 
#define BL_APP_ENTRY_SIGNATURE   "BTAPENT"
 
#define BOOT_APPLICATION_SIGNATURE_1   'TOOB'
 
#define BOOT_APPLICATION_SIGNATURE_2   ' PPA'
 
#define BOOT_MEMORY_TRANSLATION_TYPE_PHYSICAL   0
 
#define BOOT_MEMORY_TRANSLATION_TYPE_VIRTUAL   1
 
#define BOOT_APPLICATION_VERSION   2
 
#define BL_MEMORY_DATA_VERSION   1
 
#define BL_RETURN_ARGUMENTS_VERSION   1
 
#define BL_FIRMWARE_DESCRIPTOR_VERSION   2
 
#define BL_RETURN_ARGUMENTS_NO_PAE_FLAG   0x40
 
#define BL_APPLICATION_ENTRY_FLAG_NO_GUID   0x01
 
#define BL_APPLICATION_ENTRY_BCD_OPTIONS_INTERNAL   0x02
 
#define BL_APPLICATION_ENTRY_WINLOAD   0x04
 
#define BL_APPLICATION_ENTRY_STARTUP   0x08
 
#define BL_APPLICATION_ENTRY_REBOOT_ON_ERROR   0x20
 
#define BL_APPLICATION_ENTRY_NTLDR   0x40
 
#define BL_APPLICATION_ENTRY_BCD_OPTIONS_EXTERNAL   0x80
 
#define BL_APPLICATION_ENTRY_WINRESUME   0x100
 
#define BL_APPLICATION_ENTRY_SETUPLDR   0x200
 
#define BL_APPLICATION_ENTRY_BOOTSECTOR   0x400
 
#define BL_APPLICATION_ENTRY_BOOTMGR   0x1000
 
#define BL_APPLICATION_ENTRY_DISPLAY_ORDER   0x800000
 
#define BL_APPLICATION_ENTRY_FIXED_SEQUENCE   0x20000000
 
#define BL_APPLICATION_ENTRY_RECOVERY   0x40000000
 
#define BL_CONTEXT_PAGING_ON   1
 
#define BL_CONTEXT_INTERRUPTS_ON   2
 
#define BL_MM_FLAG_USE_FIRMWARE_FOR_MEMORY_MAP_BUFFERS   0x01
 
#define BL_MM_FLAG_REQUEST_COALESCING   0x02
 
#define BL_MM_ADD_DESCRIPTOR_COALESCE_FLAG   0x01
 
#define BL_MM_ADD_DESCRIPTOR_TRUNCATE_FLAG   0x02
 
#define BL_MM_ADD_DESCRIPTOR_NEVER_COALESCE_FLAG   0x10
 
#define BL_MM_ADD_DESCRIPTOR_NEVER_TRUNCATE_FLAG   0x20
 
#define BL_MM_ADD_DESCRIPTOR_ALLOCATE_FLAG   0x1000
 
#define BL_MM_ADD_DESCRIPTOR_UPDATE_LIST_POINTER_FLAG   0x2000
 
#define BL_MM_INCLUDE_MAPPED_ALLOCATED   0x01
 
#define BL_MM_INCLUDE_MAPPED_UNALLOCATED   0x02
 
#define BL_MM_INCLUDE_UNMAPPED_ALLOCATED   0x04
 
#define BL_MM_INCLUDE_UNMAPPED_UNALLOCATED   0x08
 
#define BL_MM_INCLUDE_RESERVED_ALLOCATED   0x10
 
#define BL_MM_INCLUDE_BAD_MEMORY   0x20
 
#define BL_MM_INCLUDE_FIRMWARE_MEMORY   0x40
 
#define BL_MM_INCLUDE_TRUNCATED_MEMORY   0x80
 
#define BL_MM_INCLUDE_PERSISTENT_MEMORY   0x100
 
#define BL_MM_INCLUDE_FIRMWARE_MEMORY_2   0x200
 
#define BL_MM_INCLUDE_NO_FIRMWARE_MEMORY
 
#define BL_MM_INCLUDE_ONLY_FIRMWARE_MEMORY
 
#define BL_MM_REQUEST_DEFAULT_TYPE   1
 
#define BL_MM_REQUEST_TOP_DOWN_TYPE   2
 
#define BL_MM_REMOVE_PHYSICAL_REGION_FLAG   0x40000000
 
#define BL_MM_REMOVE_VIRTUAL_REGION_FLAG   0x80000000
 
#define BL_LIBRARY_FLAG_NO_DISPLAY   0x01
 
#define BL_LIBRARY_FLAG_REINITIALIZE   0x02
 
#define BL_LIBRARY_FLAG_REINITIALIZE_ALL   0x04
 
#define BL_LIBRARY_FLAG_ZERO_HEAP_ALLOCATIONS_ON_FREE   0x10
 
#define BL_LIBRARY_FLAG_INITIALIZATION_COMPLETED   0x20
 
#define BL_LIBRARY_FLAG_NO_GRAPHICS_CONSOLE   0x800
 
#define BL_DISPLAY_GRAPHICS_FORCED_VIDEO_MODE_FLAG   0x01
 
#define BL_DISPLAY_GRAPHICS_FORCED_HIGH_RES_MODE_FLAG   0x02
 
#define BL_HT_VALUE_IS_INLINE   0x01
 
#define BL_FS_REGISTER_AT_HEAD_FLAG   1
 
#define BL_BLOCK_DEVICE_REMOVABLE_FLAG   0x01
 
#define BL_BLOCK_DEVICE_PRESENT_FLAG   0x02
 
#define BL_BLOCK_DEVICE_VIRTUAL_FLAG   0x04
 
#define BL_MEMORY_CLASS_SHIFT   28
 
#define BL_FILE_READ_ACCESS   0x01
 
#define BL_FILE_WRITE_ACCESS   0x02
 
#define BL_DIRECTORY_ACCESS   0x04
 
#define BL_UNKNOWN_ACCESS   0x10
 
#define BL_DEVICE_READ_ACCESS   0x01
 
#define BL_DEVICE_WRITE_ACCESS   0x02
 
#define BL_DEVICE_ENTRY_OPENED   0x01
 
#define BL_DEVICE_ENTRY_READ_ACCESS   0x02
 
#define BL_DEVICE_ENTRY_WRITE_ACCESS   0x04
 
#define BL_FILE_ENTRY_OPENED   0x01
 
#define BL_FILE_ENTRY_READ_ACCESS   0x02
 
#define BL_FILE_ENTRY_WRITE_ACCESS   0x04
 
#define BL_FILE_ENTRY_UNKNOWN_ACCESS   0x10
 
#define BL_FILE_ENTRY_DIRECTORY   0x10000
 
#define BL_ETFS_FILE_ENTRY_DIRECTORY   0x01
 
#define BL_IMG_VALID_FILE   0x01
 
#define BL_IMG_MEMORY_FILE   0x02
 
#define BL_IMG_REMOTE_FILE   0x04
 
#define BL_LOAD_IMG_VIRTUAL_BUFFER   0x01
 
#define BL_LOAD_IMG_EXISTING_BUFFER   0x04
 
#define BL_LOAD_IMG_UNKNOWN_BUFFER_FLAG   0x08
 
#define BL_LOAD_IMG_COMPUTE_SIGNATURE   0x10
 
#define BL_LOAD_IMG_COMPUTE_HASH   0x40000
 
#define BL_LOAD_PE_IMG_VIRTUAL_BUFFER   BL_LOAD_IMG_VIRTUAL_BUFFER
 
#define BL_LOAD_PE_IMG_CHECK_MACHINE   0x02
 
#define BL_LOAD_PE_IMG_EXISTING_BUFFER   BL_LOAD_IMG_EXISTING_BUFFER
 
#define BL_LOAD_PE_IMG_COMPUTE_HASH   0x10
 
#define BL_LOAD_PE_IMG_CHECK_SUBSYSTEM   0x80
 
#define BL_LOAD_PE_IMG_SKIP_RELOCATIONS   0x100
 
#define BL_LOAD_PE_IMG_CHECK_FORCED_INTEGRITY   0x200
 
#define BL_LOAD_PE_IMG_IGNORE_CHECKSUM_MISMATCH   0x10000
 
#define BL_LOAD_PE_IMG_VALIDATE_ORIGINAL_FILENAME   0x400000
 
#define BL_UTL_CHECKSUM_COMPLEMENT   0x10000
 
#define BL_UTL_CHECKSUM_ROTATE   0x20000
 
#define BL_UTL_CHECKSUM_NEGATE   0x40000
 
#define BL_UTL_CHECKSUM_UCHAR_BUFFER   0x01
 
#define BL_UTL_CHECKSUM_USHORT_BUFFER   0x02
 

Typedefs

typedef enum _BL_COLOR BL_COLOR
 
typedef enum _BL_COLORPBL_COLOR
 
typedef enum _BL_MENU_POLICY BL_MENU_POLICY
 
typedef enum _BL_MEMORY_DESCRIPTOR_TYPE BL_MEMORY_DESCRIPTOR_TYPE
 
typedef enum _BL_TRANSLATION_TYPE BL_TRANSLATION_TYPE
 
typedef enum _BL_ARCH_MODE BL_ARCH_MODE
 
typedef enum _BL_DEVICE_TYPE BL_DEVICE_TYPE
 
typedef enum _BL_LOCAL_DEVICE_TYPE BL_LOCAL_DEVICE_TYPE
 
typedef enum _BL_PARTITION_TYPE BL_PARTITION_TYPE
 
typedef enum _BL_PATH_TYPE BL_PATH_TYPE
 
typedef enum _BL_MEMORY_CLASS BL_MEMORY_CLASS
 
typedef enum _BL_MEMORY_TYPE BL_MEMORY_TYPE
 
typedef enum _BL_MEMORY_ATTR BL_MEMORY_ATTR
 
typedef NTSTATUS(* PBL_FILE_OPEN) (_In_ struct _BL_FILE_ENTRY *Directory, _In_ PWCHAR FileName, _In_ ULONG Flags, _Out_ struct _BL_FILE_ENTRY **FileEntry)
 
typedef NTSTATUS(* PBL_FILE_CLOSE) (_In_ struct _BL_FILE_ENTRY *FileEntry)
 
typedef NTSTATUS(* PBL_FILE_READ) (_In_ struct _BL_FILE_ENTRY *FileEntry, _In_ PVOID Buffer, _In_ ULONG Size, _Out_opt_ PULONG BytesRead)
 
typedef NTSTATUS(* PBL_FILE_WRITE) (VOID)
 
typedef NTSTATUS(* PBL_FILE_GET_NEXT) (VOID)
 
typedef NTSTATUS(* PBL_FILE_GET_INFO) (_In_ struct _BL_FILE_ENTRY *FileEntry, _Out_ struct _BL_FILE_INFORMATION *FileInfo)
 
typedef NTSTATUS(* PBL_FILE_SET_INFO) (_In_ struct _BL_FILE_ENTRY *FileEntry, _In_ struct _BL_FILE_INFORMATION *FileInfo)
 
typedef NTSTATUS(* PBL_FS_INIT_CALLBACK) (VOID)
 
typedef NTSTATUS(* PBL_FS_DESTROY_CALLBACK) (VOID)
 
typedef NTSTATUS(* PBL_FS_MOUNT_CALLBACK) (_In_ ULONG DeviceId, _In_ ULONG Unknown, _Out_ struct _BL_FILE_ENTRY **FileEntry)
 
typedef NTSTATUS(* PBL_FS_PURGE_CALLBACK) (VOID)
 
typedef NTSTATUS(* PBL_FILE_DESTROY_CALLBACK) (_In_ PVOID Entry)
 
typedef VOID(* PCONSOLE_DESTRUCT) (_In_ struct _BL_TEXT_CONSOLE *Console)
 
typedef NTSTATUS(* PCONSOLE_REINITIALIZE) (_In_ struct _BL_TEXT_CONSOLE *Console)
 
typedef NTSTATUS(* PCONSOLE_GET_TEXT_STATE) (_In_ struct _BL_TEXT_CONSOLE *Console, _Out_ struct _BL_DISPLAY_STATE *TextState)
 
typedef NTSTATUS(* PCONSOLE_SET_TEXT_STATE) (_In_ struct _BL_TEXT_CONSOLE *Console, _In_ ULONG Flags, _In_ struct _BL_DISPLAY_STATE *TextState)
 
typedef NTSTATUS(* PCONSOLE_GET_TEXT_RESOLUTION) (_In_ struct _BL_TEXT_CONSOLE *Console, _Out_ PULONG TextResolution)
 
typedef NTSTATUS(* PCONSOLE_SET_TEXT_RESOLUTION) (_In_ struct _BL_TEXT_CONSOLE *Console, _In_ ULONG NewTextResolution, _Out_ PULONG OldTextResolution)
 
typedef NTSTATUS(* PCONSOLE_CLEAR_TEXT) (_In_ struct _BL_TEXT_CONSOLE *Console, _In_ BOOLEAN LineOnly)
 
typedef BOOLEAN(* PCONSOLE_IS_ENABLED) (_In_ struct _BL_GRAPHICS_CONSOLE *Console)
 
typedef NTSTATUS(* PCONSOLE_GET_GRAPHICAL_RESOLUTION) (_In_ struct _BL_GRAPHICS_CONSOLE *Console, _Out_ struct _BL_DISPLAY_MODE *DisplayMode)
 
typedef NTSTATUS(* PCONSOLE_SET_GRAPHICAL_RESOLUTION) (_In_ struct _BL_GRAPHICS_CONSOLE *Console, _In_ struct _BL_DISPLAY_MODE DisplayMode)
 
typedef NTSTATUS(* PCONSOLE_ENABLE) (_In_ struct _BL_GRAPHICS_CONSOLE *Console, _In_ BOOLEAN Enable)
 
typedef NTSTATUS(* PCONSOLE_WRITE_TEXT) (_In_ struct _BL_TEXT_CONSOLE *Console, _In_ PCHAR Text, _In_ ULONG Attribute)
 
typedef BOOLEAN(* PBL_TBL_LOOKUP_ROUTINE) (_In_ PVOID Entry, _In_ PVOID Argument1, _In_ PVOID Argument2, _In_ PVOID Argument3, _In_ PVOID Argument4)
 
typedef NTSTATUS(* PBL_TBL_MAP_ROUTINE) (_In_ PVOID Entry, _In_ ULONG EntryIndex)
 
typedef NTSTATUS(* PBL_TBL_SET_ROUTINE) (_In_ PVOID Entry)
 
typedef NTSTATUS(* PBL_IO_DESTROY_ROUTINE) (VOID)
 
typedef BOOLEAN(* PBL_HASH_TABLE_COMPARE_FUNCTION) (_In_ struct _BL_HASH_ENTRY *Entry1, _In_ struct _BL_HASH_ENTRY *Entry2)
 
typedef ULONG(* PBL_HASH_TABLE_HASH_FUNCTION) (_In_ struct _BL_HASH_ENTRY *Entry, _In_ ULONG TableSize)
 
typedef NTSTATUS(* PBL_DEVICE_ENUMERATE_DEVICE_CLASS) (VOID)
 
typedef NTSTATUS(* PBL_DEVICE_OPEN) (_In_ struct _BL_DEVICE_DESCRIPTOR *Device, _In_ struct _BL_DEVICE_ENTRY *DeviceEntry)
 
typedef NTSTATUS(* PBL_DEVICE_CLOSE) (_In_ struct _BL_DEVICE_ENTRY *DeviceEntry)
 
typedef NTSTATUS(* PBL_DEVICE_READ) (_In_ struct _BL_DEVICE_ENTRY *DeviceEntry, _In_ PVOID Buffer, _In_ ULONG Size, _Out_ PULONG BytesRead)
 
typedef NTSTATUS(* PBL_DEVICE_WRITE) (VOID)
 
typedef NTSTATUS(* PBL_DEVICE_GET_INFORMATION) (_In_ struct _BL_DEVICE_ENTRY *DeviceEntry, _Out_ struct _BL_DEVICE_INFORMATION *DeviceInformation)
 
typedef NTSTATUS(* PBL_DEVICE_SET_INFORMATION) (_In_ struct _BL_DEVICE_ENTRY *DeviceEntry, _In_ struct _BL_DEVICE_INFORMATION *DeviceInformation)
 
typedef NTSTATUS(* PBL_DEVICE_RESET) (VOID)
 
typedef NTSTATUS(* PBL_DEVICE_FLUSH) (VOID)
 
typedef NTSTATUS(* PBL_DEVICE_CREATE) (VOID)
 
typedef VOID(* PBL_MM_FLUSH_TLB) (VOID)
 
typedef VOID(* PBL_MM_RELOCATE_SELF_MAP) (VOID)
 
typedef NTSTATUS(* PBL_MM_MOVE_VIRTUAL_ADDRESS_RANGE) (_In_ PVOID DestinationAddress, _In_ PVOID SourceAddress, _In_ ULONGLONG Size)
 
typedef NTSTATUS(* PBL_MM_ZERO_VIRTUAL_ADDRESS_RANGE) (_In_ PVOID DestinationAddress, _In_ ULONGLONG Size)
 
typedef VOID(* PBL_MM_DESTROY_SELF_MAP) (VOID)
 
typedef VOID(* PBL_MM_FLUSH_TLB_ENTRY) (_In_ PVOID VirtualAddress)
 
typedef NTSTATUS(* PBL_MM_UNMAP_VIRTUAL_ADDRESS) (_In_ PVOID VirtualAddress, _In_ ULONG Size)
 
typedef NTSTATUS(* PBL_MM_REMAP_VIRTUAL_ADDRESS) (_In_ PPHYSICAL_ADDRESS PhysicalAddress, _Out_ PVOID VirtualAddress, _In_ ULONG Size, _In_ ULONG CacheAttributes)
 
typedef NTSTATUS(* PBL_MM_MAP_PHYSICAL_ADDRESS) (_In_ PHYSICAL_ADDRESS PhysicalAddress, _Out_ PVOID VirtualAddress, _In_ ULONG Size, _In_ ULONG CacheAttributes)
 
typedef BOOLEAN(* PBL_MM_TRANSLATE_VIRTUAL_ADDRESS) (_In_ PVOID VirtualAddress, _Out_ PPHYSICAL_ADDRESS PhysicalAddress, _Out_opt_ PULONG CacheAttributes)
 
typedef NTSTATUS(* PBL_STATUS_ERROR_HANDLER) (_In_ ULONG ErrorCode, _In_ ULONG Parameter1, _In_ ULONG_PTR Parameter2, _In_ ULONG_PTR Parameter3, _In_ ULONG_PTR Parameter4)
 
typedef struct _BL_LIBRARY_PARAMETERS BL_LIBRARY_PARAMETERS
 
typedef struct _BL_LIBRARY_PARAMETERSPBL_LIBRARY_PARAMETERS
 
typedef struct _BOOT_APPLICATION_PARAMETER_BLOCK BOOT_APPLICATION_PARAMETER_BLOCK
 
typedef struct _BOOT_APPLICATION_PARAMETER_BLOCKPBOOT_APPLICATION_PARAMETER_BLOCK
 
typedef struct _BL_MEMORY_DATA BL_MEMORY_DATA
 
typedef struct _BL_MEMORY_DATAPBL_MEMORY_DATA
 
typedef struct _BL_FIRMWARE_DESCRIPTOR BL_FIRMWARE_DESCRIPTOR
 
typedef struct _BL_FIRMWARE_DESCRIPTORPBL_FIRMWARE_DESCRIPTOR
 
typedef struct _BL_RETURN_ARGUMENTS BL_RETURN_ARGUMENTS
 
typedef struct _BL_RETURN_ARGUMENTSPBL_RETURN_ARGUMENTS
 
typedef struct _BL_MEMORY_DESCRIPTOR BL_MEMORY_DESCRIPTOR
 
typedef struct _BL_MEMORY_DESCRIPTORPBL_MEMORY_DESCRIPTOR
 
typedef struct _BL_BCD_OPTION BL_BCD_OPTION
 
typedef struct _BL_BCD_OPTIONPBL_BCD_OPTION
 
typedef struct _BL_APPLICATION_ENTRY BL_APPLICATION_ENTRY
 
typedef struct _BL_APPLICATION_ENTRYPBL_APPLICATION_ENTRY
 
typedef struct _BL_LOADED_APPLICATION_ENTRY BL_LOADED_APPLICATION_ENTRY
 
typedef struct _BL_LOADED_APPLICATION_ENTRYPBL_LOADED_APPLICATION_ENTRY
 
typedef struct _BL_MENU_STATUS BL_MENU_STATUS
 
typedef struct _BL_MENU_STATUSPL_MENU_STATUS
 
typedef enum _BL_BOOT_ERROR_STATUS BL_BOOT_ERROR_STATUS
 
typedef struct _BL_HARDDISK_DEVICE BL_HARDDISK_DEVICE
 
typedef struct _BL_LOCAL_DEVICE BL_LOCAL_DEVICE
 
typedef struct _BL_LOCAL_DEVICEPBL_LOCAL_DEVICE
 
typedef struct _BL_DEVICE_DESCRIPTOR BL_DEVICE_DESCRIPTOR
 
typedef struct _BL_DEVICE_DESCRIPTORPBL_DEVICE_DESCRIPTOR
 
typedef struct _BL_FILE_PATH_DESCRIPTOR BL_FILE_PATH_DESCRIPTOR
 
typedef struct _BL_FILE_PATH_DESCRIPTORPBL_FILE_PATH_DESCRIPTOR
 
typedef struct _BL_WINDOWS_LOAD_OPTIONS BL_WINDOWS_LOAD_OPTIONS
 
typedef struct _BL_WINDOWS_LOAD_OPTIONSPBL_WINDOWS_LOAD_OPTIONS
 
typedef struct _BL_ARCH_CONTEXT BL_ARCH_CONTEXT
 
typedef struct _BL_ARCH_CONTEXTPBL_ARCH_CONTEXT
 
typedef struct _BL_MEMORY_DESCRIPTOR_LIST BL_MEMORY_DESCRIPTOR_LIST
 
typedef struct _BL_MEMORY_DESCRIPTOR_LISTPBL_MEMORY_DESCRIPTOR_LIST
 
typedef struct _BL_ADDRESS_RANGE BL_ADDRESS_RANGE
 
typedef struct _BL_ADDRESS_RANGEPBL_ADDRESS_RANGE
 
typedef struct _BL_FILE_INFORMATION BL_FILE_INFORMATION
 
typedef struct _BL_FILE_INFORMATIONPBL_FILE_INFORMATION
 
typedef struct _BL_FILE_CALLBACKS BL_FILE_CALLBACKS
 
typedef struct _BL_FILE_CALLBACKSPBL_FILE_CALLBACKS
 
typedef struct _BL_FILE_ENTRY BL_FILE_ENTRY
 
typedef struct _BL_FILE_ENTRYPBL_FILE_ENTRY
 
typedef struct _BL_FILE_SYSTEM_ENTRY BL_FILE_SYSTEM_ENTRY
 
typedef struct _BL_FILE_SYSTEM_ENTRYPBL_FILE_SYSTEM_ENTRY
 
typedef struct _BL_FILE_SYSTEM_REGISTRATION_TABLE BL_FILE_SYSTEM_REGISTRATION_TABLE
 
typedef struct _BL_DISPLAY_STATE BL_DISPLAY_STATE
 
typedef struct _BL_DISPLAY_STATEPBL_DISPLAY_STATE
 
typedef struct _BL_DISPLAY_MODE BL_DISPLAY_MODE
 
typedef struct _BL_DISPLAY_MODEPBL_DISPLAY_MODE
 
typedef struct _BL_TEXT_CONSOLE_VTABLE BL_TEXT_CONSOLE_VTABLE
 
typedef struct _BL_TEXT_CONSOLE_VTABLEPBL_TEXT_CONSOLE_VTABLE
 
typedef struct _BL_GRAPHICS_CONSOLE_VTABLE BL_GRAPHICS_CONSOLE_VTABLE
 
typedef struct _BL_GRAPHICS_CONSOLE_VTABLEPBL_GRAPHICS_CONSOLE_VTABLE
 
typedef struct _BL_TEXT_CONSOLE BL_TEXT_CONSOLE
 
typedef struct _BL_TEXT_CONSOLEPBL_TEXT_CONSOLE
 
typedef struct _BL_INPUT_CONSOLE_VTABLE BL_INPUT_CONSOLE_VTABLE
 
typedef struct _BL_INPUT_CONSOLE_VTABLEPBL_INPUT_CONSOLE_VTABLE
 
typedef struct _BL_INPUT_CONSOLE BL_INPUT_CONSOLE
 
typedef struct _BL_INPUT_CONSOLEPBL_INPUT_CONSOLE
 
typedef enum _BL_GRAPHICS_CONSOLE_TYPE BL_GRAPHICS_CONSOLE_TYPE
 
typedef struct _BL_GRAPHICS_CONSOLE BL_GRAPHICS_CONSOLE
 
typedef struct _BL_GRAPHICS_CONSOLEPBL_GRAPHICS_CONSOLE
 
typedef struct _BL_REMOTE_CONSOLE BL_REMOTE_CONSOLE
 
typedef struct _BL_REMOTE_CONSOLEPBL_REMOTE_CONSOLE
 
typedef struct _BL_HASH_TABLE BL_HASH_TABLE
 
typedef struct _BL_HASH_TABLEPBL_HASH_TABLE
 
typedef struct _BL_HASH_ENTRY BL_HASH_ENTRY
 
typedef struct _BL_HASH_ENTRYPBL_HASH_ENTRY
 
typedef struct _BL_HASH_VALUE BL_HASH_VALUE
 
typedef struct _BL_HASH_VALUEPBL_HASH_VALUE
 
typedef struct _BL_HASH_NODE BL_HASH_NODE
 
typedef struct _BL_HASH_NODEPBL_HASH_NODE
 
typedef struct _BL_BLOCK_DEVICE_INFORMATION BL_BLOCK_DEVICE_INFORMATION
 
typedef struct _BL_BLOCK_DEVICE_INFORMATIONPBL_BLOCK_DEVICE_INFORMATION
 
typedef struct _BL_DEVICE_INFORMATION BL_DEVICE_INFORMATION
 
typedef struct _BL_DEVICE_INFORMATIONPBL_DEVICE_INFORMATION
 
typedef struct _BL_BLOCK_DEVICE BL_BLOCK_DEVICE
 
typedef struct _BL_BLOCK_DEVICEPBL_BLOCK_DEVICE
 
typedef struct _BL_PROTOCOL_HANDLE BL_PROTOCOL_HANDLE
 
typedef struct _BL_PROTOCOL_HANDLEPBL_PROTOCOL_HANDLE
 
typedef struct _BL_DEVICE_CALLBACKS BL_DEVICE_CALLBACKS
 
typedef struct _BL_DEVICE_CALLBACKSPBL_DEVICE_CALLBACKS
 
typedef struct _BL_DEVICE_ENTRY BL_DEVICE_ENTRY
 
typedef struct _BL_DEVICE_ENTRYPBL_DEVICE_ENTRY
 
typedef struct _BL_IMG_FILE BL_IMG_FILE
 
typedef struct _BL_IMG_FILEPBL_IMG_FILE
 
typedef struct _BL_IMAGE_APPLICATION_ENTRY BL_IMAGE_APPLICATION_ENTRY
 
typedef struct _BL_IMAGE_APPLICATION_ENTRYPBL_IMAGE_APPLICATION_ENTRY
 
typedef struct _BL_BUFFER_DESCRIPTOR BL_BUFFER_DESCRIPTOR
 
typedef struct _BL_BUFFER_DESCRIPTORPBL_BUFFER_DESCRIPTOR
 
typedef struct _BL_DEFERRED_FONT_FILE BL_DEFERRED_FONT_FILE
 
typedef struct _BL_DEFERRED_FONT_FILEPBL_DEFERRED_FONT_FILE
 
typedef struct _BMP_HEADER BMP_HEADER
 
typedef struct _BMP_HEADERPBMP_HEADER
 
typedef struct _DIB_HEADER DIB_HEADER
 
typedef struct _DIB_HEADERPDIB_HEADER
 
typedef struct _BITMAP BITMAP
 
typedef struct _BITMAPPBITMAP
 
typedef struct _COORD COORD
 
typedef struct _COORDPCOORD
 
typedef struct _BL_PD_DATA_BLOB BL_PD_DATA_BLOB
 
typedef struct _BL_PD_DATA_BLOBPBL_PD_DATA_BLOB
 

Enumerations

enum  _BL_COLOR {
  Black , Blue , Green , Cyan ,
  Red , Magenta , Brown , LtGray ,
  Gray , LtBlue , LtGreen , LtCyan ,
  LtRed , LtMagenta , Yellow , White
}
 
enum  _BL_MENU_POLICY { MenuPolicyLegacy = 0 , MenuPolicyStandard = 1 }
 
enum  _BL_MEMORY_DESCRIPTOR_TYPE { BlMdPhysical , BlMdVirtual , BlMdTracker }
 
enum  _BL_TRANSLATION_TYPE { BlNone , BlVirtual , BlPae , BlMax }
 
enum  _BL_ARCH_MODE { BlProtectedMode , BlRealMode }
 
enum  _BL_DEVICE_TYPE {
  DiskDevice = 0 , LegacyPartitionDevice = 2 , SerialDevice = 3 , UdpDevice = 4 ,
  BootDevice = 5 , PartitionDevice = 6 , LocateDevice = 8
}
 
enum  _BL_LOCAL_DEVICE_TYPE {
  LocalDevice = 0 , FloppyDevice = 1 , CdRomDevice = 2 , RamDiskDevice = 3 ,
  FileDevice = 5 , VirtualDiskDevice = 6
}
 
enum  _BL_PARTITION_TYPE { GptPartition , MbrPartition , RawPartition }
 
enum  _BL_PATH_TYPE { InternalPath = 3 , EfiPath = 4 }
 
enum  _BL_MEMORY_CLASS { BlLoaderClass = 0xD , BlApplicationClass , BlSystemClass }
 
enum  _BL_MEMORY_TYPE {
  BlLoaderMemory = 0xD0000002 , BlLoaderDeviceMemory = 0xD0000004 , BlLoaderHeap = 0xD0000005 , BlLoaderPageDirectory = 0xD0000006 ,
  BlLoaderReferencePage = 0xD0000007 , BlLoaderRamDisk = 0xD0000008 , BlLoaderArchData = 0xD0000009 , BlLoaderData = 0xD000000A ,
  BlLoaderRegistry = 0xD000000B , BlLoaderBlockMemory = 0xD000000C , BlLoaderSelfMap = 0xD000000F , BlApplicationReserved = 0xE0000001 ,
  BlApplicationData = 0xE0000004 , BlConventionalMemory = 0xF0000001 , BlUnusableMemory = 0xF0000002 , BlReservedMemory = 0xF0000003 ,
  BlEfiBootMemory = 0xF0000004 , BlConventionalZeroedMemory = 0xF000005 , BlEfiRuntimeCodeMemory = 0xF0000006 , BlAcpiReclaimMemory = 0xF0000008 ,
  BlAcpiNvsMemory = 0xF0000009 , BlDeviceIoMemory = 0xF000000A , BlDevicePortMemory = 0xF000000B , BlPalMemory = 0xF000000C ,
  BlEfiRuntimeDataMemory = 0xF000000E
}
 
enum  _BL_MEMORY_ATTR {
  BlMemoryUncached = 0x00000001 , BlMemoryWriteCombined = 0x00000002 , BlMemoryWriteThrough = 0x00000004 , BlMemoryWriteBack = 0x00000008 ,
  BlMemoryUncachedExported = 0x00000010 , BlMemoryValidCacheAttributes = BlMemoryUncached | BlMemoryWriteCombined | BlMemoryWriteThrough | BlMemoryWriteBack | BlMemoryUncachedExported , BlMemoryValidCacheAttributeMask = 0x000000FF , BlMemoryWriteProtected = 0x00000100 ,
  BlMemoryReadProtected = 0x00000200 , BlMemoryExecuteProtected = 0x00000400 , BlMemoryValidProtectionAttributes = BlMemoryWriteProtected | BlMemoryReadProtected | BlMemoryExecuteProtected , BlMemoryValidProtectionAttributeMask = 0x0000FF00 ,
  BlMemoryLargePages = 0x00010000 , BlMemoryKernelRange = 0x00020000 , BlMemoryFixed = 0x00040000 , BlMemoryBelow1MB = 0x00080000 ,
  BlMemoryValidAllocationAttributes = BlMemoryKernelRange | BlMemoryFixed | BlMemoryBelow1MB | BlMemoryLargePages , BlMemoryValidAllocationAttributeMask = 0x00FF0000 , BlMemoryRuntime = 0x01000000 , BlMemoryCoalesced = 0x02000000 ,
  BlMemoryUpdate = 0x04000000 , BlMemoryNonFirmware = 0x08000000 , BlMemoryPersistent = 0x10000000 , BlMemorySpecial = 0x20000000 ,
  BlMemoryFirmware = 0x80000000 , BlMemoryValidTypeAttributes = BlMemoryRuntime | BlMemoryCoalesced | BlMemoryUpdate | BlMemoryNonFirmware | BlMemoryPersistent | BlMemorySpecial | BlMemoryFirmware , BlMemoryValidTypeAttributeMask = 0xFF000000
}
 
enum  _BL_BOOT_ERROR_STATUS {
  Reboot = 1 , Recover = 2 , RecoverOem = 3 , OsSelection = 4 ,
  NextOs = 5 , TryAgain = 6 , AdvancedOptions = 7 , BootOptions = 8
}
 
enum  _BL_GRAPHICS_CONSOLE_TYPE { BlGopConsole , BlUgaConsole }
 

Functions

 DEFINE_GUID (BadMemoryGuid, 0x54B8275B, 0xD431, 0x473F, 0xAC, 0xFB, 0xE5, 0x36, 0xA0, 0x84, 0x94, 0xA3)
 
 C_ASSERT (BL_MM_INCLUDE_NO_FIRMWARE_MEMORY==0x1BF)
 
 C_ASSERT (BL_MM_INCLUDE_ONLY_FIRMWARE_MEMORY==0x240)
 
FORCEINLINE VOID BlSetupDefaultParameters (_Out_ PBL_LIBRARY_PARAMETERS LibraryParameters)
 
FORCEINLINE VOID MmMdInitializeListHead (_In_ PBL_MEMORY_DESCRIPTOR_LIST List)
 
FORCEINLINE PVOID PhysicalAddressToPtr (_In_ PHYSICAL_ADDRESS PhysicalAddress)
 
NTSTATUS BlInitializeLibrary (_In_ PBOOT_APPLICATION_PARAMETER_BLOCK BootAppParameters, _In_ PBL_LIBRARY_PARAMETERS LibraryParameters)
 
NTSTATUS BlpArchInitialize (_In_ ULONG Phase)
 
NTSTATUS BlpFwInitialize (_In_ ULONG Phase, _In_ PBL_FIRMWARE_DESCRIPTOR FirmwareParameters)
 
NTSTATUS BlpMmInitialize (_In_ PBL_MEMORY_DATA MemoryData, _In_ BL_TRANSLATION_TYPE TranslationType, _In_ PBL_LIBRARY_PARAMETERS LibraryParameters)
 
NTSTATUS MmBaInitialize (VOID)
 
NTSTATUS MmPaInitialize (_In_ PBL_MEMORY_DATA MemoryData, _In_ ULONG MinimumPages)
 
NTSTATUS MmArchInitialize (_In_ ULONG Phase, _In_ PBL_MEMORY_DATA MemoryData, _In_ BL_TRANSLATION_TYPE TranslationType, _In_ BL_TRANSLATION_TYPE LibraryTranslationType)
 
NTSTATUS MmHaInitialize (_In_ ULONG HeapSize, _In_ ULONG HeapAttributes)
 
VOID MmMdInitialize (_In_ ULONG Phase, _In_ PBL_LIBRARY_PARAMETERS LibraryParameters)
 
NTSTATUS BlpDeviceInitialize (VOID)
 
NTSTATUS BlpIoInitialize (VOID)
 
NTSTATUS BlpFileInitialize (VOID)
 
NTSTATUS BlpDisplayInitialize (_In_ ULONG Flags)
 
NTSTATUS BlpDisplayReinitialize (VOID)
 
VOID BlDestroyLibrary (VOID)
 
NTSTATUS BcInitialize (VOID)
 
VOID EfiPrintf (_In_ PWCHAR Format,...)
 
NTSTATUS BlFwGetParameters (_In_ PBL_FIRMWARE_DESCRIPTOR Parameters)
 
NTSTATUS BlFwEnumerateDevice (_In_ PBL_DEVICE_DESCRIPTOR Device)
 
NTSTATUS EfiAllocatePages (_In_ ULONG Type, _In_ ULONG Pages, _Inout_ EFI_PHYSICAL_ADDRESS *Memory)
 
NTSTATUS EfiStall (_In_ ULONG StallTime)
 
NTSTATUS EfiConInExReset (VOID)
 
NTSTATUS EfiConInReset (VOID)
 
NTSTATUS EfiConOutOutputString (_In_ SIMPLE_TEXT_OUTPUT_INTERFACE *TextInterface, _In_ PWCHAR String)
 
NTSTATUS EfiConOutQueryMode (_In_ SIMPLE_TEXT_OUTPUT_INTERFACE *TextInterface, _In_ ULONG Mode, _In_ UINTN *Columns, _In_ UINTN *Rows)
 
NTSTATUS EfiConOutSetMode (_In_ SIMPLE_TEXT_OUTPUT_INTERFACE *TextInterface, _In_ ULONG Mode)
 
VOID EfiConOutReadCurrentMode (_In_ SIMPLE_TEXT_OUTPUT_INTERFACE *TextInterface, _Out_ EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode)
 
NTSTATUS EfiConOutSetAttribute (_In_ SIMPLE_TEXT_OUTPUT_INTERFACE *TextInterface, _In_ ULONG Attribute)
 
NTSTATUS EfiConOutSetCursorPosition (_In_ SIMPLE_TEXT_OUTPUT_INTERFACE *TextInterface, _In_ ULONG Column, _In_ ULONG Row)
 
NTSTATUS EfiConOutEnableCursor (_In_ SIMPLE_TEXT_OUTPUT_INTERFACE *TextInterface, _In_ BOOLEAN Visible)
 
NTSTATUS EfiLocateHandleBuffer (_In_ EFI_LOCATE_SEARCH_TYPE SearchType, _In_ EFI_GUID *Protocol, _Inout_ PULONG HandleCount, _Inout_ EFI_HANDLE **Buffer)
 
NTSTATUS EfiOpenProtocol (_In_ EFI_HANDLE Handle, _In_ EFI_GUID *Protocol, _Out_ PVOID *Interface)
 
NTSTATUS EfiCloseProtocol (_In_ EFI_HANDLE Handle, _In_ EFI_GUID *Protocol)
 
NTSTATUS EfiGopGetCurrentMode (_In_ EFI_GRAPHICS_OUTPUT_PROTOCOL *GopInterface, _Out_ UINTN *Mode, _Out_ EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Information)
 
NTSTATUS EfiGopSetMode (_In_ EFI_GRAPHICS_OUTPUT_PROTOCOL *GopInterface, _In_ ULONG Mode)
 
VOID EfiGopGetFrameBuffer (_In_ EFI_GRAPHICS_OUTPUT_PROTOCOL *GopInterface, _Out_ PHYSICAL_ADDRESS *FrameBuffer, _Out_ UINTN *FrameBufferSize)
 
VOID EfiResetSystem (_In_ EFI_RESET_TYPE ResetType)
 
EFI_DEVICE_PATHEfiGetLeafNode (_In_ EFI_DEVICE_PATH *DevicePath)
 
EFI_DEVICE_PATHEfiIsDevicePathParent (_In_ EFI_DEVICE_PATH *DevicePath1, _In_ EFI_DEVICE_PATH *DevicePath2)
 
NTSTATUS EfipGetRsdt (_Out_ PPHYSICAL_ADDRESS FoundRsdt)
 
NTSTATUS EfiFreePages (_In_ ULONG Pages, _In_ EFI_PHYSICAL_ADDRESS PhysicalAddress)
 
NTSTATUS BlpTimeCalibratePerformanceCounter (VOID)
 
ULONGLONG BlTimeQueryPerformanceCounter (_Out_opt_ PLARGE_INTEGER Frequency)
 
ULONGLONG BlArchGetPerformanceCounter (VOID)
 
NTSTATUS BlpDisplayRegisterLocale (_In_ PWCHAR Locale)
 
VOID BfiFreeDeferredFontFile (_In_ PBL_DEFERRED_FONT_FILE DeferredFontFile)
 
NTSTATUS BfLoadFontFile (_In_ PBL_DEVICE_DESCRIPTOR Device, _In_ PWCHAR FontPath)
 
NTSTATUS BfLoadDeferredFontFiles (VOID)
 
NTSTATUS BfClearScreen (_In_ PBL_GRAPHICS_CONSOLE Console)
 
NTSTATUS BfClearToEndOfLine (_In_ PBL_GRAPHICS_CONSOLE Console)
 
NTSTATUS FatInitialize (VOID)
 
NTSTATUS FatMount (_In_ ULONG DeviceId, _In_ ULONG Unknown, _Out_ PBL_FILE_ENTRY *FileEntry)
 
NTSTATUS EtfsInitialize (VOID)
 
NTSTATUS EtfsMount (_In_ ULONG DeviceId, _In_ ULONG Unknown, _Out_ PBL_FILE_ENTRY *FileEntry)
 
BOOLEAN BlBdDebuggerEnabled (VOID)
 
NTSTATUS BlBdPullRemoteFile (_In_ PWCHAR FilePath, _Out_ PVOID BaseAddress, _Out_ PULONGLONG FileSize)
 
VOID BlStatusPrint (_In_ PCWCH Format,...)
 
VOID BlStatusError (_In_ ULONG ErrorCode, _In_ ULONG Parameter1, _In_ ULONG_PTR Parameter2, _In_ ULONG_PTR Parameter3, _In_ ULONG_PTR Parameter4)
 
VOID BlArchCpuId (_In_ ULONG Function, _In_ ULONG SubFunction, _Out_ PCPU_INFO Result)
 
CPU_VENDORS BlArchGetCpuVendor (VOID)
 
BOOLEAN BlArchIsCpuIdFunctionSupported (_In_ ULONG Function)
 
VOID BlUtlUpdateProgress (_In_ ULONG Percentage, _Out_opt_ PBOOLEAN Completed)
 
NTSTATUS BlUtlGetAcpiTable (_Out_ PVOID *TableAddress, _In_ ULONG Signature)
 
NTSTATUS BlUtlInitialize (VOID)
 
NTSTATUS BlUtlRegisterProgressRoutine (VOID)
 
ULONG BlUtlCheckSum (_In_ ULONG PartialSum, _In_ PUCHAR Buffer, _In_ ULONG Length, _In_ ULONG Flags)
 
NTSTATUS BlGetApplicationBaseAndSize (_Out_ PVOID *ImageBase, _Out_ PULONG ImageSize)
 
VOID BlDestroyBootEntry (_In_ PBL_LOADED_APPLICATION_ENTRY AppEntry)
 
NTSTATUS BlPdQueryData (_In_ const GUID *DataGuid, _In_ PVOID Unknown, _Inout_ PBL_PD_DATA_BLOB DataBlob)
 
EFI_STATUS EfiGetEfiStatusCode (_In_ NTSTATUS Status)
 
NTSTATUS EfiGetNtStatusCode (_In_ EFI_STATUS EfiStatus)
 
VOID BlFwReboot (VOID)
 
NTSTATUS MmFwFreePages (_In_ ULONG BasePage, _In_ ULONG PageCount)
 
PGUID BlGetApplicationIdentifier (VOID)
 
NTSTATUS BlpSecureBootEFIIsEnabled (VOID)
 
NTSTATUS BlSecureBootIsEnabled (_Out_ PBOOLEAN SecureBootEnabled)
 
NTSTATUS BlSecureBootCheckForFactoryReset (VOID)
 
PWCHAR BlResourceFindMessage (_In_ ULONG MsgId)
 
PWCHAR BlResourceFindHtml (VOID)
 
NTSTATUS BlpResourceInitialize (VOID)
 
NTSTATUS BlTblMap (_In_ PVOID *Table, _In_ ULONG Count, _In_ PBL_TBL_MAP_ROUTINE MapCallback)
 
PVOID BlTblFindEntry (_In_ PVOID *Table, _In_ ULONG Count, _Out_ PULONG EntryIndex, _In_ PBL_TBL_LOOKUP_ROUTINE Callback, _In_ PVOID Argument1, _In_ PVOID Argument2, _In_ PVOID Argument3, _In_ PVOID Argument4)
 
NTSTATUS BlTblSetEntry (_Inout_ PVOID **Table, _Inout_ PULONG Count, _In_ PVOID Entry, _Out_ PULONG EntryIndex, _In_ PBL_TBL_SET_ROUTINE Callback)
 
NTSTATUS TblDoNotPurgeEntry (_In_ PVOID Entry)
 
NTSTATUS BlHtStore (_In_ ULONG TableId, _In_ PBL_HASH_ENTRY Entry, _In_ PVOID Data, _In_ ULONG DataSize)
 
NTSTATUS BlHtDelete (_In_ ULONG TableId, _In_ PBL_HASH_ENTRY Entry)
 
NTSTATUS BlHtLookup (_In_ ULONG TableId, _In_ PBL_HASH_ENTRY Entry, _Out_ PBL_HASH_VALUE *Value)
 
NTSTATUS BlHtCreate (_In_ ULONG Size, _In_ PBL_HASH_TABLE_HASH_FUNCTION HashFunction, _In_ PBL_HASH_TABLE_COMPARE_FUNCTION CompareFunction, _Out_ PULONG Id)
 
PBL_BCD_OPTION MiscGetBootOption (_In_ PBL_BCD_OPTION List, _In_ ULONG Type)
 
ULONG BlGetBootOptionListSize (_In_ PBL_BCD_OPTION BcdOption)
 
ULONG BlGetBootOptionSize (_In_ PBL_BCD_OPTION BcdOption)
 
NTSTATUS BlGetBootOptionString (_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PWCHAR *Value)
 
NTSTATUS BlGetBootOptionInteger (_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PULONGLONG Value)
 
NTSTATUS BlGetBootOptionBoolean (_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PBOOLEAN Value)
 
NTSTATUS BlpGetBootOptionIntegerList (_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PULONGLONG *Value, _Out_ PULONGLONG Count, _In_ BOOLEAN NoCopy)
 
NTSTATUS BlGetBootOptionDevice (_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PBL_DEVICE_DESCRIPTOR *Value, _In_opt_ PBL_BCD_OPTION *ExtraOptions)
 
NTSTATUS BlGetBootOptionGuid (_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PGUID Value)
 
NTSTATUS BlGetBootOptionGuidList (_In_ PBL_BCD_OPTION List, _In_ ULONG Type, _Out_ PGUID *Value, _In_ PULONG Count)
 
NTSTATUS BlCopyBootOptions (_In_ PBL_BCD_OPTION OptionList, _Out_ PBL_BCD_OPTION *CopiedOptions)
 
NTSTATUS BlAppendBootOptionBoolean (_In_ PBL_LOADED_APPLICATION_ENTRY AppEntry, _In_ ULONG OptionId, _In_ BOOLEAN Value)
 
NTSTATUS BlAppendBootOptionInteger (_In_ PBL_LOADED_APPLICATION_ENTRY AppEntry, _In_ ULONG OptionId, _In_ ULONGLONG Value)
 
NTSTATUS BlAppendBootOptionString (_In_ PBL_LOADED_APPLICATION_ENTRY AppEntry, _In_ ULONG OptionId, _In_ PWCHAR OptionString)
 
NTSTATUS BlAppendBootOptions (_In_ PBL_LOADED_APPLICATION_ENTRY AppEntry, _In_ PBL_BCD_OPTION Options)
 
VOID BlRemoveBootOption (_In_ PBL_BCD_OPTION List, _In_ ULONG Type)
 
NTSTATUS BlReplaceBootOptions (_In_ PBL_LOADED_APPLICATION_ENTRY AppEntry, _In_ PBL_BCD_OPTION NewOptions)
 
VOID BiCloseKey (_In_ HANDLE KeyHandle)
 
NTSTATUS BiOpenKey (_In_ HANDLE ParentHandle, _In_ PWCHAR KeyName, _Out_ PHANDLE Handle)
 
NTSTATUS BiLoadHive (_In_ PBL_FILE_PATH_DESCRIPTOR FilePath, _Out_ PHANDLE HiveHandle)
 
NTSTATUS BiGetRegistryValue (_In_ HANDLE KeyHandle, _In_ PWCHAR ValueName, _In_ ULONG Type, _Out_ PVOID *Buffer, _Out_ PULONG ValueLength)
 
NTSTATUS BiEnumerateSubKeys (_In_ HANDLE KeyHandle, _Out_ PWCHAR **SubKeyList, _Out_ PULONG SubKeyCount)
 
NTSTATUS BiDeleteKey (_In_ HANDLE KeyHandle)
 
VOID BiDereferenceHive (_In_ HANDLE KeyHandle)
 
VOID BlpArchSwitchContext (_In_ BL_ARCH_MODE NewMode)
 
VOID BlpArchEnableTranslation (VOID)
 
VOID Archx86TransferTo32BitApplicationAsm (VOID)
 
VOID MmMdDbgDumpList (_In_ PBL_MEMORY_DESCRIPTOR_LIST DescriptorList, _In_opt_ ULONG MaxCount)
 
VOID MmMdInitializeList (_In_ PBL_MEMORY_DESCRIPTOR_LIST DescriptorList, _In_ ULONG Type, _In_ PLIST_ENTRY ListHead)
 
PBL_MEMORY_DESCRIPTOR MmMdFindDescriptor (_In_ ULONG WhichList, _In_ ULONG Flags, _In_ ULONGLONG Page)
 
PBL_MEMORY_DESCRIPTOR MmMdFindDescriptorFromMdl (_In_ PBL_MEMORY_DESCRIPTOR_LIST MdList, _In_ ULONG Flags, _In_ ULONGLONG Page)
 
NTSTATUS MmMdCopyList (_In_ PBL_MEMORY_DESCRIPTOR_LIST DestinationList, _In_ PBL_MEMORY_DESCRIPTOR_LIST SourceList, _In_opt_ PBL_MEMORY_DESCRIPTOR ListDescriptor, _Out_ PULONG ActualCount, _In_ ULONG Count, _In_ ULONG Flags)
 
ULONG MmMdCountList (_In_ PBL_MEMORY_DESCRIPTOR_LIST MdList)
 
VOID MmMdFreeList (_In_ PBL_MEMORY_DESCRIPTOR_LIST MdList)
 
PBL_MEMORY_DESCRIPTOR MmMdInitByteGranularDescriptor (_In_ ULONG Flags, _In_ BL_MEMORY_TYPE Type, _In_ ULONGLONG BasePage, _In_ ULONGLONG VirtualPage, _In_ ULONGLONG PageCount)
 
VOID MmMdFreeGlobalDescriptors (VOID)
 
NTSTATUS MmMdAddDescriptorToList (_In_ PBL_MEMORY_DESCRIPTOR_LIST MdList, _In_ PBL_MEMORY_DESCRIPTOR MemoryDescriptor, _In_ ULONG Flags)
 
NTSTATUS MmMdTruncateDescriptors (_In_ PBL_MEMORY_DESCRIPTOR_LIST MdList, _In_ PBL_MEMORY_DESCRIPTOR_LIST NewList, _In_ ULONGLONG BasePage)
 
VOID MmMdRemoveDescriptorFromList (_In_ PBL_MEMORY_DESCRIPTOR_LIST MdList, _In_ PBL_MEMORY_DESCRIPTOR Entry)
 
BOOLEAN MmMdFindSatisfyingRegion (_In_ PBL_MEMORY_DESCRIPTOR Descriptor, _Out_ PBL_MEMORY_DESCRIPTOR NewDescriptor, _In_ ULONGLONG Pages, _In_ PBL_ADDRESS_RANGE BaseRange, _In_ PBL_ADDRESS_RANGE VirtualRange, _In_ BOOLEAN TopDown, _In_ BL_MEMORY_TYPE MemoryType, _In_ ULONG Flags, _In_ ULONG Alignment)
 
NTSTATUS MmMdRemoveRegionFromMdlEx (__in PBL_MEMORY_DESCRIPTOR_LIST MdList, __in ULONG Flags, __in ULONGLONG BasePage, __in ULONGLONG PageCount, __in PBL_MEMORY_DESCRIPTOR_LIST NewMdList)
 
NTSTATUS MmMdFreeDescriptor (_In_ PBL_MEMORY_DESCRIPTOR MemoryDescriptor)
 
NTSTATUS MmPaTruncateMemory (_In_ ULONGLONG BasePage)
 
NTSTATUS BlMmAllocatePhysicalPages (_Inout_ PPHYSICAL_ADDRESS Address, _In_ BL_MEMORY_TYPE MemoryType, _In_ ULONGLONG PageCount, _In_ ULONG Attributes, _In_ ULONG Alignment)
 
NTSTATUS MmPapAllocatePhysicalPagesInRange (_Inout_ PPHYSICAL_ADDRESS BaseAddress, _In_ BL_MEMORY_TYPE MemoryType, _In_ ULONGLONG Pages, _In_ ULONG Attributes, _In_ ULONG Alignment, _In_ PBL_MEMORY_DESCRIPTOR_LIST NewList, _In_opt_ PBL_ADDRESS_RANGE Range, _In_ ULONG RangeType)
 
NTSTATUS MmPaReleaseSelfMapPages (_In_ PHYSICAL_ADDRESS Address)
 
NTSTATUS MmPaReserveSelfMapPages (_Inout_ PPHYSICAL_ADDRESS PhysicalAddress, _In_ ULONG Alignment, _In_ ULONG PageCount)
 
NTSTATUS BlMmFreePhysicalPages (_In_ PHYSICAL_ADDRESS Address)
 
NTSTATUS MmPapFreePages (_In_ PVOID Address, _In_ ULONG WhichList)
 
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)
 
NTSTATUS MmFwGetMemoryMap (_Out_ PBL_MEMORY_DESCRIPTOR_LIST MemoryMap, _In_ ULONG Flags)
 
NTSTATUS BlpMmInitializeConstraints (VOID)
 
NTSTATUS BlMmRemoveBadMemory (VOID)
 
NTSTATUS BlMmGetMemoryMap (_In_ PLIST_ENTRY MemoryMap, _In_ PBL_BUFFER_DESCRIPTOR MemoryParameters, _In_ ULONG WhichTypes, _In_ ULONG Flags)
 
NTSTATUS MmSelectMappingAddress (_Out_ PVOID *MappingAddress, _In_ PVOID PreferredAddress, _In_ ULONGLONG Size, _In_ ULONG AllocationAttributes, _In_ ULONG Flags, _In_ PHYSICAL_ADDRESS PhysicalAddress)
 
NTSTATUS MmMapPhysicalAddress (_Inout_ PPHYSICAL_ADDRESS PhysicalAddress, _Out_ PVOID *VirtualAddress, _Inout_ PULONGLONG Size, _In_ ULONG CacheAttributes)
 
NTSTATUS MmUnmapVirtualAddress (_Inout_ PVOID *VirtualAddress, _Inout_ PULONGLONG Size)
 
NTSTATUS BlMmMapPhysicalAddressEx (_In_ PVOID *VirtualAddress, _In_ ULONG Attributes, _In_ ULONGLONG Size, _In_ PHYSICAL_ADDRESS PhysicalAddress)
 
NTSTATUS BlMmUnmapVirtualAddressEx (_In_ PVOID VirtualAddress, _In_ ULONGLONG Size)
 
BOOLEAN BlMmTranslateVirtualAddress (_In_ PVOID VirtualAddress, _Out_ PPHYSICAL_ADDRESS PhysicalAddress)
 
BOOLEAN MmArchTranslateVirtualAddress (_In_ PVOID VirtualAddress, _Out_opt_ PPHYSICAL_ADDRESS PhysicalAddress, _Out_opt_ PULONG CachingFlags)
 
NTSTATUS BlpMmCreateBlockAllocator (VOID)
 
PVOID BlMmAllocateHeap (_In_ SIZE_T Size)
 
NTSTATUS BlMmFreeHeap (_In_ PVOID Buffer)
 
VOID BlDisplayGetTextCellResolution (_Out_ PULONG TextWidth, _Out_ PULONG TextHeight)
 
NTSTATUS BlDisplaySetScreenResolution (VOID)
 
NTSTATUS BlDisplayGetScreenResolution (_Out_ PULONG HRes, _Out_ PULONG Vres)
 
VOID BlDisplayInvalidateOemBitmap (VOID)
 
PBITMAP BlDisplayGetOemBitmap (_Out_ PCOORD Offset, _Out_opt_ PULONG Flags)
 
BOOLEAN BlDisplayValidOemBitmap (VOID)
 
NTSTATUS BlDisplayClearScreen (VOID)
 
NTSTATUS BlDisplaySetCursorType (_In_ ULONG Type)
 
NTSTATUS BlpIoRegisterDestroyRoutine (_In_ PBL_IO_DESTROY_ROUTINE DestroyRoutine)
 
NTSTATUS BlDeviceClose (_In_ ULONG DeviceId)
 
BOOLEAN BlDeviceIsVirtualPartitionDevice (_In_ PBL_DEVICE_DESCRIPTOR InputDevice, _Outptr_ PBL_DEVICE_DESCRIPTOR *VirtualDevice)
 
NTSTATUS BlpDeviceOpen (_In_ PBL_DEVICE_DESCRIPTOR Device, _In_ ULONG Flags, _In_ ULONG Unknown, _Out_ PULONG DeviceId)
 
NTSTATUS BlDeviceGetInformation (_In_ ULONG DeviceId, _Out_ PBL_DEVICE_INFORMATION DeviceInformation)
 
NTSTATUS BlDeviceSetInformation (_In_ ULONG DeviceId, _In_ PBL_DEVICE_INFORMATION DeviceInformation)
 
NTSTATUS BlDeviceReadAtOffset (_In_ ULONG DeviceId, _In_ ULONG Size, _In_ ULONGLONG Offset, _In_ PVOID Buffer, _Out_ PULONG BytesRead)
 
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)
 
PIMAGE_SECTION_HEADER BlImgFindSection (_In_ PVOID ImageBase, _In_ ULONG ImageSize)
 
NTSTATUS BlImgLoadBootApplication (_In_ PBL_LOADED_APPLICATION_ENTRY BootEntry, _Out_ PULONG AppHandle)
 
NTSTATUS BlImgStartBootApplication (_In_ ULONG AppHandle, _Inout_ PBL_RETURN_ARGUMENTS ReturnArguments)
 
NTSTATUS BlImgUnloadBootApplication (_In_ ULONG AppHandle)
 
VOID BlImgQueryCodeIntegrityBootOptions (_In_ PBL_LOADED_APPLICATION_ENTRY ApplicationEntry, _Out_ PBOOLEAN IntegrityChecksDisabled, _Out_ PBOOLEAN TestSigning)
 
NTSTATUS BlFileClose (_In_ ULONG FileId)
 
NTSTATUS BlFileReadAtOffsetEx (_In_ ULONG FileId, _In_ ULONG Size, _In_ ULONGLONG ByteOffset, _In_ PVOID Buffer, _Out_ PULONG BytesReturned, _In_ ULONG Flags)
 
NTSTATUS BlFileGetInformation (_In_ ULONG FileId, _In_ PBL_FILE_INFORMATION FileInfo)
 
NTSTATUS BlFileOpen (_In_ ULONG DeviceId, _In_ PWCHAR FileName, _In_ ULONG Flags, _Out_ PULONG FileId)
 
NTSTATUS BlockIoEfiCompareDevice (_In_ PBL_DEVICE_DESCRIPTOR Device, _In_ EFI_HANDLE Handle)
 
VOID ConsoleInputLocalDestruct (_In_ struct _BL_INPUT_CONSOLE *Console)
 
NTSTATUS ConsoleInputBaseReinitialize (_In_ struct _BL_INPUT_CONSOLE *Console)
 
NTSTATUS ConsoleCreateLocalInputCnsole (VOID)
 
VOID ConsoleGraphicalDestruct (_In_ struct _BL_GRAPHICS_CONSOLE *Console)
 
NTSTATUS ConsoleGraphicalClearText (_In_ PBL_GRAPHICS_CONSOLE Console, _In_ BOOLEAN LineOnly)
 
NTSTATUS ConsoleGraphicalClearPixels (_In_ PBL_GRAPHICS_CONSOLE Console, _In_ ULONG Color)
 
NTSTATUS ConsoleGraphicalReinitialize (_In_ struct _BL_GRAPHICS_CONSOLE *Console)
 
NTSTATUS ConsoleGraphicalSetTextState (_In_ PBL_GRAPHICS_CONSOLE Console, _In_ ULONG Mask, _In_ PBL_DISPLAY_STATE TextState)
 
BOOLEAN ConsoleGraphicalIsEnabled (_In_ struct _BL_GRAPHICS_CONSOLE *Console)
 
NTSTATUS ConsoleGraphicalGetGraphicalResolution (_In_ struct _BL_GRAPHICS_CONSOLE *Console, _In_ PBL_DISPLAY_MODE DisplayMode)
 
NTSTATUS ConsoleGraphicalGetOriginalResolution (_In_ struct _BL_GRAPHICS_CONSOLE *Console, _In_ PBL_DISPLAY_MODE DisplayMode)
 
NTSTATUS ConsoleGraphicalEnable (_In_ struct _BL_GRAPHICS_CONSOLE *Console, _In_ BOOLEAN Enable)
 
VOID ConsoleTextLocalDestruct (_In_ struct _BL_TEXT_CONSOLE *Console)
 
NTSTATUS ConsoleTextLocalReinitialize (_In_ struct _BL_TEXT_CONSOLE *Console)
 
NTSTATUS ConsoleTextBaseGetTextState (_In_ struct _BL_TEXT_CONSOLE *Console, _Out_ PBL_DISPLAY_STATE TextState)
 
NTSTATUS ConsoleTextLocalSetTextState (_In_ struct _BL_TEXT_CONSOLE *Console, _In_ ULONG Flags, _In_ PBL_DISPLAY_STATE TextState)
 
NTSTATUS ConsoleTextBaseGetTextResolution (_In_ struct _BL_TEXT_CONSOLE *Console, _Out_ PULONG TextResolution)
 
NTSTATUS ConsoleTextLocalSetTextResolution (_In_ struct _BL_TEXT_CONSOLE *Console, _In_ ULONG NewTextResolution, _Out_ PULONG OldTextResolution)
 
NTSTATUS ConsoleTextLocalClearText (_In_ struct _BL_TEXT_CONSOLE *Console, _In_ BOOLEAN LineOnly)
 
NTSTATUS ConsoleTextLocalWriteText (_In_ struct _BL_TEXT_CONSOLE *Console, _In_ PCHAR Text, _In_ ULONG Attribute)
 
NTSTATUS ConsoleTextLocalConstruct (_In_ PBL_TEXT_CONSOLE TextConsole, _In_ BOOLEAN Activate)
 
BOOLEAN ConsolepFindResolution (_In_ PBL_DISPLAY_MODE Mode, _In_ PBL_DISPLAY_MODE List, _In_ ULONG MaxIndex)
 
NTSTATUS ConsoleFirmwareTextClear (_In_ PBL_TEXT_CONSOLE Console, _In_ BOOLEAN LineOnly)
 
VOID ConsoleFirmwareTextClose (_In_ PBL_TEXT_CONSOLE TextConsole)
 
NTSTATUS ConsoleFirmwareTextOpen (_In_ PBL_TEXT_CONSOLE TextConsole)
 
NTSTATUS ConsoleFirmwareTextSetState (_In_ PBL_TEXT_CONSOLE TextConsole, _In_ UCHAR Mask, _In_ PBL_DISPLAY_STATE State)
 
NTSTATUS ConsoleGraphicalConstruct (_In_ PBL_GRAPHICS_CONSOLE GraphicsConsole)
 
NTSTATUS ConsoleCreateRemoteConsole (_In_ PBL_TEXT_CONSOLE *TextConsole)
 
NTSTATUS ConsoleEfiGraphicalOpenProtocol (_In_ PBL_GRAPHICS_CONSOLE GraphicsConsole, _In_ BL_GRAPHICS_CONSOLE_TYPE Type)
 
VOID ConsoleFirmwareGraphicalClose (_In_ PBL_GRAPHICS_CONSOLE GraphicsConsole)
 
VOID ConsoleFirmwareGraphicalDisable (_In_ PBL_GRAPHICS_CONSOLE GraphicsConsole)
 
NTSTATUS ConsoleFirmwareGraphicalClear (_In_ PBL_GRAPHICS_CONSOLE Console, _In_ ULONG Color)
 
NTSTATUS ConsoleFirmwareGraphicalEnable (_In_ PBL_GRAPHICS_CONSOLE GraphicsConsole)
 
NTSTATUS ConsoleEfiUgaOpen (_In_ PBL_GRAPHICS_CONSOLE GraphicsConsole)
 
VOID ConsoleEfiUgaClose (_In_ PBL_GRAPHICS_CONSOLE GraphicsConsole)
 
VOID ConsoleEfiGopClose (_In_ PBL_GRAPHICS_CONSOLE GraphicsConsole)
 
NTSTATUS ConsoleEfiGopOpen (_In_ PBL_GRAPHICS_CONSOLE GraphicsConsole)
 
NTSTATUS ConsoleEfiGopEnable (_In_ PBL_GRAPHICS_CONSOLE GraphicsConsole)
 
NTSTATUS ConsoleEfiUgaSetResolution (_In_ PBL_GRAPHICS_CONSOLE GraphicsConsole, _In_ PBL_DISPLAY_MODE DisplayMode, _In_ ULONG DisplayModeCount)
 
NTSTATUS ConsoleCreateLocalInputConsole (VOID)
 
NTSTATUS ConsoleInputLocalEraseBuffer (_In_ PBL_INPUT_CONSOLE Console, _In_opt_ PULONG ValueToFill)
 
VOID ConsolepClearBuffer (_In_ PUCHAR FrameBuffer, _In_ ULONG Width, _In_ PUCHAR FillColor, _In_ ULONG Height, _In_ ULONG ScanlineWidth, _In_ ULONG PixelDepth)
 
NTSTATUS ConsolepConvertColorToPixel (_In_ BL_COLOR Color, _Out_ PUCHAR Pixel)
 

Variables

ULONG MmDescriptorCallTreeCount
 
ULONG BlpApplicationFlags
 
BL_LIBRARY_PARAMETERS BlpLibraryParameters
 
BL_TRANSLATION_TYPE MmTranslationType
 
PBL_ARCH_CONTEXT CurrentExecutionContext
 
PBL_DEVICE_DESCRIPTOR BlpBootDevice
 
BL_LOADED_APPLICATION_ENTRY BlpApplicationEntry
 
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOLEfiConOut
 
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOLEfiConInEx
 
EFI_GUID EfiGraphicsOutputProtocol
 
EFI_GUID EfiUgaDrawProtocol
 
EFI_GUID EfiLoadedImageProtocol
 
EFI_GUID EfiDevicePathProtocol
 
EFI_GUID EfiBlockIoProtocol
 
EFI_GUID EfiSimpleTextInputExProtocol
 
EFI_GUID EfiRootAcpiTableGuid
 
EFI_GUID EfiRootAcpiTable10Guid
 
EFI_GUID EfiGlobalVariable
 
ULONG ConsoleGraphicalResolutionListFlags
 
BL_DISPLAY_MODE ConsoleGraphicalResolutionList []
 
BL_DISPLAY_MODE ConsoleTextResolutionList []
 
ULONG ConsoleGraphicalResolutionListSize
 
PVOID DspRemoteInputConsole
 
PVOID DspLocalInputConsole
 
WCHAR BlScratchBuffer [8192]
 
BL_MEMORY_DESCRIPTOR_LIST MmMdlMappedAllocated
 
BL_MEMORY_DESCRIPTOR_LIST MmMdlMappedUnallocated
 
BL_MEMORY_DESCRIPTOR_LIST MmMdlFwAllocationTracker
 
BL_MEMORY_DESCRIPTOR_LIST MmMdlUnmappedAllocated
 
BL_MEMORY_DESCRIPTOR_LIST MmMdlUnmappedUnallocated
 
BL_MEMORY_DESCRIPTOR_LIST MmMdlReservedAllocated
 
BL_MEMORY_DESCRIPTOR_LIST MmMdlBadMemory
 
BL_MEMORY_DESCRIPTOR_LIST MmMdlTruncatedMemory
 
BL_MEMORY_DESCRIPTOR_LIST MmMdlPersistentMemory
 
BL_MEMORY_DESCRIPTOR_LIST MmMdlCompleteBadMemory
 
BL_MEMORY_DESCRIPTOR_LIST MmMdlFreeVirtual
 
BL_MEMORY_DESCRIPTOR_LIST MmMdlMappingTrackers
 
ULONGLONG BlpTimePerformanceFrequency
 
LIST_ENTRY RegisteredFileSystems
 
BL_ADDRESS_RANGE MmArchKsegAddressRange
 
ULONG_PTR MmArchTopOfApplicationAddressSpace
 
PBL_MM_RELOCATE_SELF_MAP BlMmRelocateSelfMap
 
PBL_MM_FLUSH_TLB BlMmFlushTlb
 
PBL_MM_MOVE_VIRTUAL_ADDRESS_RANGE BlMmMoveVirtualAddressRange
 
PBL_MM_ZERO_VIRTUAL_ADDRESS_RANGE BlMmZeroVirtualAddressRange
 
PBL_STATUS_ERROR_HANDLER BlpStatusErrorHandler
 

Macro Definition Documentation

◆ BL_APP_ENTRY_SIGNATURE

#define BL_APP_ENTRY_SIGNATURE   "BTAPENT"

Definition at line 53 of file bl.h.

◆ BL_APPLICATION_ENTRY_BCD_OPTIONS_EXTERNAL

#define BL_APPLICATION_ENTRY_BCD_OPTIONS_EXTERNAL   0x80

Definition at line 74 of file bl.h.

◆ BL_APPLICATION_ENTRY_BCD_OPTIONS_INTERNAL

#define BL_APPLICATION_ENTRY_BCD_OPTIONS_INTERNAL   0x02

Definition at line 69 of file bl.h.

◆ BL_APPLICATION_ENTRY_BOOTMGR

#define BL_APPLICATION_ENTRY_BOOTMGR   0x1000

Definition at line 78 of file bl.h.

◆ BL_APPLICATION_ENTRY_BOOTSECTOR

#define BL_APPLICATION_ENTRY_BOOTSECTOR   0x400

Definition at line 77 of file bl.h.

◆ BL_APPLICATION_ENTRY_DISPLAY_ORDER

#define BL_APPLICATION_ENTRY_DISPLAY_ORDER   0x800000

Definition at line 79 of file bl.h.

◆ BL_APPLICATION_ENTRY_FIXED_SEQUENCE

#define BL_APPLICATION_ENTRY_FIXED_SEQUENCE   0x20000000

Definition at line 80 of file bl.h.

◆ BL_APPLICATION_ENTRY_FLAG_NO_GUID

#define BL_APPLICATION_ENTRY_FLAG_NO_GUID   0x01

Definition at line 68 of file bl.h.

◆ BL_APPLICATION_ENTRY_NTLDR

#define BL_APPLICATION_ENTRY_NTLDR   0x40

Definition at line 73 of file bl.h.

◆ BL_APPLICATION_ENTRY_REBOOT_ON_ERROR

#define BL_APPLICATION_ENTRY_REBOOT_ON_ERROR   0x20

Definition at line 72 of file bl.h.

◆ BL_APPLICATION_ENTRY_RECOVERY

#define BL_APPLICATION_ENTRY_RECOVERY   0x40000000

Definition at line 81 of file bl.h.

◆ BL_APPLICATION_ENTRY_SETUPLDR

#define BL_APPLICATION_ENTRY_SETUPLDR   0x200

Definition at line 76 of file bl.h.

◆ BL_APPLICATION_ENTRY_STARTUP

#define BL_APPLICATION_ENTRY_STARTUP   0x08

Definition at line 71 of file bl.h.

◆ BL_APPLICATION_ENTRY_WINLOAD

#define BL_APPLICATION_ENTRY_WINLOAD   0x04

Definition at line 70 of file bl.h.

◆ BL_APPLICATION_ENTRY_WINRESUME

#define BL_APPLICATION_ENTRY_WINRESUME   0x100

Definition at line 75 of file bl.h.

◆ BL_APPLICATION_FLAG_CONVERTED_FROM_EFI

#define BL_APPLICATION_FLAG_CONVERTED_FROM_EFI   0x01

Definition at line 51 of file bl.h.

◆ BL_BLOCK_DEVICE_PRESENT_FLAG

#define BL_BLOCK_DEVICE_PRESENT_FLAG   0x02

Definition at line 142 of file bl.h.

◆ BL_BLOCK_DEVICE_REMOVABLE_FLAG

#define BL_BLOCK_DEVICE_REMOVABLE_FLAG   0x01

Definition at line 141 of file bl.h.

◆ BL_BLOCK_DEVICE_VIRTUAL_FLAG

#define BL_BLOCK_DEVICE_VIRTUAL_FLAG   0x04

Definition at line 143 of file bl.h.

◆ BL_CONTEXT_INTERRUPTS_ON

#define BL_CONTEXT_INTERRUPTS_ON   2

Definition at line 84 of file bl.h.

◆ BL_CONTEXT_PAGING_ON

#define BL_CONTEXT_PAGING_ON   1

Definition at line 83 of file bl.h.

◆ BL_DEVICE_ENTRY_OPENED

#define BL_DEVICE_ENTRY_OPENED   0x01

Definition at line 155 of file bl.h.

◆ BL_DEVICE_ENTRY_READ_ACCESS

#define BL_DEVICE_ENTRY_READ_ACCESS   0x02

Definition at line 156 of file bl.h.

◆ BL_DEVICE_ENTRY_WRITE_ACCESS

#define BL_DEVICE_ENTRY_WRITE_ACCESS   0x04

Definition at line 157 of file bl.h.

◆ BL_DEVICE_READ_ACCESS

#define BL_DEVICE_READ_ACCESS   0x01

Definition at line 152 of file bl.h.

◆ BL_DEVICE_WRITE_ACCESS

#define BL_DEVICE_WRITE_ACCESS   0x02

Definition at line 153 of file bl.h.

◆ BL_DIRECTORY_ACCESS

#define BL_DIRECTORY_ACCESS   0x04

Definition at line 149 of file bl.h.

◆ BL_DISPLAY_GRAPHICS_FORCED_HIGH_RES_MODE_FLAG

#define BL_DISPLAY_GRAPHICS_FORCED_HIGH_RES_MODE_FLAG   0x02

Definition at line 135 of file bl.h.

◆ BL_DISPLAY_GRAPHICS_FORCED_VIDEO_MODE_FLAG

#define BL_DISPLAY_GRAPHICS_FORCED_VIDEO_MODE_FLAG   0x01

Definition at line 134 of file bl.h.

◆ BL_ETFS_FILE_ENTRY_DIRECTORY

#define BL_ETFS_FILE_ENTRY_DIRECTORY   0x01

Definition at line 165 of file bl.h.

◆ BL_FILE_ENTRY_DIRECTORY

#define BL_FILE_ENTRY_DIRECTORY   0x10000

Definition at line 163 of file bl.h.

◆ BL_FILE_ENTRY_OPENED

#define BL_FILE_ENTRY_OPENED   0x01

Definition at line 159 of file bl.h.

◆ BL_FILE_ENTRY_READ_ACCESS

#define BL_FILE_ENTRY_READ_ACCESS   0x02

Definition at line 160 of file bl.h.

◆ BL_FILE_ENTRY_UNKNOWN_ACCESS

#define BL_FILE_ENTRY_UNKNOWN_ACCESS   0x10

Definition at line 162 of file bl.h.

◆ BL_FILE_ENTRY_WRITE_ACCESS

#define BL_FILE_ENTRY_WRITE_ACCESS   0x04

Definition at line 161 of file bl.h.

◆ BL_FILE_READ_ACCESS

#define BL_FILE_READ_ACCESS   0x01

Definition at line 147 of file bl.h.

◆ BL_FILE_WRITE_ACCESS

#define BL_FILE_WRITE_ACCESS   0x02

Definition at line 148 of file bl.h.

◆ BL_FIRMWARE_DESCRIPTOR_VERSION

#define BL_FIRMWARE_DESCRIPTOR_VERSION   2

Definition at line 64 of file bl.h.

◆ BL_FS_REGISTER_AT_HEAD_FLAG

#define BL_FS_REGISTER_AT_HEAD_FLAG   1

Definition at line 139 of file bl.h.

◆ BL_HT_VALUE_IS_INLINE

#define BL_HT_VALUE_IS_INLINE   0x01

Definition at line 137 of file bl.h.

◆ BL_IMG_MEMORY_FILE

#define BL_IMG_MEMORY_FILE   0x02

Definition at line 168 of file bl.h.

◆ BL_IMG_REMOTE_FILE

#define BL_IMG_REMOTE_FILE   0x04

Definition at line 169 of file bl.h.

◆ BL_IMG_VALID_FILE

#define BL_IMG_VALID_FILE   0x01

Definition at line 167 of file bl.h.

◆ BL_LIBRARY_FLAG_INITIALIZATION_COMPLETED

#define BL_LIBRARY_FLAG_INITIALIZATION_COMPLETED   0x20

Definition at line 131 of file bl.h.

◆ BL_LIBRARY_FLAG_NO_DISPLAY

#define BL_LIBRARY_FLAG_NO_DISPLAY   0x01

Definition at line 127 of file bl.h.

◆ BL_LIBRARY_FLAG_NO_GRAPHICS_CONSOLE

#define BL_LIBRARY_FLAG_NO_GRAPHICS_CONSOLE   0x800

Definition at line 132 of file bl.h.

◆ BL_LIBRARY_FLAG_REINITIALIZE

#define BL_LIBRARY_FLAG_REINITIALIZE   0x02

Definition at line 128 of file bl.h.

◆ BL_LIBRARY_FLAG_REINITIALIZE_ALL

#define BL_LIBRARY_FLAG_REINITIALIZE_ALL   0x04

Definition at line 129 of file bl.h.

◆ BL_LIBRARY_FLAG_ZERO_HEAP_ALLOCATIONS_ON_FREE

#define BL_LIBRARY_FLAG_ZERO_HEAP_ALLOCATIONS_ON_FREE   0x10

Definition at line 130 of file bl.h.

◆ BL_LOAD_IMG_COMPUTE_HASH

#define BL_LOAD_IMG_COMPUTE_HASH   0x40000

Definition at line 175 of file bl.h.

◆ BL_LOAD_IMG_COMPUTE_SIGNATURE

#define BL_LOAD_IMG_COMPUTE_SIGNATURE   0x10

Definition at line 174 of file bl.h.

◆ BL_LOAD_IMG_EXISTING_BUFFER

#define BL_LOAD_IMG_EXISTING_BUFFER   0x04

Definition at line 172 of file bl.h.

◆ BL_LOAD_IMG_UNKNOWN_BUFFER_FLAG

#define BL_LOAD_IMG_UNKNOWN_BUFFER_FLAG   0x08

Definition at line 173 of file bl.h.

◆ BL_LOAD_IMG_VIRTUAL_BUFFER

#define BL_LOAD_IMG_VIRTUAL_BUFFER   0x01

Definition at line 171 of file bl.h.

◆ BL_LOAD_PE_IMG_CHECK_FORCED_INTEGRITY

#define BL_LOAD_PE_IMG_CHECK_FORCED_INTEGRITY   0x200

Definition at line 183 of file bl.h.

◆ BL_LOAD_PE_IMG_CHECK_MACHINE

#define BL_LOAD_PE_IMG_CHECK_MACHINE   0x02

Definition at line 178 of file bl.h.

◆ BL_LOAD_PE_IMG_CHECK_SUBSYSTEM

#define BL_LOAD_PE_IMG_CHECK_SUBSYSTEM   0x80

Definition at line 181 of file bl.h.

◆ BL_LOAD_PE_IMG_COMPUTE_HASH

#define BL_LOAD_PE_IMG_COMPUTE_HASH   0x10

Definition at line 180 of file bl.h.

◆ BL_LOAD_PE_IMG_EXISTING_BUFFER

#define BL_LOAD_PE_IMG_EXISTING_BUFFER   BL_LOAD_IMG_EXISTING_BUFFER

Definition at line 179 of file bl.h.

◆ BL_LOAD_PE_IMG_IGNORE_CHECKSUM_MISMATCH

#define BL_LOAD_PE_IMG_IGNORE_CHECKSUM_MISMATCH   0x10000

Definition at line 184 of file bl.h.

◆ BL_LOAD_PE_IMG_SKIP_RELOCATIONS

#define BL_LOAD_PE_IMG_SKIP_RELOCATIONS   0x100

Definition at line 182 of file bl.h.

◆ BL_LOAD_PE_IMG_VALIDATE_ORIGINAL_FILENAME

#define BL_LOAD_PE_IMG_VALIDATE_ORIGINAL_FILENAME   0x400000

Definition at line 185 of file bl.h.

◆ BL_LOAD_PE_IMG_VIRTUAL_BUFFER

#define BL_LOAD_PE_IMG_VIRTUAL_BUFFER   BL_LOAD_IMG_VIRTUAL_BUFFER

Definition at line 177 of file bl.h.

◆ BL_MEMORY_CLASS_SHIFT

#define BL_MEMORY_CLASS_SHIFT   28

Definition at line 145 of file bl.h.

◆ BL_MEMORY_DATA_VERSION

#define BL_MEMORY_DATA_VERSION   1

Definition at line 62 of file bl.h.

◆ BL_MM_ADD_DESCRIPTOR_ALLOCATE_FLAG

#define BL_MM_ADD_DESCRIPTOR_ALLOCATE_FLAG   0x1000

Definition at line 93 of file bl.h.

◆ BL_MM_ADD_DESCRIPTOR_COALESCE_FLAG

#define BL_MM_ADD_DESCRIPTOR_COALESCE_FLAG   0x01

Definition at line 89 of file bl.h.

◆ BL_MM_ADD_DESCRIPTOR_NEVER_COALESCE_FLAG

#define BL_MM_ADD_DESCRIPTOR_NEVER_COALESCE_FLAG   0x10

Definition at line 91 of file bl.h.

◆ BL_MM_ADD_DESCRIPTOR_NEVER_TRUNCATE_FLAG

#define BL_MM_ADD_DESCRIPTOR_NEVER_TRUNCATE_FLAG   0x20

Definition at line 92 of file bl.h.

◆ BL_MM_ADD_DESCRIPTOR_TRUNCATE_FLAG

#define BL_MM_ADD_DESCRIPTOR_TRUNCATE_FLAG   0x02

Definition at line 90 of file bl.h.

◆ BL_MM_ADD_DESCRIPTOR_UPDATE_LIST_POINTER_FLAG

#define BL_MM_ADD_DESCRIPTOR_UPDATE_LIST_POINTER_FLAG   0x2000

Definition at line 94 of file bl.h.

◆ BL_MM_FLAG_REQUEST_COALESCING

#define BL_MM_FLAG_REQUEST_COALESCING   0x02

Definition at line 87 of file bl.h.

◆ BL_MM_FLAG_USE_FIRMWARE_FOR_MEMORY_MAP_BUFFERS

#define BL_MM_FLAG_USE_FIRMWARE_FOR_MEMORY_MAP_BUFFERS   0x01

Definition at line 86 of file bl.h.

◆ BL_MM_INCLUDE_BAD_MEMORY

#define BL_MM_INCLUDE_BAD_MEMORY   0x20

Definition at line 101 of file bl.h.

◆ BL_MM_INCLUDE_FIRMWARE_MEMORY

#define BL_MM_INCLUDE_FIRMWARE_MEMORY   0x40

Definition at line 102 of file bl.h.

◆ BL_MM_INCLUDE_FIRMWARE_MEMORY_2

#define BL_MM_INCLUDE_FIRMWARE_MEMORY_2   0x200

Definition at line 105 of file bl.h.

◆ BL_MM_INCLUDE_MAPPED_ALLOCATED

#define BL_MM_INCLUDE_MAPPED_ALLOCATED   0x01

Definition at line 96 of file bl.h.

◆ BL_MM_INCLUDE_MAPPED_UNALLOCATED

#define BL_MM_INCLUDE_MAPPED_UNALLOCATED   0x02

Definition at line 97 of file bl.h.

◆ BL_MM_INCLUDE_NO_FIRMWARE_MEMORY

#define BL_MM_INCLUDE_NO_FIRMWARE_MEMORY
Value:
#define BL_MM_INCLUDE_TRUNCATED_MEMORY
Definition: bl.h:103
#define BL_MM_INCLUDE_MAPPED_ALLOCATED
Definition: bl.h:96
#define BL_MM_INCLUDE_UNMAPPED_UNALLOCATED
Definition: bl.h:99
#define BL_MM_INCLUDE_MAPPED_UNALLOCATED
Definition: bl.h:97
#define BL_MM_INCLUDE_BAD_MEMORY
Definition: bl.h:101
#define BL_MM_INCLUDE_PERSISTENT_MEMORY
Definition: bl.h:104
#define BL_MM_INCLUDE_UNMAPPED_ALLOCATED
Definition: bl.h:98
#define BL_MM_INCLUDE_RESERVED_ALLOCATED
Definition: bl.h:100

Definition at line 107 of file bl.h.

◆ BL_MM_INCLUDE_ONLY_FIRMWARE_MEMORY

#define BL_MM_INCLUDE_ONLY_FIRMWARE_MEMORY
Value:
#define BL_MM_INCLUDE_FIRMWARE_MEMORY
Definition: bl.h:102
#define BL_MM_INCLUDE_FIRMWARE_MEMORY_2
Definition: bl.h:105

Definition at line 117 of file bl.h.

◆ BL_MM_INCLUDE_PERSISTENT_MEMORY

#define BL_MM_INCLUDE_PERSISTENT_MEMORY   0x100

Definition at line 104 of file bl.h.

◆ BL_MM_INCLUDE_RESERVED_ALLOCATED

#define BL_MM_INCLUDE_RESERVED_ALLOCATED   0x10

Definition at line 100 of file bl.h.

◆ BL_MM_INCLUDE_TRUNCATED_MEMORY

#define BL_MM_INCLUDE_TRUNCATED_MEMORY   0x80

Definition at line 103 of file bl.h.

◆ BL_MM_INCLUDE_UNMAPPED_ALLOCATED

#define BL_MM_INCLUDE_UNMAPPED_ALLOCATED   0x04

Definition at line 98 of file bl.h.

◆ BL_MM_INCLUDE_UNMAPPED_UNALLOCATED

#define BL_MM_INCLUDE_UNMAPPED_UNALLOCATED   0x08

Definition at line 99 of file bl.h.

◆ BL_MM_REMOVE_PHYSICAL_REGION_FLAG

#define BL_MM_REMOVE_PHYSICAL_REGION_FLAG   0x40000000

Definition at line 124 of file bl.h.

◆ BL_MM_REMOVE_VIRTUAL_REGION_FLAG

#define BL_MM_REMOVE_VIRTUAL_REGION_FLAG   0x80000000

Definition at line 125 of file bl.h.

◆ BL_MM_REQUEST_DEFAULT_TYPE

#define BL_MM_REQUEST_DEFAULT_TYPE   1

Definition at line 121 of file bl.h.

◆ BL_MM_REQUEST_TOP_DOWN_TYPE

#define BL_MM_REQUEST_TOP_DOWN_TYPE   2

Definition at line 122 of file bl.h.

◆ BL_RETURN_ARGUMENTS_NO_PAE_FLAG

#define BL_RETURN_ARGUMENTS_NO_PAE_FLAG   0x40

Definition at line 66 of file bl.h.

◆ BL_RETURN_ARGUMENTS_VERSION

#define BL_RETURN_ARGUMENTS_VERSION   1

Definition at line 63 of file bl.h.

◆ BL_UNKNOWN_ACCESS

#define BL_UNKNOWN_ACCESS   0x10

Definition at line 150 of file bl.h.

◆ BL_UTL_CHECKSUM_COMPLEMENT

#define BL_UTL_CHECKSUM_COMPLEMENT   0x10000

Definition at line 187 of file bl.h.

◆ BL_UTL_CHECKSUM_NEGATE

#define BL_UTL_CHECKSUM_NEGATE   0x40000

Definition at line 189 of file bl.h.

◆ BL_UTL_CHECKSUM_ROTATE

#define BL_UTL_CHECKSUM_ROTATE   0x20000

Definition at line 188 of file bl.h.

◆ BL_UTL_CHECKSUM_UCHAR_BUFFER

#define BL_UTL_CHECKSUM_UCHAR_BUFFER   0x01

Definition at line 190 of file bl.h.

◆ BL_UTL_CHECKSUM_USHORT_BUFFER

#define BL_UTL_CHECKSUM_USHORT_BUFFER   0x02

Definition at line 191 of file bl.h.

◆ BOOT_APPLICATION_SIGNATURE_1

#define BOOT_APPLICATION_SIGNATURE_1   'TOOB'

Definition at line 55 of file bl.h.

◆ BOOT_APPLICATION_SIGNATURE_2

#define BOOT_APPLICATION_SIGNATURE_2   ' PPA'

Definition at line 56 of file bl.h.

◆ BOOT_APPLICATION_VERSION

#define BOOT_APPLICATION_VERSION   2

Definition at line 61 of file bl.h.

◆ BOOT_MEMORY_TRANSLATION_TYPE_PHYSICAL

#define BOOT_MEMORY_TRANSLATION_TYPE_PHYSICAL   0

Definition at line 58 of file bl.h.

◆ BOOT_MEMORY_TRANSLATION_TYPE_VIRTUAL

#define BOOT_MEMORY_TRANSLATION_TYPE_VIRTUAL   1

Definition at line 59 of file bl.h.

Typedef Documentation

◆ BITMAP

◆ BL_ADDRESS_RANGE

◆ BL_APPLICATION_ENTRY

◆ BL_ARCH_CONTEXT

◆ BL_ARCH_MODE

◆ BL_BCD_OPTION

◆ BL_BLOCK_DEVICE

◆ BL_BLOCK_DEVICE_INFORMATION

◆ BL_BOOT_ERROR_STATUS

◆ BL_BUFFER_DESCRIPTOR

◆ BL_COLOR

◆ BL_DEFERRED_FONT_FILE

◆ BL_DEVICE_CALLBACKS

◆ BL_DEVICE_DESCRIPTOR

◆ BL_DEVICE_ENTRY

◆ BL_DEVICE_INFORMATION

◆ BL_DEVICE_TYPE

◆ BL_DISPLAY_MODE

◆ BL_DISPLAY_STATE

◆ BL_FILE_CALLBACKS

◆ BL_FILE_ENTRY

◆ BL_FILE_INFORMATION

◆ BL_FILE_PATH_DESCRIPTOR

◆ BL_FILE_SYSTEM_ENTRY

◆ BL_FILE_SYSTEM_REGISTRATION_TABLE

◆ BL_FIRMWARE_DESCRIPTOR

◆ BL_GRAPHICS_CONSOLE

◆ BL_GRAPHICS_CONSOLE_TYPE

◆ BL_GRAPHICS_CONSOLE_VTABLE

◆ BL_HARDDISK_DEVICE

◆ BL_HASH_ENTRY

◆ BL_HASH_NODE

◆ BL_HASH_TABLE

◆ BL_HASH_VALUE

◆ BL_IMAGE_APPLICATION_ENTRY

◆ BL_IMG_FILE

◆ BL_INPUT_CONSOLE

◆ BL_INPUT_CONSOLE_VTABLE

◆ BL_LIBRARY_PARAMETERS

◆ BL_LOADED_APPLICATION_ENTRY

◆ BL_LOCAL_DEVICE

◆ BL_LOCAL_DEVICE_TYPE

◆ BL_MEMORY_ATTR

◆ BL_MEMORY_CLASS

◆ BL_MEMORY_DATA

◆ BL_MEMORY_DESCRIPTOR

◆ BL_MEMORY_DESCRIPTOR_LIST

◆ BL_MEMORY_DESCRIPTOR_TYPE

◆ BL_MEMORY_TYPE

◆ BL_MENU_POLICY

◆ BL_MENU_STATUS

◆ BL_PARTITION_TYPE

◆ BL_PATH_TYPE

◆ BL_PD_DATA_BLOB

◆ BL_PROTOCOL_HANDLE

◆ BL_REMOTE_CONSOLE

◆ BL_RETURN_ARGUMENTS

◆ BL_TEXT_CONSOLE

◆ BL_TEXT_CONSOLE_VTABLE

◆ BL_TRANSLATION_TYPE

◆ BL_WINDOWS_LOAD_OPTIONS

◆ BMP_HEADER

◆ BOOT_APPLICATION_PARAMETER_BLOCK

◆ COORD

typedef struct _COORD COORD

◆ DIB_HEADER

◆ PBITMAP

typedef struct _BITMAP * PBITMAP

◆ PBL_ADDRESS_RANGE

◆ PBL_APPLICATION_ENTRY

◆ PBL_ARCH_CONTEXT

◆ PBL_BCD_OPTION

◆ PBL_BLOCK_DEVICE

◆ PBL_BLOCK_DEVICE_INFORMATION

◆ PBL_BUFFER_DESCRIPTOR

◆ PBL_COLOR

◆ PBL_DEFERRED_FONT_FILE

◆ PBL_DEVICE_CALLBACKS

◆ PBL_DEVICE_CLOSE

typedef NTSTATUS(* PBL_DEVICE_CLOSE) (_In_ struct _BL_DEVICE_ENTRY *DeviceEntry)

Definition at line 625 of file bl.h.

◆ PBL_DEVICE_CREATE

typedef NTSTATUS(* PBL_DEVICE_CREATE) (VOID)

Definition at line 672 of file bl.h.

◆ PBL_DEVICE_DESCRIPTOR

◆ PBL_DEVICE_ENTRY

◆ PBL_DEVICE_ENUMERATE_DEVICE_CLASS

typedef NTSTATUS(* PBL_DEVICE_ENUMERATE_DEVICE_CLASS) (VOID)

Definition at line 612 of file bl.h.

◆ PBL_DEVICE_FLUSH

typedef NTSTATUS(* PBL_DEVICE_FLUSH) (VOID)

Definition at line 666 of file bl.h.

◆ PBL_DEVICE_GET_INFORMATION

typedef NTSTATUS(* PBL_DEVICE_GET_INFORMATION) (_In_ struct _BL_DEVICE_ENTRY *DeviceEntry, _Out_ struct _BL_DEVICE_INFORMATION *DeviceInformation)

Definition at line 646 of file bl.h.

◆ PBL_DEVICE_INFORMATION

◆ PBL_DEVICE_OPEN

typedef NTSTATUS(* PBL_DEVICE_OPEN) (_In_ struct _BL_DEVICE_DESCRIPTOR *Device, _In_ struct _BL_DEVICE_ENTRY *DeviceEntry)

Definition at line 618 of file bl.h.

◆ PBL_DEVICE_READ

typedef NTSTATUS(* PBL_DEVICE_READ) (_In_ struct _BL_DEVICE_ENTRY *DeviceEntry, _In_ PVOID Buffer, _In_ ULONG Size, _Out_ PULONG BytesRead)

Definition at line 631 of file bl.h.

◆ PBL_DEVICE_RESET

typedef NTSTATUS(* PBL_DEVICE_RESET) (VOID)

Definition at line 660 of file bl.h.

◆ PBL_DEVICE_SET_INFORMATION

typedef NTSTATUS(* PBL_DEVICE_SET_INFORMATION) (_In_ struct _BL_DEVICE_ENTRY *DeviceEntry, _In_ struct _BL_DEVICE_INFORMATION *DeviceInformation)

Definition at line 653 of file bl.h.

◆ PBL_DEVICE_WRITE

typedef NTSTATUS(* PBL_DEVICE_WRITE) (VOID)

Definition at line 640 of file bl.h.

◆ PBL_DISPLAY_MODE

◆ PBL_DISPLAY_STATE

◆ PBL_FILE_CALLBACKS

◆ PBL_FILE_CLOSE

typedef NTSTATUS(* PBL_FILE_CLOSE) (_In_ struct _BL_FILE_ENTRY *FileEntry)

Definition at line 401 of file bl.h.

◆ PBL_FILE_DESTROY_CALLBACK

typedef NTSTATUS(* PBL_FILE_DESTROY_CALLBACK) (_In_ PVOID Entry)

Definition at line 468 of file bl.h.

◆ PBL_FILE_ENTRY

◆ PBL_FILE_GET_INFO

typedef NTSTATUS(* PBL_FILE_GET_INFO) (_In_ struct _BL_FILE_ENTRY *FileEntry, _Out_ struct _BL_FILE_INFORMATION *FileInfo)

Definition at line 428 of file bl.h.

◆ PBL_FILE_GET_NEXT

typedef NTSTATUS(* PBL_FILE_GET_NEXT) (VOID)

Definition at line 422 of file bl.h.

◆ PBL_FILE_INFORMATION

◆ PBL_FILE_OPEN

Definition at line 392 of file bl.h.

◆ PBL_FILE_PATH_DESCRIPTOR

◆ PBL_FILE_READ

Definition at line 407 of file bl.h.

◆ PBL_FILE_SET_INFO

typedef NTSTATUS(* PBL_FILE_SET_INFO) (_In_ struct _BL_FILE_ENTRY *FileEntry, _In_ struct _BL_FILE_INFORMATION *FileInfo)

Definition at line 435 of file bl.h.

◆ PBL_FILE_SYSTEM_ENTRY

◆ PBL_FILE_WRITE

typedef NTSTATUS(* PBL_FILE_WRITE) (VOID)

Definition at line 416 of file bl.h.

◆ PBL_FIRMWARE_DESCRIPTOR

◆ PBL_FS_DESTROY_CALLBACK

typedef NTSTATUS(* PBL_FS_DESTROY_CALLBACK) (VOID)

Definition at line 448 of file bl.h.

◆ PBL_FS_INIT_CALLBACK

typedef NTSTATUS(* PBL_FS_INIT_CALLBACK) (VOID)

Definition at line 442 of file bl.h.

◆ PBL_FS_MOUNT_CALLBACK

typedef NTSTATUS(* PBL_FS_MOUNT_CALLBACK) (_In_ ULONG DeviceId, _In_ ULONG Unknown, _Out_ struct _BL_FILE_ENTRY **FileEntry)

Definition at line 454 of file bl.h.

◆ PBL_FS_PURGE_CALLBACK

typedef NTSTATUS(* PBL_FS_PURGE_CALLBACK) (VOID)

Definition at line 462 of file bl.h.

◆ PBL_GRAPHICS_CONSOLE

◆ PBL_GRAPHICS_CONSOLE_VTABLE

◆ PBL_HASH_ENTRY

◆ PBL_HASH_NODE

◆ PBL_HASH_TABLE

◆ PBL_HASH_TABLE_COMPARE_FUNCTION

typedef BOOLEAN(* PBL_HASH_TABLE_COMPARE_FUNCTION) (_In_ struct _BL_HASH_ENTRY *Entry1, _In_ struct _BL_HASH_ENTRY *Entry2)

Definition at line 594 of file bl.h.

◆ PBL_HASH_TABLE_HASH_FUNCTION

typedef ULONG(* PBL_HASH_TABLE_HASH_FUNCTION) (_In_ struct _BL_HASH_ENTRY *Entry, _In_ ULONG TableSize)

Definition at line 601 of file bl.h.

◆ PBL_HASH_VALUE

◆ PBL_IMAGE_APPLICATION_ENTRY

◆ PBL_IMG_FILE

◆ PBL_INPUT_CONSOLE

◆ PBL_INPUT_CONSOLE_VTABLE

◆ PBL_IO_DESTROY_ROUTINE

typedef NTSTATUS(* PBL_IO_DESTROY_ROUTINE) (VOID)

Definition at line 587 of file bl.h.

◆ PBL_LIBRARY_PARAMETERS

◆ PBL_LOADED_APPLICATION_ENTRY

◆ PBL_LOCAL_DEVICE

◆ PBL_MEMORY_DATA

◆ PBL_MEMORY_DESCRIPTOR

◆ PBL_MEMORY_DESCRIPTOR_LIST

◆ PBL_MM_DESTROY_SELF_MAP

typedef VOID(* PBL_MM_DESTROY_SELF_MAP) (VOID)

Definition at line 700 of file bl.h.

◆ PBL_MM_FLUSH_TLB

typedef VOID(* PBL_MM_FLUSH_TLB)(VOID)

Definition at line 677 of file bl.h.

◆ PBL_MM_FLUSH_TLB_ENTRY

typedef VOID(* PBL_MM_FLUSH_TLB_ENTRY) (_In_ PVOID VirtualAddress)

Definition at line 705 of file bl.h.

◆ PBL_MM_MAP_PHYSICAL_ADDRESS

typedef NTSTATUS(* PBL_MM_MAP_PHYSICAL_ADDRESS) (_In_ PHYSICAL_ADDRESS PhysicalAddress, _Out_ PVOID VirtualAddress, _In_ ULONG Size, _In_ ULONG CacheAttributes)

Definition at line 729 of file bl.h.

◆ PBL_MM_MOVE_VIRTUAL_ADDRESS_RANGE

typedef NTSTATUS(* PBL_MM_MOVE_VIRTUAL_ADDRESS_RANGE) (_In_ PVOID DestinationAddress, _In_ PVOID SourceAddress, _In_ ULONGLONG Size)

Definition at line 687 of file bl.h.

◆ PBL_MM_RELOCATE_SELF_MAP

typedef VOID(* PBL_MM_RELOCATE_SELF_MAP) (VOID)

Definition at line 682 of file bl.h.

◆ PBL_MM_REMAP_VIRTUAL_ADDRESS

typedef NTSTATUS(* PBL_MM_REMAP_VIRTUAL_ADDRESS) (_In_ PPHYSICAL_ADDRESS PhysicalAddress, _Out_ PVOID VirtualAddress, _In_ ULONG Size, _In_ ULONG CacheAttributes)

Definition at line 721 of file bl.h.

◆ PBL_MM_TRANSLATE_VIRTUAL_ADDRESS

typedef BOOLEAN(* PBL_MM_TRANSLATE_VIRTUAL_ADDRESS) (_In_ PVOID VirtualAddress, _Out_ PPHYSICAL_ADDRESS PhysicalAddress, _Out_opt_ PULONG CacheAttributes)

Definition at line 737 of file bl.h.

◆ PBL_MM_UNMAP_VIRTUAL_ADDRESS

typedef NTSTATUS(* PBL_MM_UNMAP_VIRTUAL_ADDRESS) (_In_ PVOID VirtualAddress, _In_ ULONG Size)

Definition at line 715 of file bl.h.

◆ PBL_MM_ZERO_VIRTUAL_ADDRESS_RANGE

typedef NTSTATUS(* PBL_MM_ZERO_VIRTUAL_ADDRESS_RANGE) (_In_ PVOID DestinationAddress, _In_ ULONGLONG Size)

Definition at line 694 of file bl.h.

◆ PBL_PD_DATA_BLOB

◆ PBL_PROTOCOL_HANDLE

◆ PBL_REMOTE_CONSOLE

◆ PBL_RETURN_ARGUMENTS

◆ PBL_STATUS_ERROR_HANDLER

typedef NTSTATUS(* PBL_STATUS_ERROR_HANDLER) (_In_ ULONG ErrorCode, _In_ ULONG Parameter1, _In_ ULONG_PTR Parameter2, _In_ ULONG_PTR Parameter3, _In_ ULONG_PTR Parameter4)

Definition at line 744 of file bl.h.

◆ PBL_TBL_LOOKUP_ROUTINE

typedef BOOLEAN(* PBL_TBL_LOOKUP_ROUTINE) (_In_ PVOID Entry, _In_ PVOID Argument1, _In_ PVOID Argument2, _In_ PVOID Argument3, _In_ PVOID Argument4)

Definition at line 564 of file bl.h.

◆ PBL_TBL_MAP_ROUTINE

typedef NTSTATUS(* PBL_TBL_MAP_ROUTINE) (_In_ PVOID Entry, _In_ ULONG EntryIndex)

Definition at line 574 of file bl.h.

◆ PBL_TBL_SET_ROUTINE

typedef NTSTATUS(* PBL_TBL_SET_ROUTINE) (_In_ PVOID Entry)

Definition at line 581 of file bl.h.

◆ PBL_TEXT_CONSOLE

◆ PBL_TEXT_CONSOLE_VTABLE

◆ PBL_WINDOWS_LOAD_OPTIONS

◆ PBMP_HEADER

◆ PBOOT_APPLICATION_PARAMETER_BLOCK

◆ PCONSOLE_CLEAR_TEXT

typedef NTSTATUS(* PCONSOLE_CLEAR_TEXT) (_In_ struct _BL_TEXT_CONSOLE *Console, _In_ BOOLEAN LineOnly)

Definition at line 522 of file bl.h.

◆ PCONSOLE_DESTRUCT

typedef VOID(* PCONSOLE_DESTRUCT) (_In_ struct _BL_TEXT_CONSOLE *Console)

Definition at line 480 of file bl.h.

◆ PCONSOLE_ENABLE

Definition at line 549 of file bl.h.

◆ PCONSOLE_GET_GRAPHICAL_RESOLUTION

typedef NTSTATUS(* PCONSOLE_GET_GRAPHICAL_RESOLUTION) (_In_ struct _BL_GRAPHICS_CONSOLE *Console, _Out_ struct _BL_DISPLAY_MODE *DisplayMode)

Definition at line 535 of file bl.h.

◆ PCONSOLE_GET_TEXT_RESOLUTION

typedef NTSTATUS(* PCONSOLE_GET_TEXT_RESOLUTION) (_In_ struct _BL_TEXT_CONSOLE *Console, _Out_ PULONG TextResolution)

Definition at line 507 of file bl.h.

◆ PCONSOLE_GET_TEXT_STATE

typedef NTSTATUS(* PCONSOLE_GET_TEXT_STATE) (_In_ struct _BL_TEXT_CONSOLE *Console, _Out_ struct _BL_DISPLAY_STATE *TextState)

Definition at line 492 of file bl.h.

◆ PCONSOLE_IS_ENABLED

typedef BOOLEAN(* PCONSOLE_IS_ENABLED) (_In_ struct _BL_GRAPHICS_CONSOLE *Console)

Definition at line 529 of file bl.h.

◆ PCONSOLE_REINITIALIZE

typedef NTSTATUS(* PCONSOLE_REINITIALIZE) (_In_ struct _BL_TEXT_CONSOLE *Console)

Definition at line 486 of file bl.h.

◆ PCONSOLE_SET_GRAPHICAL_RESOLUTION

typedef NTSTATUS(* PCONSOLE_SET_GRAPHICAL_RESOLUTION) (_In_ struct _BL_GRAPHICS_CONSOLE *Console, _In_ struct _BL_DISPLAY_MODE DisplayMode)

Definition at line 542 of file bl.h.

◆ PCONSOLE_SET_TEXT_RESOLUTION

typedef NTSTATUS(* PCONSOLE_SET_TEXT_RESOLUTION) (_In_ struct _BL_TEXT_CONSOLE *Console, _In_ ULONG NewTextResolution, _Out_ PULONG OldTextResolution)

Definition at line 514 of file bl.h.

◆ PCONSOLE_SET_TEXT_STATE

typedef NTSTATUS(* PCONSOLE_SET_TEXT_STATE) (_In_ struct _BL_TEXT_CONSOLE *Console, _In_ ULONG Flags, _In_ struct _BL_DISPLAY_STATE *TextState)

Definition at line 499 of file bl.h.

◆ PCONSOLE_WRITE_TEXT

typedef NTSTATUS(* PCONSOLE_WRITE_TEXT) (_In_ struct _BL_TEXT_CONSOLE *Console, _In_ PCHAR Text, _In_ ULONG Attribute)

Definition at line 556 of file bl.h.

◆ PCOORD

typedef struct _COORD * PCOORD

◆ PDIB_HEADER

◆ PL_MENU_STATUS

Enumeration Type Documentation

◆ _BL_ARCH_MODE

Enumerator
BlProtectedMode 
BlRealMode 

Definition at line 236 of file bl.h.

237{
@ BlProtectedMode
Definition: bl.h:238
@ BlRealMode
Definition: bl.h:239
enum _BL_ARCH_MODE BL_ARCH_MODE

◆ _BL_BOOT_ERROR_STATUS

Enumerator
Reboot 
Recover 
RecoverOem 
OsSelection 
NextOs 
TryAgain 
AdvancedOptions 
BootOptions 

Definition at line 889 of file bl.h.

890{
891 Reboot = 1,
892 Recover = 2,
893 RecoverOem = 3,
894 OsSelection = 4,
895 NextOs = 5,
896 TryAgain = 6,
897 AdvancedOptions = 7,
898 BootOptions = 8
@ BootOptions
Definition: bl.h:898
@ Recover
Definition: bl.h:892
@ RecoverOem
Definition: bl.h:893
@ AdvancedOptions
Definition: bl.h:897
@ Reboot
Definition: bl.h:891
@ NextOs
Definition: bl.h:895
@ TryAgain
Definition: bl.h:896
@ OsSelection
Definition: bl.h:894
enum _BL_BOOT_ERROR_STATUS BL_BOOT_ERROR_STATUS

◆ _BL_COLOR

Enumerator
Black 
Blue 
Green 
Cyan 
Red 
Magenta 
Brown 
LtGray 
Gray 
LtBlue 
LtGreen 
LtCyan 
LtRed 
LtMagenta 
Yellow 
White 

Definition at line 195 of file bl.h.

196{
197 Black,
198 Blue,
199 Green,
200 Cyan,
201 Red,
202 Magenta,
203 Brown,
204 LtGray,
205 Gray,
206 LtBlue,
207 LtGreen,
208 LtCyan,
209 LtRed,
210 LtMagenta,
211 Yellow,
212 White
enum _BL_COLOR * PBL_COLOR
enum _BL_COLOR BL_COLOR
@ LtRed
Definition: bl.h:209
@ LtMagenta
Definition: bl.h:210
@ LtBlue
Definition: bl.h:206
@ LtCyan
Definition: bl.h:208
@ LtGreen
Definition: bl.h:207
@ Gray
Definition: bl.h:205
@ LtGray
Definition: bl.h:204
@ Brown
Definition: bl.h:203
@ Cyan
Definition: bl.h:200
@ Magenta
Definition: bl.h:202
@ White
Definition: bl.h:212
@ Yellow
Definition: bl.h:211
@ Black
Definition: bl.h:197
@ Green
Definition: bl.h:199
@ Red
Definition: bl.h:201
@ Blue
Definition: bl.h:198

◆ _BL_DEVICE_TYPE

Enumerator
DiskDevice 
LegacyPartitionDevice 
SerialDevice 
UdpDevice 
BootDevice 
PartitionDevice 
LocateDevice 

Definition at line 245 of file bl.h.

246{
247 DiskDevice = 0,
249 SerialDevice = 3,
250 UdpDevice = 4,
251 BootDevice = 5,
252 PartitionDevice = 6,
253 LocateDevice = 8,
@ LegacyPartitionDevice
Definition: bl.h:248
@ LocateDevice
Definition: bl.h:253
@ SerialDevice
Definition: bl.h:249
@ DiskDevice
Definition: bl.h:247
@ PartitionDevice
Definition: bl.h:252
@ UdpDevice
Definition: bl.h:250
@ BootDevice
Definition: bl.h:251
enum _BL_DEVICE_TYPE BL_DEVICE_TYPE

◆ _BL_GRAPHICS_CONSOLE_TYPE

Enumerator
BlGopConsole 
BlUgaConsole 

Definition at line 1138 of file bl.h.

1139{
enum _BL_GRAPHICS_CONSOLE_TYPE BL_GRAPHICS_CONSOLE_TYPE
@ BlUgaConsole
Definition: bl.h:1141
@ BlGopConsole
Definition: bl.h:1140

◆ _BL_LOCAL_DEVICE_TYPE

Enumerator
LocalDevice 
FloppyDevice 
CdRomDevice 
RamDiskDevice 
FileDevice 
VirtualDiskDevice 

Definition at line 259 of file bl.h.

260{
261 LocalDevice = 0,
262 FloppyDevice = 1,
263 CdRomDevice = 2,
264 RamDiskDevice = 3,
265 FileDevice = 5,
@ FloppyDevice
Definition: bl.h:262
@ RamDiskDevice
Definition: bl.h:264
@ FileDevice
Definition: bl.h:265
@ LocalDevice
Definition: bl.h:261
@ VirtualDiskDevice
Definition: bl.h:266
@ CdRomDevice
Definition: bl.h:263
enum _BL_LOCAL_DEVICE_TYPE BL_LOCAL_DEVICE_TYPE

◆ _BL_MEMORY_ATTR

Enumerator
BlMemoryUncached 
BlMemoryWriteCombined 
BlMemoryWriteThrough 
BlMemoryWriteBack 
BlMemoryUncachedExported 
BlMemoryValidCacheAttributes 
BlMemoryValidCacheAttributeMask 
BlMemoryWriteProtected 
BlMemoryReadProtected 
BlMemoryExecuteProtected 
BlMemoryValidProtectionAttributes 
BlMemoryValidProtectionAttributeMask 
BlMemoryLargePages 
BlMemoryKernelRange 
BlMemoryFixed 
BlMemoryBelow1MB 
BlMemoryValidAllocationAttributes 
BlMemoryValidAllocationAttributeMask 
BlMemoryRuntime 
BlMemoryCoalesced 
BlMemoryUpdate 
BlMemoryNonFirmware 
BlMemoryPersistent 
BlMemorySpecial 
BlMemoryFirmware 
BlMemoryValidTypeAttributes 
BlMemoryValidTypeAttributeMask 

Definition at line 341 of file bl.h.

342{
343 //
344 // Memory Caching Attributes
345 //
346 BlMemoryUncached = 0x00000001,
347 BlMemoryWriteCombined = 0x00000002,
348 BlMemoryWriteThrough = 0x00000004,
349 BlMemoryWriteBack = 0x00000008,
350 BlMemoryUncachedExported = 0x00000010,
353
354 //
355 // Memory Protection Attributes
356 //
357 BlMemoryWriteProtected = 0x00000100,
358 BlMemoryReadProtected = 0x00000200,
359 BlMemoryExecuteProtected = 0x00000400,
362
363 //
364 // Memory Allocation Attributes
365 //
366 BlMemoryLargePages = 0x00010000,
367 BlMemoryKernelRange = 0x00020000,
368 BlMemoryFixed = 0x00040000,
369 BlMemoryBelow1MB = 0x00080000,
372
373 //
374 // Memory Type Attributes
375 //
376 BlMemoryRuntime = 0x01000000,
377 BlMemoryCoalesced = 0x02000000,
378 BlMemoryUpdate = 0x04000000,
379 BlMemoryNonFirmware = 0x08000000,
380 BlMemoryPersistent = 0x10000000,
381 BlMemorySpecial = 0x20000000,
382 BlMemoryFirmware = 0x80000000,
enum _BL_MEMORY_ATTR BL_MEMORY_ATTR
@ BlMemoryLargePages
Definition: bl.h:366
@ BlMemoryFixed
Definition: bl.h:368
@ BlMemoryReadProtected
Definition: bl.h:358
@ BlMemoryKernelRange
Definition: bl.h:367
@ BlMemoryValidCacheAttributeMask
Definition: bl.h:352
@ BlMemoryExecuteProtected
Definition: bl.h:359
@ BlMemoryWriteThrough
Definition: bl.h:348
@ BlMemoryValidProtectionAttributes
Definition: bl.h:360
@ BlMemoryUpdate
Definition: bl.h:378
@ BlMemoryValidProtectionAttributeMask
Definition: bl.h:361
@ BlMemoryValidAllocationAttributes
Definition: bl.h:370
@ BlMemoryPersistent
Definition: bl.h:380
@ BlMemoryWriteProtected
Definition: bl.h:357
@ BlMemoryValidCacheAttributes
Definition: bl.h:351
@ BlMemorySpecial
Definition: bl.h:381
@ BlMemoryUncached
Definition: bl.h:346
@ BlMemoryValidAllocationAttributeMask
Definition: bl.h:371
@ BlMemoryValidTypeAttributes
Definition: bl.h:383
@ BlMemoryRuntime
Definition: bl.h:376
@ BlMemoryValidTypeAttributeMask
Definition: bl.h:384
@ BlMemoryWriteBack
Definition: bl.h:349
@ BlMemoryWriteCombined
Definition: bl.h:347
@ BlMemoryUncachedExported
Definition: bl.h:350
@ BlMemoryFirmware
Definition: bl.h:382
@ BlMemoryNonFirmware
Definition: bl.h:379
@ BlMemoryBelow1MB
Definition: bl.h:369
@ BlMemoryCoalesced
Definition: bl.h:377

◆ _BL_MEMORY_CLASS

Enumerator
BlLoaderClass 
BlApplicationClass 
BlSystemClass 

Definition at line 291 of file bl.h.

292{
293 BlLoaderClass = 0xD,
@ BlSystemClass
Definition: bl.h:295
@ BlLoaderClass
Definition: bl.h:293
@ BlApplicationClass
Definition: bl.h:294
enum _BL_MEMORY_CLASS BL_MEMORY_CLASS

◆ _BL_MEMORY_DESCRIPTOR_TYPE

Enumerator
BlMdPhysical 
BlMdVirtual 
BlMdTracker 

Definition at line 221 of file bl.h.

222{
@ BlMdTracker
Definition: bl.h:225
@ BlMdVirtual
Definition: bl.h:224
@ BlMdPhysical
Definition: bl.h:223
enum _BL_MEMORY_DESCRIPTOR_TYPE BL_MEMORY_DESCRIPTOR_TYPE

◆ _BL_MEMORY_TYPE

Enumerator
BlLoaderMemory 
BlLoaderDeviceMemory 
BlLoaderHeap 
BlLoaderPageDirectory 
BlLoaderReferencePage 
BlLoaderRamDisk 
BlLoaderArchData 
BlLoaderData 
BlLoaderRegistry 
BlLoaderBlockMemory 
BlLoaderSelfMap 
BlApplicationReserved 
BlApplicationData 
BlConventionalMemory 
BlUnusableMemory 
BlReservedMemory 
BlEfiBootMemory 
BlConventionalZeroedMemory 
BlEfiRuntimeCodeMemory 
BlAcpiReclaimMemory 
BlAcpiNvsMemory 
BlDeviceIoMemory 
BlDevicePortMemory 
BlPalMemory 
BlEfiRuntimeDataMemory 

Definition at line 301 of file bl.h.

302{
303 //
304 // Loader Memory
305 //
306 BlLoaderMemory = 0xD0000002,
307 BlLoaderDeviceMemory = 0xD0000004,
308 BlLoaderHeap = 0xD0000005,
309 BlLoaderPageDirectory = 0xD0000006,
310 BlLoaderReferencePage = 0xD0000007,
311 BlLoaderRamDisk = 0xD0000008,
312 BlLoaderArchData = 0xD0000009,
313 BlLoaderData = 0xD000000A,
314 BlLoaderRegistry = 0xD000000B,
315 BlLoaderBlockMemory = 0xD000000C,
316 BlLoaderSelfMap = 0xD000000F,
317
318 //
319 // Application Memory
320 //
321 BlApplicationReserved = 0xE0000001,
322 BlApplicationData = 0xE0000004,
323
324 //
325 // System Memory
326 //
327 BlConventionalMemory = 0xF0000001,
328 BlUnusableMemory = 0xF0000002,
329 BlReservedMemory = 0xF0000003,
330 BlEfiBootMemory = 0xF0000004,
331 BlConventionalZeroedMemory = 0xF000005,
332 BlEfiRuntimeCodeMemory = 0xF0000006,
333 BlAcpiReclaimMemory = 0xF0000008,
334 BlAcpiNvsMemory = 0xF0000009,
335 BlDeviceIoMemory = 0xF000000A,
336 BlDevicePortMemory = 0xF000000B,
337 BlPalMemory = 0xF000000C,
338 BlEfiRuntimeDataMemory = 0xF000000E,
@ BlLoaderMemory
Definition: bl.h:306
@ BlReservedMemory
Definition: bl.h:329
@ BlUnusableMemory
Definition: bl.h:328
@ BlEfiRuntimeDataMemory
Definition: bl.h:338
@ BlApplicationReserved
Definition: bl.h:321
@ BlDeviceIoMemory
Definition: bl.h:335
@ BlEfiBootMemory
Definition: bl.h:330
@ BlLoaderData
Definition: bl.h:313
@ BlConventionalMemory
Definition: bl.h:327
@ BlPalMemory
Definition: bl.h:337
@ BlEfiRuntimeCodeMemory
Definition: bl.h:332
@ BlLoaderArchData
Definition: bl.h:312
@ BlLoaderSelfMap
Definition: bl.h:316
@ BlLoaderReferencePage
Definition: bl.h:310
@ BlLoaderBlockMemory
Definition: bl.h:315
@ BlLoaderPageDirectory
Definition: bl.h:309
@ BlConventionalZeroedMemory
Definition: bl.h:331
@ BlLoaderDeviceMemory
Definition: bl.h:307
@ BlLoaderHeap
Definition: bl.h:308
@ BlLoaderRamDisk
Definition: bl.h:311
@ BlApplicationData
Definition: bl.h:322
@ BlAcpiNvsMemory
Definition: bl.h:334
@ BlAcpiReclaimMemory
Definition: bl.h:333
@ BlDevicePortMemory
Definition: bl.h:336
@ BlLoaderRegistry
Definition: bl.h:314
enum _BL_MEMORY_TYPE BL_MEMORY_TYPE

◆ _BL_MENU_POLICY

Enumerator
MenuPolicyLegacy 
MenuPolicyStandard 

Definition at line 215 of file bl.h.

216{
@ MenuPolicyLegacy
Definition: bl.h:217
@ MenuPolicyStandard
Definition: bl.h:218
enum _BL_MENU_POLICY BL_MENU_POLICY

◆ _BL_PARTITION_TYPE

Enumerator
GptPartition 
MbrPartition 
RawPartition 

Definition at line 272 of file bl.h.

273{
@ MbrPartition
Definition: bl.h:275
@ RawPartition
Definition: bl.h:276
@ GptPartition
Definition: bl.h:274
enum _BL_PARTITION_TYPE BL_PARTITION_TYPE

◆ _BL_PATH_TYPE

Enumerator
InternalPath 
EfiPath 

Definition at line 282 of file bl.h.

283{
284 InternalPath = 3,
285 EfiPath = 4
enum _BL_PATH_TYPE BL_PATH_TYPE
@ EfiPath
Definition: bl.h:285
@ InternalPath
Definition: bl.h:284

◆ _BL_TRANSLATION_TYPE

Enumerator
BlNone 
BlVirtual 
BlPae 
BlMax 

Definition at line 228 of file bl.h.

229{
230 BlNone,
231 BlVirtual,
232 BlPae,
233 BlMax
@ BlMax
Definition: bl.h:233
@ BlVirtual
Definition: bl.h:231
@ BlPae
Definition: bl.h:232
@ BlNone
Definition: bl.h:230
enum _BL_TRANSLATION_TYPE BL_TRANSLATION_TYPE

Function Documentation

◆ Archx86TransferTo32BitApplicationAsm()

VOID Archx86TransferTo32BitApplicationAsm ( VOID  )

Definition at line 51 of file arch.c.

52{
53 EfiPrintf(L" Archx86TransferTo32BitApplicationAsm NOT IMPLEMENTED for this platform\r\n");
54}
VOID EfiPrintf(_In_ PWCHAR Format,...)
Definition: firmware.c:126
#define L(x)
Definition: ntvdm.h:50

Referenced by ImgArchEfiStartBootApplication().

◆ BcInitialize()

NTSTATUS BcInitialize ( VOID  )

Definition at line 73 of file blkcache.c.

76{
78
80 if (!NT_SUCCESS(Status))
81 {
82 goto Quickie;
83 }
84
87 {
89 goto Quickie;
90 }
91
93 if (Status >= 0)
94 {
95 return Status;
96 }
97
98Quickie:
99 EfiPrintf(L"Failure path not yet implemented\r\n");
100#if 0
101 if (BcpHashTableId != -1)
102 {
103 BlHtDestroy(BcpHashTableId);
104 }
105 if (BcpBlockAllocatorHandle != -1)
106 {
108 }
109#endif
110 return Status;
111}
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS BlHtCreate(_In_ ULONG Size, _In_ PBL_HASH_TABLE_HASH_FUNCTION HashFunction, _In_ PBL_HASH_TABLE_COMPARE_FUNCTION CompareFunction, _Out_ PULONG Id)
Definition: util.c:504
NTSTATUS BlpMmCreateBlockAllocator(VOID)
Definition: blkalloc.c:213
NTSTATUS BlpIoRegisterDestroyRoutine(_In_ PBL_IO_DESTROY_ROUTINE DestroyRoutine)
Definition: io.c:21
NTSTATUS BlpMmDeleteBlockAllocator(_In_ ULONG BlockId)
Definition: blkalloc.c:88
ULONG BcpHashTableId
Definition: blkcache.c:16
ULONG BcpHashFunction(_In_ PBL_HASH_ENTRY Entry, _In_ ULONG TableSize)
Definition: blkcache.c:45
ULONG BcpBlockAllocatorHandle
Definition: blkcache.c:15
BOOLEAN BcpCompareKey(_In_ PBL_HASH_ENTRY Entry1, _In_ PBL_HASH_ENTRY Entry2)
Definition: blkcache.c:32
NTSTATUS BcpDestroy(VOID)
Definition: blkcache.c:21
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
Status
Definition: gdiplustypes.h:25
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132

Referenced by BlockIopInitialize().

◆ BfClearScreen()

NTSTATUS BfClearScreen ( _In_ PBL_GRAPHICS_CONSOLE  Console)

Definition at line 158 of file font.c.

161{
163
164 /* Reset the cursor position */
165 Console->TextConsole.State.XPos = 0;
166 Console->TextConsole.State.YPos = 0;
167
168 /* Fill the screen with the background color */
170 Console->TextConsole.State.BgColor);
171 if (!NT_SUCCESS(Status))
172 {
173 return Status;
174 }
175
176 /* Check if the cursor should be visible */
177 if (Console->TextConsole.State.CursorVisible)
178 {
179 /* Load any fonts at this time */
181 {
183 }
184
185 /* Switch the cursor to visible */
187 }
188 else
189 {
190 /* Nothing left to do */
192 }
193
194 /* Return cursor flip result, if any */
195 return Status;
196}
CConsole Console
NTSTATUS ConsoleGraphicalClearPixels(_In_ PBL_GRAPHICS_CONSOLE Console, _In_ ULONG Color)
Definition: guicons.c:275
NTSTATUS BfLoadDeferredFontFiles(VOID)
Definition: font.c:99
NTSTATUS BfiFlipCursorCharacter(_In_ PBL_GRAPHICS_CONSOLE Console, _In_ BOOLEAN Visible)
Definition: font.c:139
LIST_ENTRY BfiDeferredListHead
Definition: font.c:15
#define TRUE
Definition: types.h:120
#define IsListEmpty(ListHead)
Definition: env_spec_w32.h:954
#define STATUS_SUCCESS
Definition: shellext.h:65

Referenced by ConsoleGraphicalClearText().

◆ BfClearToEndOfLine()

NTSTATUS BfClearToEndOfLine ( _In_ PBL_GRAPHICS_CONSOLE  Console)

Definition at line 149 of file font.c.

152{
153 /* not implemented */
155}
#define STATUS_NOT_IMPLEMENTED
Definition: d3dkmdt.h:42

Referenced by ConsoleGraphicalClearText().

◆ BfiFreeDeferredFontFile()

VOID BfiFreeDeferredFontFile ( _In_ PBL_DEFERRED_FONT_FILE  DeferredFontFile)

Definition at line 30 of file font.c.

33{
34 /* Free the device copy if there was one */
35 if (DeferredFontFile->Device)
36 {
37 BlMmFreeHeap(DeferredFontFile->Device);
38 }
39
40 /* Free the path copy if there was one */
41 if (DeferredFontFile->FontPath)
42 {
43 BlMmFreeHeap(DeferredFontFile->FontPath);
44 }
45
46 /* Free the whole thing */
47 BlMmFreeHeap(DeferredFontFile);
48}
NTSTATUS BlMmFreeHeap(_In_ PVOID Buffer)
Definition: heapalloc.c:663

Referenced by BfLoadDeferredFontFiles(), BfLoadFontFile(), and BlpDisplayRegisterLocale().

◆ BfLoadDeferredFontFiles()

NTSTATUS BfLoadDeferredFontFiles ( VOID  )

Definition at line 99 of file font.c.

102{
103 PLIST_ENTRY NextEntry;
104 PBL_DEFERRED_FONT_FILE DeferredFont;
105 NTSTATUS Status, LoadStatus;
106
107 /* Assume empty list */
109
110 /* Parse the list */
111 NextEntry = BfiDeferredListHead.Flink;
112 while (NextEntry != &BfiDeferredListHead)
113 {
114 /* Get the font */
115 DeferredFont = CONTAINING_RECORD(NextEntry, BL_DEFERRED_FONT_FILE, ListEntry);
116
117 /* Move to the next entry and remove this one */
118 NextEntry = NextEntry->Flink;
119 RemoveEntryList(&DeferredFont->ListEntry);
120
121 /* Load the font */
122 LoadStatus = BfiLoadFontFile(DeferredFont->Device,
123 DeferredFont->FontPath);
124 if (!NT_SUCCESS(LoadStatus))
125 {
126 /* Remember the load failure if there was one */
127 Status = LoadStatus;
128 }
129
130 /* Free the deferred font */
131 BfiFreeDeferredFontFile(DeferredFont);
132 }
133
134 /* Return load status */
135 return Status;
136}
NTSTATUS BfiLoadFontFile(_In_ PBL_DEVICE_DESCRIPTOR FontDevice, _In_ PWCHAR FontPath)
Definition: font.c:20
VOID BfiFreeDeferredFontFile(_In_ PBL_DEFERRED_FONT_FILE DeferredFontFile)
Definition: font.c:30
#define RemoveEntryList(Entry)
Definition: env_spec_w32.h:986
PBL_DEVICE_DESCRIPTOR Device
Definition: bl.h:1301
LIST_ENTRY ListEntry
Definition: bl.h:1299
Definition: typedefs.h:120
struct _LIST_ENTRY * Flink
Definition: typedefs.h:121
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by BfClearScreen(), and BlResourceFindMessage().

◆ BfLoadFontFile()

NTSTATUS BfLoadFontFile ( _In_ PBL_DEVICE_DESCRIPTOR  Device,
_In_ PWCHAR  FontPath 
)

Definition at line 51 of file font.c.

55{
56 PBL_DEFERRED_FONT_FILE DeferredFont;
57 SIZE_T FontPathSize;
58
59 /* Allocate the deferred font structure */
60 DeferredFont = (PBL_DEFERRED_FONT_FILE)BlMmAllocateHeap(sizeof(*DeferredFont));
61 if (!DeferredFont)
62 {
63 return STATUS_NO_MEMORY;
64 }
65
66 /* Zero it out */
67 RtlZeroMemory(DeferredFont, sizeof(*DeferredFont));
68
69 /* Allocate a copy for the file path */
70 FontPathSize = sizeof(WCHAR) * wcslen(FontPath) + sizeof(UNICODE_NULL);
71 DeferredFont->FontPath = (PWCHAR)BlMmAllocateHeap(FontPathSize);
72 if (!DeferredFont->FontPath)
73 {
74 BfiFreeDeferredFontFile(DeferredFont);
75 return STATUS_NO_MEMORY;
76 }
77
78 /* Allocate a copy for the device */
79 DeferredFont->Device = BlMmAllocateHeap(Device->Size);
80 if (!DeferredFont->Device)
81 {
82 BfiFreeDeferredFontFile(DeferredFont);
83 return STATUS_NO_MEMORY;
84 }
85
86 /* Copy the path and device */
87 RtlCopyMemory(DeferredFont->FontPath, FontPath, FontPathSize);
88 RtlCopyMemory(DeferredFont->Device,Device, Device->Size);
89
90 /* Set pending flag? */
91 DeferredFont->Flags = 1;
92
93 /* Insert it into the list */
95 return STATUS_SUCCESS;
96}
PVOID BlMmAllocateHeap(_In_ SIZE_T Size)
Definition: heapalloc.c:569
struct _BL_DEFERRED_FONT_FILE * PBL_DEFERRED_FONT_FILE
#define STATUS_NO_MEMORY
Definition: d3dkmdt.h:51
#define InsertTailList(ListHead, Entry)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define UNICODE_NULL
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
uint16_t * PWCHAR
Definition: typedefs.h:56
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by DsppLoadFontFile().

◆ BiCloseKey()

VOID BiCloseKey ( _In_ HANDLE  KeyHandle)

Definition at line 141 of file bootreg.c.

144{
145 PBI_KEY_HIVE KeyHive;
146 PBI_KEY_OBJECT KeyObject;
147
148 /* Get the key object and hive */
149 KeyObject = (PBI_KEY_OBJECT)KeyHandle;
150 KeyHive = KeyObject->KeyHive;
151
152 /* Check if we have a hive, or name, or key node */
153 if ((KeyHive) || (KeyObject->KeyNode) || (KeyObject->KeyName))
154 {
155 /* Drop a reference, see if it's the last one */
157 if (!KeyHive->ReferenceCount)
158 {
159 /* Check if we should flush it */
160 if (KeyHive->Flags & BI_FLUSH_HIVE)
161 {
163 }
164
165 /* Unmap the hive */
167
168 /* Free the hive and hive path */
169 BlMmFreeHeap(KeyHive->FilePath);
170 BlMmFreeHeap(KeyHive);
171 }
172
173 /* Check if a key name is present */
174 if (KeyObject->KeyName)
175 {
176 /* Free it */
177 BlMmFreeHeap(KeyObject->KeyName);
178 }
179 }
180
181 /* Free the object */
182 BlMmFreeHeap(KeyObject);
183}
NTSTATUS MmPapFreePages(_In_ PVOID Address, _In_ ULONG WhichList)
Definition: pagealloc.c:1196
VOID BiDereferenceHive(_In_ HANDLE KeyHandle)
Definition: bootreg.c:117
VOID BiFlushHive(_In_ HANDLE KeyHandle)
Definition: bootreg.c:131
#define BI_FLUSH_HIVE
Definition: bootreg.c:16
struct _BI_KEY_OBJECT * PBI_KEY_OBJECT
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
Definition: ndis.h:4715
PBL_FILE_PATH_DESCRIPTOR FilePath
Definition: bootreg.c:25
LONG ReferenceCount
Definition: bootreg.c:27
ULONG Flags
Definition: bootreg.c:28
PHBASE_BLOCK BaseBlock
Definition: bootreg.c:23
PBI_KEY_HIVE KeyHive
Definition: bootreg.c:34
PWCHAR KeyName
Definition: bootreg.c:37
PCM_KEY_NODE KeyNode
Definition: bootreg.c:35

Referenced by BcdDeleteElement(), BcdOpenObject(), BiAddStoreFromFile(), BiDeleteKey(), BiEnumerateElements(), BiEnumerateSubElements(), BiGetObjectDescription(), BmCloseDataStore(), BmGetEntryDescription(), BmGetOptionList(), and BmPurgeOption().

◆ BiDeleteKey()

NTSTATUS BiDeleteKey ( _In_ HANDLE  KeyHandle)

Definition at line 892 of file bootreg.c.

895{
897 PBI_KEY_OBJECT KeyObject;
898 PHHIVE Hive;
899 ULONG SubKeyCount, i;
900 PWCHAR* SubKeyList;
902
903 /* Get the key object and hive */
904 KeyObject = (PBI_KEY_OBJECT)KeyHandle;
905 Hive = &KeyObject->KeyHive->Hive.Hive;
906
907 /* Make sure the hive is writeable */
908 if (!(KeyObject->KeyHive->Flags & BI_HIVE_WRITEABLE))
909 {
911 }
912
913 /* Enumerate all of the subkeys */
914 Status = BiEnumerateSubKeys(KeyHandle, &SubKeyList, &SubKeyCount);
915 if ((NT_SUCCESS(Status)) && (SubKeyCount > 0))
916 {
917 /* Loop through each one */
918 for (i = 0; i < SubKeyCount; i++)
919 {
920 /* Open a handle to it */
921 Status = BiOpenKey(KeyHandle, SubKeyList[i], &SubKeyHandle);
922 if (NT_SUCCESS(Status))
923 {
924 /* Recursively call us to delete it */
926 if (Status != STATUS_SUCCESS)
927 {
928 /* Close the key on failure */
930 }
931 }
932 }
933 }
934
935 /* Check if we had a list of subkeys */
936 if (SubKeyList)
937 {
938 /* Free it */
939 BlMmFreeHeap(SubKeyList);
940 }
941
942 /* Delete this key cell */
943 Status = CmpFreeKeyByCell(Hive, KeyObject->KeyCell, TRUE);
944 if (NT_SUCCESS(Status))
945 {
946 /* Mark the hive as requiring a flush */
947 KeyObject->KeyHive->Flags |= BI_FLUSH_HIVE;
949 }
950
951 /* All done */
952 return Status;
953}
NTSTATUS BiOpenKey(_In_ HANDLE ParentHandle, _In_ PWCHAR KeyName, _Out_ PHANDLE Handle)
Definition: bootreg.c:186
#define BI_HIVE_WRITEABLE
Definition: bootreg.c:17
VOID BiCloseKey(_In_ HANDLE KeyHandle)
Definition: bootreg.c:141
NTSTATUS BiDeleteKey(_In_ HANDLE KeyHandle)
Definition: bootreg.c:892
NTSTATUS BiEnumerateSubKeys(_In_ HANDLE KeyHandle, _Out_ PWCHAR **SubKeyList, _Out_ PULONG SubKeyCount)
Definition: bootreg.c:723
NTSTATUS NTAPI CmpFreeKeyByCell(IN PHHIVE Hive, IN HCELL_INDEX Cell, IN BOOLEAN Unlink)
Definition: cmkeydel.c:159
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
Definition: glfuncs.h:248
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ PNDIS_STRING _Out_ PNDIS_HANDLE SubKeyHandle
Definition: ndis.h:4726
CMHIVE Hive
Definition: bootreg.c:26
HCELL_INDEX KeyCell
Definition: bootreg.c:36
HHIVE Hive
Definition: cmlib.h:317
uint32_t ULONG
Definition: typedefs.h:59
#define STATUS_MEDIA_WRITE_PROTECTED
Definition: udferr_usr.h:161

Referenced by BcdDeleteElement(), and BiDeleteKey().

◆ BiDereferenceHive()

VOID BiDereferenceHive ( _In_ HANDLE  KeyHandle)

Definition at line 117 of file bootreg.c.

120{
121 PBI_KEY_OBJECT KeyObject;
122
123 /* Get the key object */
124 KeyObject = (PBI_KEY_OBJECT)KeyHandle;
125
126 /* Drop a reference on the parent hive */
127 --KeyObject->KeyHive->ReferenceCount;
128}

Referenced by BiAddStoreFromFile(), BiCloseKey(), and BmCloseDataStore().

◆ BiEnumerateSubKeys()

NTSTATUS BiEnumerateSubKeys ( _In_ HANDLE  KeyHandle,
_Out_ PWCHAR **  SubKeyList,
_Out_ PULONG  SubKeyCount 
)

Definition at line 723 of file bootreg.c.

728{
729 PCM_KEY_NODE KeyNode, Node;
730 PBI_KEY_OBJECT KeyObject;
731 ULONG KeyCount;
732 ULONG NameLength, NewTotalNameLength, FinalLength, TotalNameLength;
733 PHHIVE Hive;
734 PWCHAR KeyName, NameEnd;
735 HCELL_INDEX CellIndex;
736 PWCHAR* SubKeys;
738 ULONG i;
739
740 /* Get the key object, node, and hive */
741 KeyObject = (PBI_KEY_OBJECT)KeyHandle;
742 KeyNode = KeyObject->KeyNode;
743 Hive = &KeyObject->KeyHive->Hive.Hive;
744
745 /* Assume it's empty */
746 *SubKeyList = 0;
747 *SubKeyCount = 0;
748
749 /* Initialize locals */
750 KeyCount = 0;
751 SubKeys = 0;
752 TotalNameLength = 0;
753
754 /* Find the first subkey cell index */
755 CellIndex = CmpFindSubKeyByNumber(Hive, KeyNode, KeyCount);
756 while (CellIndex != HCELL_NIL)
757 {
758 /* Move to the next one */
759 KeyCount++;
760
761 /* Get the cell data for it */
762 Node = (PCM_KEY_NODE)HvGetCell(Hive, CellIndex);
763 if (!Node)
764 {
766 }
767
768 /* Check if the value is compressed */
769 if (Node->Flags & KEY_COMP_NAME)
770 {
771 /* Get the compressed name size */
772 NameLength = CmpCompressedNameSize(Node->Name, Node->NameLength);
773 }
774 else
775 {
776 /* Get the real size */
777 NameLength = Node->NameLength;
778 }
779
780 /* Add up the new length, protecting against overflow */
781 NewTotalNameLength = TotalNameLength + NameLength + sizeof(UNICODE_NULL);
782 if (NewTotalNameLength < TotalNameLength)
783 {
785 goto Quickie;
786 }
787
788 /* We're good, use the new length */
789 TotalNameLength = NewTotalNameLength;
790
791 /* Find the next subkey cell index */
792 CellIndex = CmpFindSubKeyByNumber(Hive, KeyNode, KeyCount);
793 }
794
795 /* Were there no keys? We're done, if so */
796 if (!KeyCount)
797 {
798 return STATUS_SUCCESS;
799 }
800
801 /* Safely compute the size of the array needed */
802 Status = RtlULongLongToULong(sizeof(PWCHAR) * KeyCount, &FinalLength);
803 if (!NT_SUCCESS(Status))
804 {
805 goto Quickie;
806 }
807
808 /* Safely add that to the name length */
809 Status = RtlULongAdd(TotalNameLength, FinalLength, &FinalLength);
810 if (!NT_SUCCESS(Status))
811 {
812 goto Quickie;
813 }
814
815 /* Allocate an array big enough for the names and pointers */
816 SubKeys = BlMmAllocateHeap(FinalLength);
817 if (!SubKeys)
818 {
820 goto Quickie;
821 }
822
823 /* Go over each key again */
824 NameEnd = (PWCHAR)&SubKeys[KeyCount];
825 for (i = 0; i < KeyCount; i++)
826 {
827 /* Get the cell index for this subkey */
828 CellIndex = CmpFindSubKeyByNumber(Hive, KeyNode, i);
829 if (CellIndex == HCELL_NIL)
830 {
831 break;
832 }
833
834 /* Get the cell data for it */
835 Node = (PCM_KEY_NODE)HvGetCell(Hive, CellIndex);
836 if (!Node)
837 {
839 goto Quickie;
840 }
841
842 /* Check if the value is compressed */
843 KeyName = Node->Name;
844 if (Node->Flags & KEY_COMP_NAME)
845 {
846 /* Get the compressed name size */
847 NameLength = CmpCompressedNameSize(KeyName, Node->NameLength);
848 CmpCopyCompressedName(NameEnd, NameLength, KeyName, Node->NameLength);
849 }
850 else
851 {
852 /* Get the real size */
853 NameLength = Node->NameLength;
854 RtlCopyMemory(NameEnd, KeyName, NameLength);
855 }
856
857 /* Move the name buffer to the next spot, and NULL-terminate */
858 SubKeys[i] = NameEnd;
859 NameEnd += (NameLength / sizeof(WCHAR));
860 *NameEnd = UNICODE_NULL;
861
862 /* Keep going */
863 NameEnd++;
864 }
865
866 /* Check if the subkeys were empty */
867 if (i == 0)
868 {
869 /* They disappeared in the middle of enumeration */
871 goto Quickie;
872 }
873
874 /* Return the count and the array of names */
875 *SubKeyList = SubKeys;
876 *SubKeyCount = i;
877 SubKeys = NULL;
879
880Quickie:
881 /* On the failure path, free the subkeys if any exist */
882 if (SubKeys)
883 {
884 BlMmFreeHeap(SubKeys);
885 }
886
887 /* All done, return the result */
888 return Status;
889}
struct _CM_KEY_NODE * PCM_KEY_NODE
#define KEY_COMP_NAME
Definition: cmdata.h:35
HCELL_INDEX NTAPI CmpFindSubKeyByNumber(IN PHHIVE Hive, IN PCM_KEY_NODE Node, IN ULONG Number)
Definition: cmindex.c:600
VOID NTAPI CmpCopyCompressedName(OUT PWCHAR Destination, IN ULONG DestinationLength, IN PWCHAR Source, IN ULONG SourceLength)
Definition: cmname.c:56
USHORT NTAPI CmpCompressedNameSize(IN PWCHAR Name, IN ULONG Length)
Definition: cmname.c:95
#define HvGetCell(Hive, Cell)
Definition: cmlib.h:457
#define NULL
Definition: types.h:112
union node Node
Definition: types.h:1255
#define HCELL_NIL
Definition: hivedata.h:110
ULONG HCELL_INDEX
Definition: hivedata.h:105
#define STATUS_REGISTRY_CORRUPT
Definition: ntstatus.h:568
#define STATUS_NAME_TOO_LONG
Definition: ntstatus.h:498
#define STATUS_OBJECT_NAME_NOT_FOUND
Definition: udferr_usr.h:149
Definition: dlist.c:348
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
Definition: wdfdevice.h:2699

Referenced by BiDeleteKey(), and BiEnumerateElements().

◆ BiGetRegistryValue()

NTSTATUS BiGetRegistryValue ( _In_ HANDLE  KeyHandle,
_In_ PWCHAR  ValueName,
_In_ ULONG  Type,
_Out_ PVOID Buffer,
_Out_ PULONG  ValueLength 
)

Definition at line 657 of file bootreg.c.

664{
665 PCM_KEY_NODE KeyNode;
666 PHHIVE KeyHive;
667 UNICODE_STRING ValueString;
668 PBI_KEY_OBJECT KeyObject;
669 PCM_KEY_VALUE KeyValue;
670 PVOID ValueCopy;
671 ULONG Size;
672 HCELL_INDEX CellIndex;
674
675 /* Get the key object, node,and hive */
676 KeyObject = (PBI_KEY_OBJECT)KeyHandle;
677 KeyNode = KeyObject->KeyNode;
678 KeyHive = &KeyObject->KeyHive->Hive.Hive;
679
680 /* Find the value cell index in the list of values */
681 RtlInitUnicodeString(&ValueString, ValueName);
682 CmpFindNameInList(KeyHive,
683 &KeyNode->ValueList,
684 &ValueString,
685 NULL,
686 &CellIndex);
687 if (CellIndex == HCELL_NIL)
688 {
690 }
691
692 /* Get the cell data for it */
693 KeyValue = (PCM_KEY_VALUE)HvGetCell(KeyHive, CellIndex);
694 if (!KeyValue)
695 {
697 }
698
699 /* Make sure the type matches */
700 if (KeyValue->Type != Type)
701 {
703 }
704
705 /* Now get the data cell */
706 ValueData = CmpValueToData(KeyHive, KeyValue, &Size);
707
708 /* Make a copy of it */
709 ValueCopy = BlMmAllocateHeap(Size);
710 if (!ValueCopy)
711 {
712 return STATUS_NO_MEMORY;
713 }
714
715 /* Copy it in the buffer, and return it and its size */
716 RtlCopyMemory(ValueCopy, ValueData, Size);
717 *Buffer = ValueCopy;
718 *ValueLength = Size;
719 return STATUS_SUCCESS;
720}
Type
Definition: Type.h:7
Definition: bufpool.h:45
struct _CM_KEY_VALUE * PCM_KEY_VALUE
PCELL_DATA NTAPI CmpValueToData(IN PHHIVE Hive, IN PCM_KEY_VALUE Value, OUT PULONG Length)
Definition: cmvalue.c:167
BOOLEAN NTAPI CmpFindNameInList(IN PHHIVE Hive, IN PCHILD_LIST ChildList, IN PCUNICODE_STRING Name, OUT PULONG ChildIndex OPTIONAL, OUT PHCELL_INDEX CellIndex)
Definition: cmname.c:149
#define STATUS_OBJECT_TYPE_MISMATCH
Definition: d3dkmdt.h:46
_In_ GUID _In_ PVOID ValueData
Definition: hubbusif.h:312
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
CHILD_LIST ValueList
Definition: cmdata.h:103
ULONG Type
Definition: cmdata.h:128
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
Definition: wdfregistry.h:243
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG ValueLength
Definition: wdfregistry.h:275

Referenced by BiEnumerateElements(), and BiGetObjectDescription().

◆ BiLoadHive()

NTSTATUS BiLoadHive ( _In_ PBL_FILE_PATH_DESCRIPTOR  FilePath,
_Out_ PHANDLE  HiveHandle 
)

Definition at line 369 of file bootreg.c.

373{
374 ULONG DeviceId;
375 PHBASE_BLOCK BaseBlock, NewBaseBlock;
376 PBI_KEY_OBJECT KeyObject;
378 PBL_DEVICE_DESCRIPTOR BcdDevice;
379 ULONG PathLength, DeviceLength, HiveSize, HiveLength, NewHiveSize;
380 PWCHAR HiveName, LogName;
381 BOOLEAN HaveWriteAccess;
383 PVOID LogData;
384 PHHIVE Hive;
385 UNICODE_STRING KeyString;
387 HCELL_INDEX CellIndex;
388
389 /* Initialize variables */
390 DeviceId = -1;
391 BaseBlock = NULL;
392 BcdHive = NULL;
393 KeyObject = NULL;
394 LogData = NULL;
395 LogName = NULL;
396
397 /* Initialize the crypto seed */
399 {
400 HvSymcryptSeed = 0x82EF4D887A4E55C5;
402 }
403
404 /* Extract and validate the input path */
405 BcdDevice = (PBL_DEVICE_DESCRIPTOR)&FilePath->Path;
406 PathLength = FilePath->Length;
407 DeviceLength = BcdDevice->Size;
408 HiveName = (PWCHAR)((ULONG_PTR)BcdDevice + BcdDevice->Size);
409 if (PathLength <= DeviceLength)
410 {
411 /* Doesn't make sense, bail out */
413 goto Quickie;
414 }
415
416 /* Attempt to open the underlying device for RW access */
417 HaveWriteAccess = TRUE;
418 Status = BlpDeviceOpen(BcdDevice,
420 0,
421 &DeviceId);
422 if (!NT_SUCCESS(Status))
423 {
424 /* Try for RO access instead */
425 HaveWriteAccess = FALSE;
426 Status = BlpDeviceOpen(BcdDevice, BL_DEVICE_READ_ACCESS, 0, &DeviceId);
427 if (!NT_SUCCESS(Status))
428 {
429 /* No access at all -- bail out */
430 goto Quickie;
431 }
432 }
433
434 /* Now try to load the hive on disk */
437 HiveName,
438 (PVOID*)&BaseBlock,
439 &HiveSize,
440 0,
441 FALSE,
442 NULL,
443 NULL);
444 if (!NT_SUCCESS(Status))
445 {
446 EfiPrintf(L"Hive read failure: % lx\r\n", Status);
447 goto Quickie;
448 }
449
450 /* Allocate a hive structure */
451 BcdHive = BlMmAllocateHeap(sizeof(*BcdHive));
452 if (!BcdHive)
453 {
455 goto Quickie;
456 }
457
458 /* Initialize it */
459 RtlZeroMemory(BcdHive, sizeof(*BcdHive));
460 BcdHive->BaseBlock = BaseBlock;
461 BcdHive->HiveSize = HiveSize;
462 if (HaveWriteAccess)
463 {
465 }
466
467 /* Make sure the hive was at least one bin long */
468 if (HiveSize < sizeof(*BaseBlock))
469 {
471 goto Quickie;
472 }
473
474 /* Make sure the hive contents are at least one bin long */
475 HiveLength = BaseBlock->Length;
476 if (BaseBlock->Length < sizeof(*BaseBlock))
477 {
479 goto Quickie;
480 }
481
482 /* Validate the initial bin (the base block) */
483 if (!HvIsInPlaceBaseBlockValid(BaseBlock))
484 {
485 EfiPrintf(L"Recovery not implemented\r\n");
487 goto Quickie;
488 }
489
490 /* Check if there's log recovery that needs to happen */
491 if (BaseBlock->Sequence1 != BaseBlock->Sequence2)
492 {
493 EfiPrintf(L"Log fix not implemented: %lx %lx\r\n");
495 goto Quickie;
496 }
497
498 /*
499 * Check if the whole hive doesn't fit in the buffer.
500 * Note: HiveLength does not include the size of the baseblock itself
501 */
502 if (HiveSize < (HiveLength + sizeof(*BaseBlock)))
503 {
504 EfiPrintf(L"Need bigger hive buffer path\r\n");
505
506 /* Allocate a slightly bigger buffer */
507 NewHiveSize = HiveLength + sizeof(*BaseBlock);
508 Status = MmPapAllocatePagesInRange((PVOID*)&NewBaseBlock,
510 NewHiveSize >> PAGE_SHIFT,
511 0,
512 0,
513 NULL,
514 0);
515 if (!NT_SUCCESS(Status))
516 {
517 goto Quickie;
518 }
519
520 /* Copy the current data in there */
521 RtlCopyMemory(NewBaseBlock, BaseBlock, HiveSize);
522
523 /* Free the old data */
525
526 /* Update our pointers */
527 BaseBlock = NewBaseBlock;
528 HiveSize = NewHiveSize;
529 BcdHive->BaseBlock = BaseBlock;
530 BcdHive->HiveSize = HiveSize;
531 }
532
533 /* Check if any log stuff needs to happen */
534 if (LogData)
535 {
536 EfiPrintf(L"Log fix not implemented: %lx %lx\r\n");
538 goto Quickie;
539 }
540
541 /* Call Hv to setup the hive library */
543 if (!NT_SUCCESS(Status))
544 {
545 goto Quickie;
546 }
547
548 /* Now get the root node */
549 Hive = &BcdHive->Hive.Hive;
551 if (!RootNode)
552 {
554 goto Quickie;
555 }
556
557 /* Find the Objects subkey under it to see if it's a real BCD hive */
558 RtlInitUnicodeString(&KeyString, L"Objects");
559 CellIndex = CmpFindSubKeyByName(Hive, RootNode, &KeyString);
560 if (CellIndex == HCELL_NIL)
561 {
562 EfiPrintf(L"No OBJECTS subkey found!\r\n");
564 goto Quickie;
565 }
566
567 /* This is a valid BCD hive, store its root node here */
568 BcdHive->RootNode = RootNode;
569
570 /* Allocate a copy of the file path */
571 BcdHive->FilePath = BlMmAllocateHeap(FilePath->Length);
572 if (!BcdHive->FilePath)
573 {
575 goto Quickie;
576 }
577
578 /* Make a copy of it */
579 RtlCopyMemory(BcdHive->FilePath, FilePath, FilePath->Length);
580
581 /* Create a key object to describe the rot */
582 KeyObject = BlMmAllocateHeap(sizeof(*KeyObject));
583 if (!KeyObject)
584 {
586 goto Quickie;
587 }
588
589 /* Fill out the details */
590 KeyObject->KeyNode = RootNode;
591 KeyObject->KeyHive = BcdHive;
592 KeyObject->KeyName = NULL;
593 KeyObject->KeyCell = Hive->BaseBlock->RootCell;
594
595 /* One reference for the key object, plus one lifetime reference */
596 BcdHive->ReferenceCount = 2;
597
598 /* This is the hive handle */
599 *HiveHandle = KeyObject;
600
601 /* We're all good */
603
604Quickie:
605 /* If we had a log name, free it */
606 if (LogName)
607 {
608 BlMmFreeHeap(LogName);
609 }
610
611 /* If we had logging data, free it */
612 if (LogData)
613 {
615 }
616
617 /* Check if this is the failure path */
618 if (!NT_SUCCESS(Status))
619 {
620 /* If we mapped the hive, free it */
621 if (BaseBlock)
622 {
624 }
625
626 /* If we opened the device, close it */
627 if (DeviceId != -1)
628 {
629 BlDeviceClose(DeviceId);
630 }
631
632 /* Did we create a hive object? */
633 if (BcdHive)
634 {
635 /* Free the file path if we made a copy of it */
636 if (BcdHive->FilePath)
637 {
638 BlMmFreeHeap(BcdHive->FilePath);
639 }
640
641 /* Free the hive itself */
643 }
644
645 /* Finally, free the root key object if we created one */
646 if (KeyObject)
647 {
648 BlMmFreeHeap(KeyObject);
649 }
650 }
651
652 /* Return the final status */
653 return Status;
654}
static USHORT PathLength
PCWSTR FilePath
unsigned char BOOLEAN
#define BL_DEVICE_READ_ACCESS
Definition: bl.h:152
struct _BL_DEVICE_DESCRIPTOR * PBL_DEVICE_DESCRIPTOR
#define BL_DEVICE_WRITE_ACCESS
Definition: bl.h:153
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)
Definition: pagealloc.c:707
NTSTATUS BlpDeviceOpen(_In_ PBL_DEVICE_DESCRIPTOR Device, _In_ ULONG Flags, _In_ ULONG Unknown, _Out_ PULONG DeviceId)
Definition: device.c:2111
NTSTATUS BlDeviceClose(_In_ ULONG DeviceId)
Definition: device.c:2073
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)
Definition: image.c:358
NTSTATUS BiInitializeAndValidateHive(_In_ PBI_KEY_HIVE Hive)
Definition: bootreg.c:316
ULONGLONG HvSymcryptSeed
Definition: bootreg.c:43
BOOLEAN BiHiveHashLibraryInitialized
Definition: bootreg.c:42
BOOLEAN HvIsInPlaceBaseBlockValid(_In_ PHBASE_BLOCK BaseBlock)
Definition: bootreg.c:48
HCELL_INDEX NTAPI CmpFindSubKeyByName(IN PHHIVE Hive, IN PCM_KEY_NODE Parent, IN PCUNICODE_STRING SearchName)
Definition: cmindex.c:683
#define FALSE
Definition: types.h:117
#define ULONG_PTR
Definition: config.h:101
#define PAGE_SHIFT
Definition: env_spec_w32.h:45
PCONFIGURATION_COMPONENT_DATA RootNode
Definition: macharm.c:19
static CMHIVE BcdHive
Definition: registry.c:62
ULONG Flags
Definition: cmlib.h:354
ULONG Length
Definition: hivedata.h:171
HCELL_INDEX RootCell
Definition: hivedata.h:168
ULONG Sequence1
Definition: hivedata.h:147
ULONG Sequence2
Definition: hivedata.h:148
PHBASE_BLOCK BaseBlock
Definition: hivedata.h:328
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135

Referenced by BiAddStoreFromFile().

◆ BiOpenKey()

NTSTATUS BiOpenKey ( _In_ HANDLE  ParentHandle,
_In_ PWCHAR  KeyName,
_Out_ PHANDLE  Handle 
)

Definition at line 186 of file bootreg.c.

191{
193 PBI_KEY_HIVE ParentHive;
195 SIZE_T NameLength, SubNameLength, NameBytes;
196 PWCHAR NameStart, NameBuffer;
197 UNICODE_STRING KeyString;
198 HCELL_INDEX KeyCell;
199 PHHIVE Hive;
200 PCM_KEY_NODE ParentNode;
201
202 /* Convert from a handle to our key object */
203 ParentKey = (PBI_KEY_OBJECT)ParentHandle;
204
205 /* Extract the hive and node information */
206 ParentHive = ParentKey->KeyHive;
207 ParentNode = ParentKey->KeyNode;
208 Hive = &ParentKey->KeyHive->Hive.Hive;
209
210 /* Initialize variables */
211 KeyCell = HCELL_NIL;
213 NameBuffer = NULL;
214
215 /* Loop as long as there's still portions of the key name in play */
216 NameLength = wcslen(KeyName);
217 while (NameLength)
218 {
219 /* Find the first path separator */
221 if (NameStart)
222 {
223 /* Look only at the key before the separator */
224 SubNameLength = NameStart - KeyName;
225 ++NameStart;
226 }
227 else
228 {
229 /* No path separator, this is the final leaf key */
230 SubNameLength = NameLength;
231 }
232
233 /* Free the name buffer from the previous pass if needed */
234 if (NameBuffer)
235 {
236 BlMmFreeHeap(NameBuffer);
237 }
238
239 /* Allocate a buffer to hold the name of this specific subkey only */
240 NameBytes = SubNameLength * sizeof(WCHAR);
241 NameBuffer = BlMmAllocateHeap(NameBytes + sizeof(UNICODE_NULL));
242 if (!NameBuffer)
243 {
245 goto Quickie;
246 }
247
248 /* Copy and null-terminate the name of the subkey */
249 RtlCopyMemory(NameBuffer, KeyName, NameBytes);
250 NameBuffer[SubNameLength] = UNICODE_NULL;
251
252 /* Convert it into a UNICODE_STRING and try to find it */
253 RtlInitUnicodeString(&KeyString, NameBuffer);
254 KeyCell = CmpFindSubKeyByName(Hive, ParentNode, &KeyString);
255 if (KeyCell == HCELL_NIL)
256 {
258 goto Quickie;
259 }
260
261 /* We found it -- get the key node out of it */
262 ParentNode = (PCM_KEY_NODE)HvGetCell(Hive, KeyCell);
263 if (!ParentNode)
264 {
266 goto Quickie;
267 }
268
269 /* Update the key name to the next remaining path element */
270 KeyName = NameStart;
271 if (NameStart)
272 {
273 /* Update the length to the remainder of the path */
274 NameLength += -1 - SubNameLength;
275 }
276 else
277 {
278 /* There's nothing left, this was the leaf key */
279 NameLength = 0;
280 }
281 }
282
283 /* Allocate a key object */
284 NewKey = BlMmAllocateHeap(sizeof(*NewKey));
285 if (!NewKey)
286 {
287 /* Bail out if we had no memory for it */
289 goto Quickie;
290 }
291
292 /* Fill out the key object data */
293 NewKey->KeyNode = ParentNode;
294 NewKey->KeyHive = ParentHive;
295 NewKey->KeyName = NameBuffer;
296 NewKey->KeyCell = KeyCell;
297
298 /* Add a reference to the hive */
299 ++ParentHive->ReferenceCount;
300
301 /* Return the object back to the caller */
302 *Handle = NewKey;
303
304Quickie:
305 /* If we had a name buffer, free it */
306 if (NameBuffer)
307 {
308 BlMmFreeHeap(NameBuffer);
309 }
310
311 /* Return status of the open operation */
312 return Status;
313}
#define OBJ_NAME_PATH_SEPARATOR
Definition: arcname_tests.c:25
#define wcschr
Definition: compat.h:17
ULONG Handle
Definition: gdb_input.c:15
_Must_inspect_result_ _In_opt_ WDFKEY ParentKey
Definition: wdfregistry.h:69

Referenced by BcdDeleteElement(), BcdOpenObject(), BiAddStoreFromFile(), BiDeleteKey(), BiEnumerateElements(), and BiGetObjectDescription().

◆ BlAppendBootOptionBoolean()

NTSTATUS BlAppendBootOptionBoolean ( _In_ PBL_LOADED_APPLICATION_ENTRY  AppEntry,
_In_ ULONG  OptionId,
_In_ BOOLEAN  Value 
)

Definition at line 625 of file bcdopt.c.

630{
632 PBL_BCD_OPTION Option;
633
634 /* Allocate space for the entry -- remember BOOLEANs are USHORTs in BCD */
635 Option = BlMmAllocateHeap(sizeof(*Option) + sizeof(USHORT));
636 if (!Option)
637 {
638 return STATUS_NO_MEMORY;
639 }
640
641 /* Initialize it and set the boolean to TRUE */
642 RtlZeroMemory(Option, sizeof(*Option) + sizeof(USHORT));
643 Option->DataSize = sizeof(USHORT);
644 Option->Type = OptionId;
645 Option->DataOffset = sizeof(*Option);
646 *(PBOOLEAN)(Option + 1) = Value;
647
648 /* Append it */
649 Status = BlAppendBootOptions(AppEntry, Option);
650
651 /* We're all done, free our initial option */
652 BlMmFreeHeap(Option);
653 return Status;
654}
NTSTATUS BlAppendBootOptions(_In_ PBL_LOADED_APPLICATION_ENTRY AppEntry, _In_ PBL_BCD_OPTION Options)
Definition: bcdopt.c:737
unsigned short USHORT
Defi