#define BCD_TYPE_BOOLEAN 0x06
#define BCD_TYPE_INTEGER_LIST 0x07
+#define BCD_IMAGE_TYPE_FIRMWARE 0x01
+#define BCD_IMAGE_TYPE_BOOT_APP 0x02
+#define BCD_IMAGE_TYPE_NTLDR 0x03
+#define BCD_IMAGE_TYPE_REAL_MODE 0x04
+
+#define BCD_APPLICATION_TYPE_FWBOOTMGR 0x01
+#define BCD_APPLICATION_TYPE_BOOTMGR 0x02
+#define BCD_APPLICATION_TYPE_OSLOADER 0x03
+#define BCD_APPLICATION_TYPE_RESUME 0x04
+#define BCD_APPLICATION_TYPE_MEMDIAG 0x05
+#define BCD_APPLICATION_TYPE_NTLDR 0x06
+#define BCD_APPLICATION_TYPE_SETUPLDR 0x07
+#define BCD_APPLICATION_TYPE_BOOTSECTOR 0x08
+#define BCD_APPLICATION_TYPE_STARTUPCOM 0x09
+
+#define BCD_OBJECT_TYPE_APPLICATION 0x01
+#define BCD_OBJECT_TYPE_INHERIT 0x02
+#define BCD_OBJECT_TYPE_DEVICE 0x03
+
typedef enum BcdLibraryElementTypes
{
BcdLibraryDevice_ApplicationDevice = 0x11000001,
BcdLibraryInteger_FveBandId = 0x1500004C,
BcdLibraryBoolean_ConsoleExtendedInput = 0x16000050,
BcdLibraryInteger_GraphicsResolution = 0x15000052,
+ BcdLibraryInteger_DisplayMessage = 0x15000065, /* Undocumented */
+ BcdLibraryInteger_DisplayMessageOverride = 0x15000066, /* Undocumented */
+ BcdLibraryInteger_UndocumentedMagic = 0x15000075, /* Undocumented magic */
BcdLibraryBoolean_RestartOnFailure = 0x16000053,
BcdLibraryBoolean_GraphicsForceHighestMode = 0x16000054,
BcdLibraryBoolean_IsolatedExecutionContext = 0x16000060,
BcdOSLoaderInteger_DriverLoadFailurePolicy = 0x250000c1,
BcdOSLoaderInteger_BootMenuPolicy = 0x250000C2,
BcdOSLoaderBoolean_AdvancedOptionsOneTime = 0x260000C3,
+ BcdOSLoaderBoolean_OptionsEditOneTime = 0x260000C4, /* Undocumented */
BcdOSLoaderInteger_BootStatusPolicy = 0x250000E0,
BcdOSLoaderBoolean_DisableElamDrivers = 0x260000E1,
BcdOSLoaderInteger_HypervisorLaunchType = 0x250000F0,
BcdBootMgrBoolean_PersistBootSequence = 0x26000031
} BcdBootMgrElementTypes;
+typedef enum _BcdResumeElementTypes {
+ Reserved1 = 0x21000001,
+ Reserved2 = 0x22000002,
+ BcdResumeBoolean_UseCustomSettings = 0x26000003,
+ BcdResumeDevice_AssociatedOsDevice = 0x21000005,
+ BcdResumeBoolean_DebugOptionEnabled = 0x26000006,
+ BcdResumeInteger_BootMenuPolicy = 0x25000008
+} BcdResumeElementTypes;
+
+/* Undocumented */
+typedef enum BcdStartupElementTypes
+{
+ BcdStartupBoolean_PxeSoftReboot = 0x26000001,
+ BcdStartupString_PxeApplicationName = 0x22000002,
+} BcdStartupElementTypes;
+
/* DATA STRUCTURES ***********************************************************/
typedef struct
{
union
{
- ULONG PackedValue;
+ ULONG PackedValue;
struct
{
ULONG SubType : 24;
};
} BcdElementType;
+typedef struct
+{
+ union
+ {
+ ULONG PackedValue;
+ union
+ {
+ struct
+ {
+ ULONG ApplicationCode : 20;
+ ULONG ImageCode : 4;
+ ULONG Reserved : 4;
+ ULONG ObjectCode : 4;
+ } Application;
+ struct
+ {
+ ULONG Value : 20;
+ ULONG ClassCode : 4;
+ ULONG Reserved : 4;
+ ULONG ObjectCode : 4;
+ } Inherit;
+ struct
+ {
+ ULONG Reserved:28;
+ ULONG ObjectCode : 4;
+ } Device;
+ };
+ };
+} BcdObjectType;
+
typedef struct _BCD_ELEMENT_HEADER
{
ULONG Version;
BL_DEVICE_DESCRIPTOR DeviceDescriptor;
} BCD_DEVICE_OPTION, *PBCD_DEVICE_OPTION;
+typedef struct _BCD_OBJECT_DESCRIPTION
+{
+ ULONG Valid;
+ ULONG Type;
+} BCD_OBJECT_DESCRIPTION, *PBCD_OBJECT_DESCRIPTION;
+
/* FUNCTIONS ******************************************************************/
NTSTATUS
_Out_ PULONG ElementCount
);
+NTSTATUS
+BiGetObjectDescription (
+ _In_ HANDLE ObjectHandle,
+ _Out_ PBCD_OBJECT_DESCRIPTION Description
+ );
+
#endif