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.
GUID | Symbolic Name | BCDEDIT Friendly Name | Applicable Versions |
---|---|---|---|
{0CE4991B-E6B3-4B16-B23C-5E0D9250E5D9} | GUID_EMS_SETTINGS_GROUP | {emssettings} | |
{1AFA9C49-16AB-4A5C-4A90-212802DA9460} | GUID_RESUME_LOADER_SETTINGS_GROUP | {resumeloadersettings} | |
{1CAE1EB7-A0DF-4D4D-9851-4860E34EF535} | GUID_DEFAULT_BOOT_ENTRY | {default} | |
{4636856E-540F-4170-A130-A84776F4C654} | GUID_DEBUGGER_SETTINGS_GROUP | {dbgsettings} | |
{466F5A88-0AF2-4F76-9038-095B170DC21C} | GUID_WINDOWS_LEGACY_NTLDR | {legacy} {ntldr} |
|
{5189B25C-5558-4BF2-BCA4-289B11BD29E2} | GUID_BAD_MEMORY_GROUP | {badmemory} | |
{6EFB52BF-1766-41DB-A6B3-0EE5EFF72BD7} | GUID_BOOT_LOADER_SETTINGS_GROUP | {bootloadersettings} | |
{7254A080-1510-4E85-AC0F-E7FB3D444736} | GUID_WINDOWS_SETUP_EFI | ||
{7EA2E1AC-2E61-4728-AAA3-896D9D0A9F0E} | GUID_GLOBAL_SETTINGS_GROUP | {globalsettings} | |
{7FF607E0-4395-11DB-B0DE-0800200C9A66} | GUID_HYPERVISOR_SETTINGS_GROUP | {hypervisorsettings} | Windows Vista SP1, and higher |
{9DEA862C-5CDD-4E70-ACC1-F32B344D4795} | GUID_WINDOWS_BOOTMGR | {bootmgr} | |
{A1943BBC-EA85-487C-97C7-C9EDE908A38A} | GUID_WINDOWS_OS_TARGET_TEMPLATE_PCAT | ||
{A5A30FA2-3D06-4E9F-B5F4-A01DF9D1FCBA} | GUID_FIRMWARE_BOOTMGR | {fwbootmgr} | |
{AE5534E0-A924-466C-B836-758539A3EE3A} | GUID_WINDOWS_SETUP_RAMDISK_OPTIONS | {ramdiskoptions} | |
{B012B84D-C47C-4ED5-B722-C0C42163E569} | GUID_WINDOWS_OS_TARGET_TEMPLATE_EFI | ||
{B2721D73-1DB4-4C62-BF78-C548A880142D} | GUID_WINDOWS_MEMORY_TESTER | {memdiag} | |
{CBD971BF-B7B8-4885-951A-FA03044F5D71} | GUID_WINDOWS_SETUP_PCAT | ||
{FA926493-6F1C-4193-A414-58F0B2456D1E} | GUID_CURRENT_BOOT_ENTRY | {current} |
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 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 |
---|---|---|
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 |
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 BOOTMGR or WINLOAD.EXE. 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 |
---|---|
0x10100001 | /create {fwbootmgr} |
0x10100002 | /create {bootmgr} |
0x10200003 | /create /application osloader |
0x10200004 | /create /application resume |
0x10200005 | /create {memdiag} |
0x10300006 | /create {legacy} /create {ntldr} |
0x10400008 | /create /application bootsector |
0x10400009 | /create /application startup |
Type | BCDEDIT Creation Parameters | Applicable Versions |
---|---|---|
0x20100000 | /create /inherit /create {badmemory} /create {dbgsettings} /create {emssettings} /create {globalsettings} |
|
0x20200001 | /create /inherit fwbootmgr | |
0x20200002 | /create /inherit bootmgr | |
0x20200003 | /create /inherit osloader /create {bootloadersettings} |
|
/create {hypervisorsettings} | Windows Vista SP1, and higher | |
0x20200004 | /create /inherit resume /create {resumeloadersettings} |
|
0x20200005 | /create /inherit memdiag | |
0x20200006 | /create /inherit ntldr | |
0x20200007 | /create /inherit setupldr | |
0x20200008 | /create /inherit bootsector | |
0x20200009 | /create /inherit startup | |
0x20300000 | /create /inherit device |
Type | BCDEDIT Creation Parameters |
---|---|
0x30000000 | /create /device /create {ramdiskoptions} |