CURRENT WORK ITEM - PREVIEW ONLY

BCD Elements

Each BCD element is its own subkey. The name of the subkey is a representation in hexadecimal digits of a DWORD that the BCDEDIT help text refers to as a datatype.

Element Type

The element type is interpreted as bit fields:

Mask Interpretation Values
0xF0000000 class 1 = library
2 = application
3 = device
4 = hidden
0x0F000000 format 1 = device
2 = string
3 = GUID
4 = GUID list
5 = integer
6 = boolean
7 = integer list

Elements whose class is 4 are hidden in the sense that the bcdedit /enum command does not reveal them.

Supported Elements

The following tables list the BCD elements that are yet known in any of several senses. Each is shown first by the numeric constant that represents it in binary code. A second column gives either or both of the symbolic names by which the element seems to be known in source code. The last two columns attend particularly to how the element is worked with through the BCDEDIT tool.

The symbolic name in mixed case and starting with “Bcd” is from the type library in BCDSRV.DLL and is the name to use for programmatic access to the element through the Windows Management Instrumentation (WMI) interface. This symbol is highlighted yellow if it is defined in the type library but is omitted from the BCD Reference in the Windows Vista SDK (dated January 2007).

The symbolic names that are in all capitals and start with “BCDE” are extracted from tables in BCDEDIT.EXE. No use of these names is made by BCDEDIT. Perhaps they were included in BCDEDIT’s tables of elements as an aid during development, such that their persistence in the retail release may be inadvertent (as might happen easily enough if the tables are constructed in the source code by using macros). None of these names are known to be documented.

The friendly name is the one to use with BCDEDIT. It is highlighted yellow if it is not described by any bcdedit /? command. (For completeness, it must be admitted that a few of these are described in BCDEDIT string resources that are not used for help text.)

Library Elements

The following apply to all object types.

