Geoff Chappell - Software Analyst
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} {ntldr} |
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.
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 |
all |
0x00F00000 | for application objects: image type |
1 = Firmware Application 2 = Windows Boot Application 3 = Legacy Loader Application 4 = Real-mode Application |
all |
for inherit objects: | 1 = inheritable by any object 2 = inheritable by application objects 3 = inheritable by device objects |
all | |
0x000FFFFF | application type | 1 = fwbootmgr 2 = bootmgr 3 = osloader 4 = resume 5 = memdiag 6 = ntldr 7 = setupldr 8 = bootsector 9 = startup |
all |
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.
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 |
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 |
Type | BCDEDIT Creation Parameters | Versions |
---|---|---|
0x30000000 | /create /device /create {ramdiskoptions} |
6.0 and higher |