BCD Objects

Each BCD object has a GUID, which represents the object in the BCD hive by naming a subkey of the Objects key. The following BCD objects are predefined. They are, for instance, the ones that can be specified either by GUID or by friendly name as the id parameter for the bcdedit /create and bcdedit /enum commands. Friendly names that are not disclosed by the bcdedit /? id command are highlighted as being effectively undocumented.

GUID Symbolic Name BCDEDIT Friendly Name Applicable Versions
{0CE4991B-E6B3-4B16-B23C-5E0D9250E5D9} GUID_EMS_SETTINGS_GROUP {emssettings} 6.0 and higher
{1AFA9C49-16AB-4A5C-4A90-212802DA9460} GUID_RESUME_LOADER_SETTINGS_GROUP {resumeloadersettings} 6.0 and higher
{1CAE1EB7-A0DF-4D4D-9851-4860E34EF535} GUID_DEFAULT_BOOT_ENTRY {default} 6.0 and higher
{313E8EED-7098-4586-A9BF-309C61F8D449} GUID_KERNEL_DEBUGGER_SETTINGS_GROUP {kerneldbgsettings} 6.3 and higher
{4636856E-540F-4170-A130-A84776F4C654} GUID_DEBUGGER_SETTINGS_GROUP {dbgsettings} 6.0 and higher
{eventsettings} 10.0 and higher
{466F5A88-0AF2-4F76-9038-095B170DC21C} GUID_WINDOWS_LEGACY_NTLDR {legacy}
6.0 and higher
{5189B25C-5558-4BF2-BCA4-289B11BD29E2} GUID_BAD_MEMORY_GROUP {badmemory} 6.0 and higher
{6EFB52BF-1766-41DB-A6B3-0EE5EFF72BD7} GUID_BOOT_LOADER_SETTINGS_GROUP {bootloadersettings} 6.0 and higher
{7254A080-1510-4E85-AC0F-E7FB3D444736} GUID_WINDOWS_SETUP_EFI   6.0 and higher
{7EA2E1AC-2E61-4728-AAA3-896D9D0A9F0E} GUID_GLOBAL_SETTINGS_GROUP {globalsettings} 6.0 and higher
{7FF607E0-4395-11DB-B0DE-0800200C9A66} GUID_HYPERVISOR_SETTINGS_GROUP {hypervisorsettings} 6.0 SP1 and higher
{9DEA862C-5CDD-4E70-ACC1-F32B344D4795} GUID_WINDOWS_BOOTMGR {bootmgr} 6.0 and higher
{A1943BBC-EA85-487C-97C7-C9EDE908A38A} GUID_WINDOWS_OS_TARGET_TEMPLATE_PCAT   6.0 and higher
{A5A30FA2-3D06-4E9F-B5F4-A01DF9D1FCBA} GUID_FIRMWARE_BOOTMGR {fwbootmgr} 6.0 and higher
{AE5534E0-A924-466C-B836-758539A3EE3A} GUID_WINDOWS_SETUP_RAMDISK_OPTIONS {ramdiskoptions} 6.0 and higher
{B012B84D-C47C-4ED5-B722-C0C42163E569} GUID_WINDOWS_OS_TARGET_TEMPLATE_EFI   6.0 and higher
{B2721D73-1DB4-4C62-BF78-C548A880142D} GUID_WINDOWS_MEMORY_TESTER {memdiag} 6.0 and higher
{CBD971BF-B7B8-4885-951A-FA03044F5D71} GUID_WINDOWS_SETUP_PCAT   6.0 and higher
{FA926493-6F1C-4193-A414-58F0B2456D1E} GUID_CURRENT_BOOT_ENTRY {current} 6.0 and higher

Of these, the {current} and {default} objects are special. The GUIDs given above for these objects do not name an Objects subkey. Instead, they are aliases for BCDEDIT to resolve to the GUIDs for the BCD objects that represent respectively the currently running operating system and the (possibly different) operating system that would have started by default.

The GUID_WINDOWS_OS_TARGET_TEMPLATE_PCAT and GUID_WINDOWS_OS_TARGET_TEMPLATE_EFI objects are not enumerated by bcdedit /enum in Windows Vista, but are in Windows 7 and higher when the /v switch is also given.

Other BCD objects can be created, of course, but they do not have predefined GUIDs.

Object Type

Every BCD object, whether pre-defined or not, has a type, actually stored as the DWORD data for the Type value in the object’s Description subkey. Broadly speaking, there are application objects, inherit objects and device objects.

The Type value is interpreted as bit fields:

Mask Interpretation Values Versions
0xF0000000 object type 1 = application object
2 = inherit object
3 = device object
0x00F00000 for application objects:
image type
1 = Firmware Application
2 = Windows Boot Application
3 = Legacy Loader Application
4 = Real-mode Application
for inherit objects: 1 = inheritable by any object
2 = inheritable by application objects
3 = inheritable by device objects
0x000FFFFF application type 1 = fwbootmgr
2 = bootmgr
3 = osloader
4 = resume
5 = memdiag
6 = ntldr
7 = setupldr
8 = bootsector
9 = startup
10 = bootapp 1607 and higher

It seems that not all combinations are supported. Indeed, the interpretation is anyway not rigid: though it may be meaningful to BCDEDIT, it appears to have little, if any, signficance to either the boot manager or the Windows loader. More investigation is required. What can be said with certainty is that the bcdedit /create command provides for only the combinations that are shown in the following tables.

Application Objects

Type BCDEDIT Creation Parameters Versions
0x10100001 /create {fwbootmgr} 6.0 and higher
0x10100002 /create {bootmgr} 6.0 and higher
0x10200003 /create /application osloader 6.0 and higher
0x10200004 /create /application resume 6.0 and higher
0x10200005 /create {memdiag} 6.0 and higher
0x10300006 /create {ntldr} 6.0 and higher
0x10400008 /create /application bootsector 6.0 and higher
0x10400009 /create /application startup 6.0 and higher
0x1020000A /create /application bootapp 1607 and higher

Inherit Objects

Type BCDEDIT Creation Parameters Versions
0x20100000 /create /inherit
/create {badmemory}
/create {dbgsettings}
/create {emssettings}
/create {globalsettings}
6.0 and higher
0x20200001 /create /inherit fwbootmgr 6.0 and higher
0x20200002 /create /inherit bootmgr 6.0 and higher
0x20200003 /create /inherit osloader
/create {bootloadersettings}
6.0 and higher
/create {hypervisorsettings} 6.0 SP1 and higher
/create {kerneldbgsettings} 6.3 and higher
0x20200004 /create /inherit resume
/create {resumeloadersettings}
6.0 and higher
0x20200005 /create /inherit memdiag 6.0 and higher
0x20200006 /create /inherit ntldr 6.0 and higher
0x20200007 /create /inherit setupldr 6.0 and higher
0x20200008 /create /inherit bootsector 6.0 and higher
0x20200009 /create /inherit startup 6.0 and higher
0x20300000 /create /inherit device 6.0 and higher

Device Objects

Type BCDEDIT Creation Parameters Versions
0x30000000 /create /device
/create {ramdiskoptions}
6.0 and higher