Constant Symbolic Names Friendly Name Format or Value
0x11000001 BcdLibraryDevice_ApplicationDevice
BCDE_LIBRARY_TYPE_APPLICATION_DEVICE
device device
0x12000002 BcdLibraryString_ApplicationPath
BCDE_LIBRARY_TYPE_APPLICATION_PATH
path string
0x12000004 BcdLibraryString_Description
BCDE_LIBRARY_TYPE_DESCRIPTION
description string
0x12000005 BcdLibraryString_PreferredLocale
BCDE_LIBRARY_TYPE_PREFERRED_LOCALE
locale string
0x14000006 BcdLibraryObjectList_InheritedObjects
BCDE_LIBRARY_TYPE_INHERIT
inherit GUID list
0x15000007 BcdLibraryInteger_TruncatePhysicalMemory
BCDE_LIBRARY_TYPE_TRUNCATE_PHYSICAL_MEMORY
truncatememory integer
0x14000008 BcdLibraryObjectList_RecoverySequence
BCDE_LIBRARY_TYPE_RECOVERY_SEQUENCE
recoverysequence GUID list
0x16000009 BcdLibraryBoolean_AutoRecoveryEnabled
BCDE_LIBRARY_TYPE_AUTO_RECOVERY_ENABLED
recoveryenabled boolean
0x1700000A BcdLibraryIntegerList_BadMemoryList
BCDE_LIBRARY_TYPE_BAD_MEMORY_LIST
badmemorylist integer list
0x1600000B BcdLibraryBoolean_AllowBadMemoryAccess
BCDE_LIBRARY_TYPE_ALLOW_BAD_MEMORY_ACCESS
badmemoryaccess boolean
0x1500000C BcdLibraryInteger_FirstMegabytePolicy
BCDE_LIBRARY_TYPE_FIRST_MEGABYTE_POLICY
firstmegabytepolicy 0 = UseNone
1 = UseAll
2 = UsePrivate
0x16000010 BcdLibraryBoolean_DebuggerEnabled
BCDE_LIBRARY_TYPE_DEBUGGER_ENABLED
bootdebug boolean
0x15000011 BcdLibraryInteger_DebuggerType
BCDE_LIBRARY_TYPE_DEBUGGER_TYPE
debugtype 0 = Serial
1 = 1394
2 = USB
0x15000012 BcdLibraryInteger_SerialDebuggerPortAddress
BCDE_LIBRARY_TYPE_DEBUGGER_PORT_ADDRESS
debugaddress integer
0x15000013 BcdLibraryInteger_SerialDebuggerPort
BCDE_LIBRARY_TYPE_DEBUGGER_PORT_NUMBER
debugport integer
0x15000014 BcdLibraryInteger_SerialDebuggerBaudRate
BCDE_LIBRARY_TYPE_DEBUGGER_BAUDRATE
baudrate integer
0x15000015 BcdLibraryInteger_1394DebuggerChannel
BCDE_LIBRARY_TYPE_DEBUGGER_1394_CHANNEL
channel integer
0x12000016 BcdLibraryString_UsbDebuggerTargetName
BCDE_LIBRARY_TYPE_DEBUGGER_USB_TARGETNAME
targetname string
0x16000017 BcdLibraryBoolean_DebuggerIgnoreUsermodeExceptions
BCDE_LIBRARY_TYPE_DEBUGGER_IGNORE_USERMODE_EXCEPTIONS
noumex boolean
0x15000018 BcdLibraryInteger_DebuggerStartPolicy
BCDE_LIBRARY_TYPE_DEBUGGER_START_POLICY
debugstart 0 = Active
1 = AutoEnable
2 = Disable
0x16000020 BcdLibraryBoolean_EmsEnabled
BCDE_LIBRARY_TYPE_EMS_ENABLED
bootems boolean
0x15000022 BcdLibraryInteger_EmsPort
BCDE_LIBRARY_TYPE_EMS_PORT_NUMBER
emsport integer
0x15000023 BcdLibraryInteger_EmsBaudRate
BCDE_LIBRARY_TYPE_EMS_BAUDRATE
emsbaudrate integer
0x12000030 BcdLibraryString_LoadOptionsString
BCDE_LIBRARY_TYPE_LOAD_OPTIONS_STRING
loadoptions string
0x16000040 BCDE_LIBRARY_TYPE_DISPLAY_ADVANCED_OPTIONS
BcdLibraryBoolean_DisplayAdvancedOptions
advancedoptions boolean
0x16000041 BcdLibraryBoolean_DisplayOptionsEdit
BCDE_LIBRARY_TYPE_DISPLAY_OPTIONS_EDIT
optionsedit boolean
0x15000042 BcdLibraryInteger_FVEKeyRingAddress
BCDE_LIBRARY_TYPE_FVE_KEYRING_ADDRESS
keyringaddress integer
0x11000043 (device for boot status data log)   device
0x12000044 (file path for boot status data log)   string
0x16000045 (append to boot status data log)   boolean
0x16000046 BcdLibraryBoolean_GraphicsModeDisabled
BCDE_LIBRARY_TYPE_GRAPHICS_MODE_DISABLED
graphicsmodedisabled boolean
0x15000047 BcdLibraryInteger_ConfigAccessPolicy
BCDE_LIBRARY_TYPE_CONFIG_ACCESS_POLICY
configaccesspolicy 0 = Default
1 = DisallowMmConfig
0x16000048 BcdLibraryBoolean_DisableIntegrityChecks
BCDE_LIBRARY_TYPE_DISABLE_INTEGRITY_CHECKS
nointegritychecks boolean
0x16000049 BcdLibraryBoolean_AllowPrereleaseSignatures
BCDE_LIBRARY_TYPE_ALLOW_PRERELEASE_SIGNATURES
testsigning boolean
0x16000050 BCDE_LIBRARY_TYPE_CONSOLE_EXTENDED_INPUT extendedinput boolean
0x15000051 BCDE_LIBRARY_TYPE_INITIAL_CONSOLE_INPUT initialconsoleinput integer

The elements 0x11000043, 0x12000044 and 0x16000045 seem not to be documented anywhere. They can be worked with through BCDEDIT only as custom types, e.g., with custom:11000043 where a friendly name might otherwise be used.

Application-Specific Elements

An element whose type has 2 in its most significant 4 bits is interpreted according to its containing object. Note especially that two elements may have the same numerical type but completely different interpretations because they are meant for use with different types of object.

FWBOOTMGR and BOOTMGR Elements

The following elements are known for object types 1XX00001, 1XX00002, 2X200001 and 2X200002. The first two types can be created through BCDEDIT as {fwbootmgr} or {bootmgr}, respectively. For the last two, add the /inherit switch.

Constant Symbolic Name Friendly Name Format
0x24000001 BcdBootMgrObjectList_DisplayOrder
BCDE_BOOTMGR_TYPE_DISPLAY_ORDER
displayorder GUID list
0x24000002 BcdBootMgrObjectList_BootSequence
BCDE_BOOTMGR_TYPE_BOOT_SEQUENCE
bootsequence GUID list
0x23000003 BcdBootMgrObject_DefaultObject
BCDE_BOOTMGR_TYPE_DEFAULT_OBJECT
default GUID
0x25000004 BcdBootMgrInteger_Timeout
BCDE_BOOTMGR_TYPE_TIMEOUT
timeout integer
0x26000005 BcdBootMgrBoolean_AttemptResume
BCDE_BOOTMGR_TYPE_ATTEMPT_RESUME
resume boolean
0x23000006 BcdBootMgrObject_ResumeObject
BCDE_BOOTMGR_TYPE_RESUME_OBJECT
resumeobject GUID
0x24000010 BcdBootMgrObjectList_ToolsDisplayOrder
BCDE_BOOTMGR_TYPE_TOOLS_DISPLAY_ORDER
toolsdisplayorder GUID list
0x26000020 BCDE_BOOTMGR_TYPE_DISPLAY_BOOT_MENU displaybootmenu boolean
0x26000021 BcdBootMgrBoolean_NoErrorDisplay
BCDE_BOOTMGR_TYPE_NO_ERROR_DISPLAY
noerrordisplay boolean
0x21000022 BcdBootMgrDevice_BcdDevice
BCDE_BOOTMGR_TYPE_BCD_DEVICE
bcddevice device
0x22000023 BcdBootMgrString_BcdFilePath
BCDE_BOOTMGR_TYPE_BCD_FILEPATH
bcdfilepath string
0x27000030 BCDE_BOOTMGR_TYPE_CUSTOM_ACTIONS_LIST customactions integer list

OSLOADER Elements

The following elements are known for object types 1XX00003 and 2X200003. The first type can be created through BCDEDIT with the switch /application osloader, the second type either with the /inherit osloader switch or as the built-in {bootloadersettings} object.

Constant Symbolic Name Friendly Name Format or Value
0x21000001 BcdOSLoaderDevice_OSDevice
BCDE_OSLOADER_TYPE_OS_DEVICE
osdevice device
0x22000002 BcdOSLoaderString_SystemRoot
BCDE_OSLOADER_TYPE_SYSTEM_ROOT
systemroot string
0x23000003 BcdOSLoaderObject_AssociatedResumeObject
BCDE_OSLOADER_TYPE_ASSOCIATED_RESUME_OBJECT
resumeobject GUID
0x26000010 BcdOSLoaderBoolean_DetectKernelAndHal
BCDE_OSLOADER_TYPE_DETECT_KERNEL_AND_HAL
detecthal boolean
0x22000011 BcdOSLoaderString_KernelPath
BCDE_OSLOADER_TYPE_KERNEL_PATH
kernel string
0x22000012 BcdOSLoaderString_HalPath
BCDE_OSLOADER_TYPE_HAL_PATH
hal string
0x22000013 BcdOSLoaderString_DbgTransportPath
BCDE_OSLOADER_TYPE_DBG_TRANSPORT_PATH
dbgtransport string
0x25000020 BcdOSLoaderInteger_NxPolicy
BCDE_OSLOADER_TYPE_NX_POLICY
nx 0 = OptIn
1 = OptOut
2 = AlwaysOff
3 = AlwaysOn
0x25000021 BcdOSLoaderInteger_PAEPolicy
BCDE_OSLOADER_TYPE_PAE_POLICY
pae 0 = Default
1 = ForceEnable
2 = ForceDisable
0x26000022 BcdOSLoaderBoolean_WinPEMode
BCDE_OSLOADER_TYPE_WINPE
winpe boolean
0x26000024 BcdOSLoaderBoolean_DisableCrashAutoReboot
BCDE_OSLOADER_TYPE_DISABLE_CRASH_AUTOREBOOT
nocrashautoreboot boolean
0x26000025 BcdOSLoaderBoolean_UseLastGoodSettings
BCDE_OSLOADER_TYPE_LAST_GOOD_SETTINGS
lastknowngood boolean
0x26000026 BcdOSLoaderBoolean_DisableIntegrityChecks
BCDE_OSLOADER_TYPE_DISABLE_INTEGRITY_CHECKS
oslnointegritychecks boolean
0x26000027 BcdOSLoaderBoolean_AllowPrereleaseSignatures
BCDE_OSLOADER_TYPE_ALLOW_PRERELEASE_SIGNATURES
osltestsigning boolean
0x26000030 BcdOSLoaderBoolean_NoLowMemory
BCDE_OSLOADER_TYPE_NO_LOW_MEMORY
nolowmem boolean
0x25000031 BcdOSLoaderInteger_RemoveMemory
BCDE_OSLOADER_TYPE_REMOVE_MEMORY
removememory integer
0x25000032 BcdOSLoaderInteger_IncreaseUserVa
BCDE_OSLOADER_TYPE_INCREASE_USER_VA
increaseuserva integer
0x25000033 BcdOSLoaderInteger_PerformaceDataMemory
BCDE_OSLOADER_TYPE_PERFORMANCE_DATA_MEMORY
perfmem integer
0x26000040 BcdOSLoaderBoolean_UseVgaDriver
BCDE_OSLOADER_TYPE_USE_VGA_DRIVER
vga boolean
0x26000041 BcdOSLoaderBoolean_DisableBootDisplay
BCDE_OSLOADER_TYPE_DISABLE_BOOT_DISPLAY
quietboot boolean
0x26000042 BcdOSLoaderBoolean_DisableVesaBios
BCDE_OSLOADER_TYPE_DISABLE_VESA_BIOS
novesa boolean
0x25000050 BcdOSLoaderInteger_ClusterModeAddressing
BCDE_OSLOADER_TYPE_CLUSTERMODE_ADDRESSING
clustermodeaddressing integer
0x26000051 BcdOSLoaderBoolean_UsePhysicalDestination
BCDE_OSLOADER_TYPE_USE_PHYSICAL_DESTINATION
usephysicaldestination boolean
0x25000052 BcdOSLoaderInteger_RestrictApicCluster
BCDE_OSLOADER_TYPE_RESTRICT_APIC_CLUSTER
restrictapiccluster integer
0x26000060 BcdOSLoaderBoolean_UseBootProcessorOnly
BCDE_OSLOADER_TYPE_BOOT_PROCESSOR_ONLY
onecpu boolean
0x25000061 BcdOSLoaderInteger_NumberOfProcessors
BCDE_OSLOADER_TYPE_NUMBER_OF_PROCESSORS
numproc integer
0x26000062 BcdOSLoaderBoolean_ForceMaximumProcessors
BCDE_OSLOADER_TYPE_MAXIMUM_PROCESSORS
maxproc boolean
0x25000063 BcdOSLoaderBoolean_ProcessorConfigurationFlags
BCDE_OSLOADER_TYPE_PROCESSOR_CONFIGURATION_FLAGS
configflags integer
0x26000070 BcdOSLoaderInteger_UseFirmwarePciSettings
BCDE_OSLOADER_TYPE_USE_FIRMWARE_PCI_SETTINGS
usefirmwarepcisettings boolean
0x25000071 BcdOSLoaderInteger_MsiPolicy
BCDE_OSLOADER_TYPE_MSI_POLICY
msi 0 = Default
1 = ForceDisable
0x25000072 BCDE_OSLOADER_TYPE_PCI_EXPRESS_POLICY pciexpress 0 = Default
1 = ForceDisable
0x25000080 BcdOSLoaderInteger_SafeBoot
BCDE_OSLOADER_TYPE_SAFEBOOT
safeboot 0 = Minimal
1 = Network
2 = DsRepair
0x26000081 BcdOSLoaderBoolean_SafeBootAlternateShell
BCDE_OSLOADER_TYPE_SAFEBOOT_ALTERNATE_SHELL
safebootalternateshell boolean
0x26000090 BcdOSLoaderBoolean_BootLogInitialization
BCDE_OSLOADER_TYPE_LOG_INITIALIZATION
bootlog boolean
0x26000091 BcdOSLoaderBoolean_VerboseObjectLoadMode
BCDE_OSLOADER_TYPE_SOS
sos boolean
0x260000A0 BcdOSLoaderBoolean_KernelDebuggerEnabled
BCDE_OSLOADER_TYPE_KERNEL_DEBUGGER_ENABLED
debug boolean
0x260000A1 BcdOSLoaderBoolean_DebuggerHalBreakpoint
BCDE_OSLOADER_TYPE_DEBUGGER_HAL_BREAKPOINT
halbreakpoint boolean
0x260000B0 BcdOSLoaderBoolean_EmsEnabled
BCDE_OSLOADER_TYPE_KERNEL_EMS_ENABLED
ems boolean
0x250000C0 BCDE_OSLOADER_TYPE_FORCE_FAILURE   0 = Load
1 = Hive
2 = Acpi
3 = General
0x250000C1 BcdOSLoaderInteger_DriverLoadFailurePolicy
BCDE_OSLOADER_TYPE_DRIVER_LOAD_FAILURE_POLICY
driverloadfailurepolicy 0 = Fatal
1 = UseErrorControl
0x250000E0 BcdOSLoaderInteger_BootStatusPolicy
BCDE_OSLOADER_TYPE_BOOT_STATUS_POLICY
bootstatuspolicy 0 = DisplayAllFailures
1 = IgnoreAllFailures
2 = IgnoreShutdownFailures
3 = IgnoreBootFailures

The (mis)spelling of BcdOSLoaderInteger_PerformaceDataMemory is Microsoft’s. The BcdOSLoaderInteger_MsiPolicy symbol is documented in the Windows Vista SDK even though the BCDSRV type library does not define it (the documentation and implementation presumably having got out of sync).

The element 0x250000C0 has no friendly name. It can be worked with through BCDEDIT only as a custom type, e.g., with custom:250000C0 where a friendly name might otherwise be used.

RESUME Elements

The following elements are known for object types 1XX00004 and 2X200004. The first type can be created through BCDEDIT with the switch /application resume, the second type either with the /inherit resume switch or as the built-in {resumeloadersettings} object.

Constant Symbolic Name Friendly Name Format
0x21000001 BcdResumeDevice_HiberFileDevice
BCDE_RESUME_LOADER_TYPE_HIBERFILE_DEVICE
filedevice device
0x22000002 BcdResumeString_HiberFilePath
BCDE_RESUME_LOADER_TYPE_HIBERFILE_PATH
filepath string
0x26000003 BcdResumeBoolean_UseCustomSettings
BCDE_RESUME_LOADER_TYPE_USE_CUSTOM_SETTINGS
customsettings boolean
0x26000004 BcdResumeBoolean_x86PaeMode
BCDE_RESUME_LOADER_TYPE_X86_PAE_MODE
pae boolean
0x21000005 BcdResumeDevice_AssociatedOsDevice
BCDE_RESUME_LOADER_TYPE_ASSOCIATED_OS_DEVICE
associatedosdevice device
0x26000006 BCDE_RESUME_LOADER_TYPE_DEBUG_OPTION_ENABLED debugoptionenabled boolean

Where BCDEDIT lists the pae option among the “entries for the resume loader”, it erroneously describes the option as taking integer values, specifically those of the OSLOADER element to which BCDEDIT gives the same friendly name.

MEMDIAG Elements

The following elements are known for object types 1XX00005 and 2X200005. The first type can be created through BCDEDIT as the built-in {memdiag} object. For the second, use the /inherit memdiag switch.

Constant Symbolic Name Friendly Name Format or Value
0x25000001 BcdMemDiagInteger_PassCount
BCDE_MEMTEST_TYPE_PASS_COUNT
passcount integer
0x25000002 BcdMemDiagInteger_TestMix
BCDE_MEMTEST_TYPE_TESTMIX
testmix 0 = Basic
1 = Extended
0x25000003 BcdMemDiagInteger_FailureCount
BCDE_MEMTEST_TYPE_FAILURE_COUNT
failurecount integer
0x25000004 BcdMemDiagInteger_TestToFail
BCDE_MEMTEST_TYPE_TEST_TO_FAIL
testtofail 0 = Stride
1 = Mats
2 = InverseCoupling
3 = RandomPattern
4 = Checkerboard

NTLDR and SETUPLDR Elements

The following elements are known for object types 1XX00006, 1XX00007, 2X200006 and 2X200007. The first type can be created through BCDEDIT as either {legacy} or {ntldr}. The second cannot be created with BCDEDIT. For the last two, use the /inherit ntldr and /inherit setupldr switches, respectively.

Constant Symbolic Name Friendly Name Format
0x22000001 BCDE_LEGACY_LOADER_TYPE_BPB_STRING bpbstring string

STARTUP Elements

The following elements are known for object types 1XX00009 and 2X200009. These types can be created through BCDEDIT with the /application startup and /inherit startup switches, respectively.

Constant Symbolic Name Friendly Name Format
0x26000001 BCDE_STARTUP_TYPE_PXE_SOFT_REBOOT pxesoftreboot boolean
0x22000002 BCDE_STARTUP_TYPE_PXE_APPLICATION_NAME applicationname string

Device Elements

The following elements are known for object types 2X3XXXXX and 3XXXXXXX. To create the first type with BCDEDIT, use the /inherit device switch. The second type can be created through BCDEDIT either as the built-in object {ramdiskoptions} or with the /device switch.

Constant Symbolic Name Friendly Name Format
0x35000001 BcdDeviceInteger_RamdiskImageOffset
BCDE_DEVICE_TYPE_RAMDISK_IMAGE_OFFSET
ramdiskimageoffset integer
0x35000002 BcdDeviceInteger_TftpClientPort
BCDE_DEVICE_TYPE_RAMDISK_TFTP_CLIENT_PORT
ramdisktftpclientport integer
0x31000003 BcdDeviceDevice_SdiDevice
BCDE_DEVICE_TYPE_RAMDISK_SDI_DEVICE
ramdisksdidevice device
0x32000004 BcdDeviceString_SdiPath
BCDE_DEVICE_TYPE_RAMDISK_SDI_PATH
ramdisksdipath string
0x35000005 BcdDeviceInteger_RamdiskImageLength
BCDE_DEVICE_TYPE_RAMDISK_IMAGE_LENGTH
ramdiskimagelength integer
0x36000006 BcdDeviceBoolean_ExportAsCdRamdiskImageOffset
BCDE_DEVICE_TYPE_RAMDISK_EXPORT_AS_CD
exportascd boolean
0x35000007 BcdDeviceInteger_TftpBlockSize
BCDE_DEVICE_TYPE_RAMDISK_TFTP_BLOCK_SIZE
ramdisktftpblocksize integer

Setup Template Elements

The following elements are unknown to BCDEDIT. They have no friendly name and are exempt from enumeration by any bcdedit /enum command.

Constant Symbolic Name Format
0x41000001 BcdSetupInteger_DeviceType integer
0x42000002 BcdSetupString_ApplicationRelativePath string
0x42000003 BcdSetupString_RamdiskDeviceRelativePath string
0x46000004 BcdSetupBoolean_OmitOsLoaderElements boolean
0x46000010 BcdSetupBoolean_RecoveryOs boolean