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.

The datatype is interpreted as bit fields:

Mask Interpretation Values
0xF0000000 class 1 = library
2 = application
3 = device
4 = template
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 in the original Windows Vista does not reveal them. However, Windows 7 enumerates them when also given the /v switch (for verbose mode).

Defined 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, i.e., where it must be correct if it’s to be recognised by the loader and properly interpreted. A second column gives either or both of the symbolic names by which the element seems to be known in source code. The third and fourth columns attend particularly to how the element is worked with through the BCDEDIT tool. A final column attempts to summarise the history, both of the element and of its programmatic support (which is sometimes not straightforward).

The symbolic name in mixed case, always beginning with “Bcd”, is from the type library in BCDSRV.DLL. It 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 for the original Windows Vista but is omitted from the BCD Reference in the Windows Vista SDK dated January 2007. Updating for later versions may be attempted some time. The history is complicated on two counts. First is that many of the elements have no WMI symbol until some later version. Second is the astonishing lack of care: these are the symbols that Microsoft passes off as its support for programming BCD elements, yet some are misleadingly named in some versions and some even evaluate to the wrong numbers!

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. Curiously, a few of these are described in BCDEDIT string resources that are not used for help text. Again, this indication of documentation status dates from Windows Vista. Bringing it up to date is not trivial: some elements make it to the help text in some versions but not in all.

Global Elements

The following apply to all object types.

Library Elements

Until Windows 10, all the elements that can be in any object type are Library elements.

Constant Symbolic Names Friendly Name Format or Value Versions
0x11000001 BcdLibraryDevice_ApplicationDevice
device device 6.0 and higher
0x12000002 BcdLibraryString_ApplicationPath
path string 6.0 and higher
0x12000004 BcdLibraryString_Description
description string 6.0 and higher
0x12000005 BcdLibraryString_PreferredLocale
locale string 6.0 and higher
0x14000006 BcdLibraryObjectList_InheritedObjects
inherit GUID list 6.0 and higher
0x15000007 BcdLibraryInteger_TruncatePhysicalMemory
truncatememory integer 6.0 and higher
0x14000008 BcdLibraryObjectList_RecoverySequence
recoverysequence GUID list 6.0 and higher
0x16000009 BcdLibraryBoolean_AutoRecoveryEnabled
recoveryenabled boolean 6.0 and higher
0x1700000A BcdLibraryIntegerList_BadMemoryList
badmemorylist integer list 6.0 and higher
0x1600000B BcdLibraryBoolean_AllowBadMemoryAccess
badmemoryaccess boolean 6.0 and higher
0x1500000C BcdLibraryInteger_FirstMegabytePolicy
firstmegabytepolicy 0 = UseNone
1 = UseAll
2 = UsePrivate
6.0 and higher
0x1500000D BcdLibraryInteger_RelocatePhysicalMemory
relocatephysical integer 6.0 from Windows Vista SP1, and higher
0x1500000E BCDE_LIBRARY_TYPE_AVOID_LOW_PHYSICAL_MEMORY avoidlowmemory integer 6.1 and higher
BcdLibraryInteger_AvoidLowPhysicalMemory     6.2 and higher
0x1600000F BCDE_LIBRARY_TYPE_TRADITIONAL_KSEG_MAPPINGS traditionalkseg boolean 6.1 and higher
BcdLibraryBoolean_TraditionalKsegMappings     6.2 and higher
0x16000010 BcdLibraryBoolean_DebuggerEnabled
bootdebug boolean 6.0 and higher
0x15000011 BcdLibraryInteger_DebuggerType
debugtype 0 = Serial
1 = 1394
2 = USB
6.0 and higher
3 = NET
4 = Local
6.2 and higher
0x15000012 BcdLibraryInteger_SerialDebuggerPortAddress
debugaddress integer 6.0 and higher
0x15000013 BcdLibraryInteger_SerialDebuggerPort
debugport integer 6.0 and higher
0x15000014 BcdLibraryInteger_SerialDebuggerBaudRate
baudrate integer 6.0 and higher
0x15000015 BcdLibraryInteger_1394DebuggerChannel
channel integer 6.0 and higher
0x12000016 BcdLibraryString_UsbDebuggerTargetName
targetname string 6.0 and higher
0x16000017 BcdLibraryBoolean_DebuggerIgnoreUsermodeExceptions
noumex boolean 6.0 and higher
0x15000018 BcdLibraryInteger_DebuggerStartPolicy
debugstart 0 = Active
1 = AutoEnable
2 = Disable
6.0 and higher
0x12000019 BCDE_LIBRARY_TYPE_DEBUGGER_BUS_PARAMETERS busparams string 6.1 and higher
BcdLibraryString_DebuggerBusParameters     6.2 and higher
0x1500001A BcdLibraryInteger_DebuggerNetHostIP
hostip integer 6.2 and higher
0x1500001B BcdLibraryInteger_DebuggerNetPort
port integer 6.2 and higher
0x1600001C BcdLibraryBoolean_DebuggerNetDhcp
dhcp boolean 6.2 and higher
0x1200001D BcdLibraryString_DebuggerNetKey
key string 6.2 and higher
0x1600001E BCDE_LIBRARY_TYPE_DEBUGGER_NET_VM vm boolean 6.2 and higher
0x16000020 BcdLibraryBoolean_EmsEnabled
bootems boolean 6.0 and higher
0x15000022 BcdLibraryInteger_EmsPort
emsport integer 6.0 and higher
0x15000023 BcdLibraryInteger_EmsBaudRate
emsbaudrate integer 6.0 and higher
0x12000030 BcdLibraryString_LoadOptionsString
loadoptions string 6.0 and higher
0x16000031 BcdLibraryBoolean_AttemptNonBcdStart   boolean 6.0 to 6.1
0x16000040 BcdLibraryBoolean_DisplayAdvancedOptions
advancedoptions boolean 6.0 and higher
0x16000041 BcdLibraryBoolean_DisplayOptionsEdit
optionsedit boolean 6.0 and higher
0x15000042 BcdLibraryInteger_FVEKeyRingAddress
keyringaddress integer 6.0 and higher
0x11000043 (device for boot status data log)   device 6.0 and higher
BcdLibraryDevice_BsdLogDevice     6.2 and higher
0x12000044 (file path for boot status data log)   string 6.0 and higher
BcdLibraryString_BsdLogPath     6.2 and higher
0x16000045 (append to boot status data log)   boolean 6.0 and higher
    6.2 and higher
BCDE_LIBRARY_TYPE_BSD_PRESERVE_LOG preservebootstat   10.0 and higher
0x16000046 BcdLibraryBoolean_GraphicsModeDisabled
graphicsmodedisabled boolean 6.0 and higher
0x15000047 BcdLibraryInteger_ConfigAccessPolicy
configaccesspolicy 0 = Default
1 = DisallowMmConfig
6.0 and higher
0x16000048 BcdLibraryBoolean_DisableIntegrityChecks
nointegritychecks boolean 6.0 and higher
0x16000049 BcdLibraryBoolean_AllowPrereleaseSignatures
testsigning boolean 6.0 and higher
0x1200004A BCDE_LIBRARY_TYPE_FONT_PATH fontpath string 6.0 from Windows Vista SP1, and higher
BcdLibraryString_FontPath     6.2 and higher
0x1500004B BcdLibraryInteger_SiPolicy
integrityservices 0 = Default
1 = Enable
2 = Disable
6.1 and higher
0x1500004C BcdLibraryInteger_FveBandId
volumebandid integer 6.2 and higher
0x16000050 BCDE_LIBRARY_TYPE_CONSOLE_EXTENDED_INPUT extendedinput boolean 6.0 and higher
BcdLibraryBoolean_ConsoleExtendedInput     6.2 and higher
0x15000051 BCDE_LIBRARY_TYPE_INITIAL_CONSOLE_INPUT initialconsoleinput integer 6.0 and higher
BcdLibraryInteger_InitialConsoleInput     6.2 and higher
0x15000052 BCDE_LIBRARY_TYPE_GRAPHICS_RESOLUTION graphicsresolution 0 = 1024x768
1 = 800x600
6.0 from Windows Vista SP1, and higher
2 = 1024x600 6.2 and higher
BcdLibraryInteger_GraphicsResolution     6.2 and higher
0x16000053 BcdLibraryBoolean_RestartOnFailure
restartonfailure boolean 6.2 and higher
0x16000054 BcdLibraryBoolean_GraphicsForceHighestMode
highestmode boolean 6.2 and higher
0x16000060 BcdLibraryBoolean_IsolatedExecutionContext
isolatedcontext boolean 6.2 and higher
0x15000065 BcdLibraryInteger_BootUxDisplayMessage
displaymessage 0 = Default
1 = Resume
2 = HyperV
3 = Recovery
4 = StartupRepair
5 = SystemImageRecovery
6 = CommandPrompt
7 = SystemRestore
8 = PushButtonReset
6.2 and higher
0x15000066 BcdLibraryInteger_BootUxDisplayMessageOverride
displaymessageoverride 0 = Default
1 = Resume
2 = HyperV
3 = Recovery
4 = StartupRepair
5 = SystemImageRecovery
6 = CommandPrompt
7 = SystemRestore
8 = PushButtonReset
6.2 and higher
0x16000067 BcdLibraryBoolean_BootUxLogoDisable   boolean 6.2 and higher
0x16000068 BcdLibraryBoolean_BootUxTextDisable   boolean 6.2 and higher
BCDE_LIBRARY_TYPE_BOOTUX_TEXT_DISABLE nobootuxtext   10.0 and higher
0x16000069 BcdLibraryBoolean_BootUxProgressDisable   boolean 6.2 and higher
BCDE_LIBRARY_TYPE_BOOTUX_PROGRESS_DISABLE nobootuxprogress   10.0 and higher
0x1600006A BcdLibraryBoolean_BootUxFadeDisable   boolean 6.2 and higher
BCDE_LIBRARY_TYPE_BOOTUX_FADE_DISABLE nobootuxfade   10.0 and higher
0x1600006B BcdLibraryBoolean_BootUxReservePoolDebug   boolean 6.2 and higher
0x1600006C BcdLibraryBoolean_BootUxDisable
bootuxdisabled boolean 6.2 and higher
0x1500006D BcdLibraryInteger_BootUxFadeFrames   integer 6.2 and higher
0x1600006E BcdLibraryBoolean_BootUxDumpStats   boolean 6.2 and higher
0x1600006F BcdLibraryBoolean_BootUxShowStats   boolean 6.2 and higher
0x16000071 BcdLibraryBoolean_MultiBootSystem   boolean 6.2 and higher
0x16000072 BcdLibraryBoolean_ForceNoKeyboard
nokeyboard boolean 6.2 and higher
0x15000073 BcdLibraryInteger_AliasWindowsKey   integer 6.2 and higher
0x16000074 BcdLibraryBoolean_BootShutdownDisabled
bootshutdowndisabled boolean 6.2 and higher
0x15000075 BcdLibraryInteger_PerformanceFrequency   integer 6.2 and higher
0x15000076 BcdLibraryInteger_SecurebootRawPolicy   integer 6.2 and higher
0x17000077 BcdLibraryIntegerList_AllowedInMemorySettings
allowedinmemorysettings integer list 6.2 and higher
0x15000079 BCDE_LIBRARY_TYPE_BOOTUX_BITMAP_TRANSITION_TIME bootuxtransitiontime integer 10.0 and higher
0x1600007A BCDE_LIBRARY_TYPE_TWO_BOOT_IMAGES mobilegraphics boolean 10.0 and higher
0x1600007B BcdLibraryBoolean_ForceFipsCrypto
forcefipscrypto boolean 6.2 and higher
0x1500007D BcdLibraryInteger_BootErrorUx
booterrorux 0 = Legacy
1 = Standard
2 = Simple
6.3 and higher
0x1600007E BcdLibraryBoolean_AllowFlightSignatures
flightsigning boolean 10.0 and higher
0x1500007F BcdLibraryInteger_BootMeasurementLogFormat
measuredbootlogformat 0 = Default
1 = Sha1
10.0 and higher

The symbol BcdLibraryBoolean_AttemptNonBcdStart is defined in BCDSRV versions before Windows 8 but its numerical datatype (0x16000031) is unknown to BCDEDIT.

The elements 0x11000043, 0x12000044 and 0x16000045 were at first known only from their meaningfulness to BOOTMGR. The type library in BCDSRV from Windows 8 introduced symbolic names for these elements, but they could be worked with through BCDEDIT only as custom types, e.g., with custom:11000043 where a friendly name might otherwise be used. The BCDEDIT from Windows 10, however, gives 0x16000045 a friendly name. This slow disclosure is specially remarkable because the boot status data log that is affected by these BCD options has arguably substantive forensic value when what is now supported as preservebootstat is enabled.

Interpretation by BCDEDIT of integer values for displaymessage and displaymessageoverride may be incomplete. The type library continues 9 and 10 as if to suggest that BCDEDIT’s interpretation misses FactoryReset and FveRecovery.

The symbols BcdLibraryBoolean_BootUxLogoDisable and BcdLibraryBoolean_BootUxReservePoolDebug are defined in the BCDSRV from Windows 8 but their numerical datatypes (0x16000067 and 0x1600006B) are unknown to BCDEDIT. This was true of the three elements in between, but they get friendly names from BCDEDIT in Windows 10. Of these and others that are defined in the type library but do not have support from BCDEDIT, some are known to the loader and some not.

Application Elements

The BCDEDIT from Windows 10 allows some application elements in any object.

Constant Symbolic Names Friendly Name Format or Value Versions
0x26000202 BCDE_FFULOADER_TYPE_ONESHOTSKIP_FFU_UPDATE skipffumode boolean 10.0 and higher
0x26000203 BCDE_FFULOADER_TYPE_FORCE_FFU forceffumode boolean 10.0 and higher
0x25000510 BCDE_CHARGING_TYPE_BOOT_THRESHOLD chargethreshold integer 10.0 and higher
0x26000512 BCDE_CHARGING_TYPE_OFF_MODE_CHARGING offmodecharging boolean 10.0 and higher
0x25000AAA BCDE_GLOBAL_TYPE_BOOTFLOW bootflow integer 10.0 and higher

Template Elements

The type library in BCDSRV.DLL has long named some template elements that appear to be otherwise undocumented. Except that the BCDEDIT from Windows 10 adds one that it permits in any object, these template elements are unknown to BCDEDIT. They have no friendly name and early versions exempt them from enumeration by any bcdedit /enum command.

Constant Symbolic Name Friendly Name Format Versions
0x45000001 BcdSetupInteger_DeviceType   integer 6.0 and higher
0x42000002 BcdSetupString_ApplicationRelativePath   string 6.0 and higher
0x42000003 BcdSetupString_RamdiskDeviceRelativePath   string 6.0 and higher
0x46000004 BcdSetupBoolean_OmitOsLoaderElements   boolean 6.0 and higher
0x47000006 BCDE_TEMPLATE_TYPE_ELEMENTS_TO_MIGRATE_LIST elementstomigrate integer list 10.0 and higher
0x46000010 BcdSetupBoolean_RecoveryOs   boolean 6.0 and higher

Not until the type library in BCDSRV.DLL from Windows 7 does BcdSetupInteger_DeviceType actually evaluate to a datatype for an integer. Earlier versions have it as 0x41000001.

Application-Specific Elements

For most elements, interpretation depends on the 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.


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 Versions
0x24000001 BcdBootMgrObjectList_DisplayOrder
displayorder GUID list 6.0 and higher
0x24000002 BcdBootMgrObjectList_BootSequence
bootsequence GUID list 6.0 and higher
0x23000003 BcdBootMgrObject_DefaultObject
default GUID 6.0 and higher
0x25000004 BcdBootMgrInteger_Timeout
timeout integer 6.0 and higher
0x26000005 BcdBootMgrBoolean_AttemptResume
resume boolean 6.0 and higher
0x23000006 BcdBootMgrObject_ResumeObject
resumeobject GUID 6.0 and higher
0x24000010 BcdBootMgrObjectList_ToolsDisplayOrder
toolsdisplayorder GUID list 6.0 and higher
0x26000020 BCDE_BOOTMGR_TYPE_DISPLAY_BOOT_MENU displaybootmenu boolean 6.0 and higher
BcdBootMgrBoolean_DisplayBootMenu     6.2 and higher
0x26000021 BcdBootMgrBoolean_NoErrorDisplay
noerrordisplay boolean 6.0 and higher
0x21000022 BcdBootMgrDevice_BcdDevice
bcddevice device 6.0 and higher
0x22000023 BcdBootMgrString_BcdFilePath
bcdfilepath string 6.0 and higher
0x26000024 BcdBootMgr_HormEnabled   boolean 6.2 and higher
0x26000025 BcdBootMgrBoolean_HiberRoot
hiberboot boolean 6.2 and higher
0x22000026 BcdBootMgrString_PasswordOverride   string 6.2 and higher
0x22000027 BcdBootMgrString_PinpassPhraseOverride   string 6.2 and higher
0x26000028 BcdBootMgrBoolean_ProcessCustomActionsFirst
processcustomactionsfirst boolean 6.2 and higher
0x27000030 BcdBootMgrIntegerList_CustomActionsList
customactions integer list 6.0 and higher
0x26000031 BcdBootMgrBoolean_PersistBootSequence
persistbootsequence boolean 6.2 and higher
0x22000040 BcdBootMgrString_FveRecoveryUrl
fverecoveryurl string 10.0 and higher
0x22000041 BcdBootMgrString_FveRecoveryMessage
fverecoverymessage string 10.0 and higher

Note the several WMI symbols that are defined in the BCDSRV type library for Windows 8 but which are unknown to BCDEDIT.

The symbol BcdBootMgrBoolean_HiberRoot is reproduced correctly, viz., with Root, not Boot.


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 Applicable Versions
0x21000001 BcdOSLoaderDevice_OSDevice
osdevice device 6.0 and higher
0x22000002 BcdOSLoaderString_SystemRoot
systemroot string 6.0 and higher
0x23000003 BcdOSLoaderObject_AssociatedResumeObject
resumeobject GUID 6.0 and higher
0x26000004 BcdOSLoaderBoolean_StampDisks
stampdisks boolean 6.0 from Windows Vista SP1 to 6.2
0x26000010 BcdOSLoaderBoolean_DetectKernelAndHal
detecthal boolean 6.0 and higher
0x22000011 BcdOSLoaderString_KernelPath
kernel string 6.0 and higher
0x22000012 BcdOSLoaderString_HalPath
hal string 6.0 and higher
0x22000013 BcdOSLoaderString_DbgTransportPath
dbgtransport string 6.0 and higher
0x25000020 BcdOSLoaderInteger_NxPolicy
nx 0 = OptIn
1 = OptOut
2 = AlwaysOff
3 = AlwaysOn
6.0 and higher
0x25000021 BcdOSLoaderInteger_PAEPolicy
pae 0 = Default
1 = ForceEnable
2 = ForceDisable
6.0 and higher
0x26000022 BcdOSLoaderBoolean_WinPEMode
winpe boolean 6.0 and higher
0x26000024 BcdOSLoaderBoolean_DisableCrashAutoReboot
nocrashautoreboot boolean 6.0 and higher
0x26000025 BcdOSLoaderBoolean_UseLastGoodSettings
lastknowngood boolean 6.0 and higher
0x26000026 BCDE_OSLOADER_TYPE_DISABLE_INTEGRITY_CHECKS oslnointegritychecks boolean 6.0 only
BcdOSLoaderBoolean_DisableCodeIntegrityChecks     6.0 to 6.1
0x26000027 BCDE_OSLOADER_TYPE_ALLOW_PRERELEASE_SIGNATURES osltestsigning boolean 6.0 only
BcdOSLoaderBoolean_AllowPrereleaseSignatures     6.0 to 6.1
0x26000030 BcdOSLoaderBoolean_NoLowMemory
nolowmem boolean 6.0 and higher
0x25000031 BcdOSLoaderInteger_RemoveMemory
removememory integer 6.0 and higher
0x25000032 BcdOSLoaderInteger_IncreaseUserVa
increaseuserva integer 6.0 and higher
0x25000033 BcdOSLoaderInteger_PerformaceDataMemory
perfmem integer 6.0 and higher
0x26000040 BcdOSLoaderBoolean_UseVgaDriver
vga boolean 6.0 and higher
0x26000041 BcdOSLoaderBoolean_DisableBootDisplay
quietboot boolean 6.0 and higher
0x26000042 BcdOSLoaderBoolean_DisableVesaBios
novesa boolean 6.0 and higher
0x26000043 BcdOSLoaderBoolean_DisableVgaMode
novga boolean 6.2 and higher
0x25000050 BcdOSLoaderInteger_ClusterModeAddressing
clustermodeaddressing integer 6.0 and higher
0x26000051 BcdOSLoaderBoolean_UsePhysicalDestination
usephysicaldestination boolean 6.0 and higher
0x25000052 BcdOSLoaderInteger_RestrictApicCluster
restrictapiccluster integer 6.0 and higher
0x22000053 BCDE_OSLOADER_TYPE_EVSTORE evstore string 6.1 and higher
BcdOSLoaderString_OSLoaderTypeEVStore     6.1 from Windows 7 SP1, and higher
0x26000054 BcdOSLoaderBoolean_UseLegacyApicMode
uselegacyapicmode boolean 6.1 and higher
0x25000055 BcdOSLoaderInteger_X2ApicPolicy
x2apicpolicy 0 = Default
1 = Disable
2 = Enable
6.1 from Windows 7 SP1, and higher
0x26000060 BcdOSLoaderBoolean_UseBootProcessorOnly
onecpu boolean 6.0 and higher
0x25000061 BcdOSLoaderInteger_NumberOfProcessors
numproc integer 6.0 and higher
0x26000062 BcdOSLoaderBoolean_ForceMaximumProcessors
maxproc boolean 6.0 and higher
0x25000063 BcdOSLoaderBoolean_ProcessorConfigurationFlags
configflags integer 6.0 and higher
0x26000064 BcdOSLoaderBoolean_MaximizeGroupsCreated
maxgroup boolean 6.1 and higher
0x26000065 BcdOSLoaderBoolean_ForceGroupAwareness
groupaware boolean 6.1 and higher
0x25000066 BCDE_OSLOADER_TYPE_GROUP_SIZE groupsize integer 6.1 and higher
BcdOSLoaderBoolean_GroupSize     6.1 only
BcdOSLoaderInteger_GroupSize     6.2 and higher
0x26000070 BCDE_OSLOADER_TYPE_USE_FIRMWARE_PCI_SETTINGS usefirmwarepcisettings boolean 6.0 and higher
BcdOSLoaderInteger_UseFirmwarePciSettings     6.0 to 6.1
BcdOSLoaderBoolean_UseFirmwarePciSettings     6.2 and higher
0x25000071 BCDE_OSLOADER_TYPE_MSI_POLICY msi 0 = Default
1 = ForceDisable
6.0 and higher
BcdOSLoaderInteger_MsiPolicy     6.2 and higher
0x25000072 BCDE_OSLOADER_TYPE_PCI_EXPRESS_POLICY pciexpress 0 = Default
1 = ForceDisable
6.0 and higher
BcdOSLoaderInteger_PciExpressPolicy     6.2 and higher
0x25000080 BcdOSLoaderInteger_SafeBoot
safeboot 0 = Minimal
1 = Network
2 = DsRepair
6.0 and higher
0x26000081 BcdOSLoaderBoolean_SafeBootAlternateShell
safebootalternateshell boolean 6.0 and higher
0x26000090 BcdOSLoaderBoolean_BootLogInitialization
bootlog boolean 6.0 and higher
0x26000091 BcdOSLoaderBoolean_VerboseObjectLoadMode
sos boolean 6.0 and higher
0x260000A0 BcdOSLoaderBoolean_KernelDebuggerEnabled
debug boolean 6.0 and higher
0x260000A1 BcdOSLoaderBoolean_DebuggerHalBreakpoint
halbreakpoint boolean 6.0 and higher
0x260000A2 BcdOSLoaderBoolean_UsePlatformClock
useplatformclock boolean 6.1 and higher
0x260000A3 BcdOSLoaderBoolean_ForceLegacyPlatform
forcelegacyplatform boolean 6.2 and higher
0x260000A4 BcdOSLoaderBoolean_UsePlatformTick
useplatformtick boolean 6.2 and higher
0x260000A5 BcdOSLoaderBoolean_DisableDynamicTick
disabledynamictick boolean 6.2 and higher
0x250000A6 BcdOSLoaderInteger_TscSyncPolicy
tscsyncpolicy 0 = Default
1 = Legacy
2 = Enhanced
6.2 and higher
0x260000B0 BcdOSLoaderBoolean_EmsEnabled
ems boolean 6.0 and higher
0x250000C0 (force fatal error during loader initialisation)   integer 6.0 and higher
BcdOSLoaderInteger_ForceFailure     6.2 and higher
0x250000C1 BcdOSLoaderInteger_DriverLoadFailurePolicy
driverloadfailurepolicy 0 = Fatal
1 = UseErrorControl
6.0 and higher
0x250000C2 BcdOSLoaderInteger_BootMenuPolicy
bootmenupolicy 0 = Legacy
1 = Standard
6.2 and higher
0x260000C3 BcdOSLoaderBoolean_AdvancedOptionsOneTime
onetimeadvancedoptions boolean 6.2 and higher
0x260000C4 BcdOSLoaderBoolean_EditOptionsOneTime
onetimeoptionsedit boolean 6.2 and higher
0x250000E0 BcdOSLoaderInteger_BootStatusPolicy
bootstatuspolicy 0 = DisplayAllFailures
1 = IgnoreAllFailures
2 = IgnoreShutdownFailures
3 = IgnoreBootFailures
6.0 and higher
4 = IgnoreCheckpointFailures
5 = DisplayShutdownFailures
6 = DisplayBootFailures
7 = DisplayCheckpointFailures
6.2 and higher
0x260000E1 BcdOSLoaderBoolean_DisableElamDrivers
disableelamdrivers boolean 6.2 and higher
0x250000F0 BcdOSLoaderInteger_HypervisorLaunchType
hypervisorlaunchtype 0 = Off
1 = Auto
6.0 from Windows Vista SP1, and higher
0x220000F1 BcdOSLoaderString_HypervisorPath
hypervisorpath string 6.0 from Windows Vista SP1 to 6.1
0x260000F2 BcdOSLoaderBoolean_HypervisorDebuggerEnabled
hypervisordebug boolean 6.0 from Windows Vista SP1, and higher
0x250000F3 BcdOSLoaderInteger_HypervisorDebuggerType
hypervisordebugtype 0 = Serial
1 = 1394
6.0 from Windows Vista SP1, and higher
2 = None
3 = Net
6.2 and higher
0x250000F4 BcdOSLoaderInteger_HypervisorDebuggerPortNumber
hypervisordebugport integer 6.0 from Windows Vista SP1, and higher
0x250000F5 BcdOSLoaderInteger_HypervisorDebuggerBaudrate
hypervisorbaudrate integer 6.0 from Windows Vista SP1, and higher
0x250000F6 BcdOSLoaderInteger_HypervisorDebugger1394Channel
hypervisorchannel integer 6.0 from Windows Vista SP1, and higher
0x250000F7 BcdOsLoaderInteger_BootUxPolicy   integer 6.1 and higher
1 = Basic
2 = Standard
10.0 and higher
0x260000F8 BCDE_OSLOADER_TYPE_HYPERVISOR_SLAT_DISABLED hypervisordisableslat boolean 6.1 and higher
BcdOSLoaderInteger_HypervisorSlatDisabled     6.1 only
BcdOsLoaderBoolean_HypervisorSlatDisabled     6.2 and higher
0x220000F9 BcdOSLoaderString_HypervisorDebuggerBusParams
hypervisorbusparams string 6.2 and higher
0x250000FA BcdOSLoaderInteger_HypervisorNumProc
hypervisornumproc integer 6.2 and higher
0x250000FB BcdOSLoaderInteger_HypervisorRootProcPerNode
hypervisorrootprocpernode integer 6.2 and higher
hypervisoruselargevtlb boolean 6.1 from Windows 7 SP1, and higher
BcdOSLoaderInteger_HypervisorUseLargeVTlb     6.1 from Windows 7 SP1 only
BcdOSLoaderBoolean_HypervisorUseLargeVTlb     6.2 and higher
0x250000FD BcdOSLoaderInteger_HypervisorDebuggerNetHostIp
hypervisorhostip integer 6.2 and higher
0x250000FE BcdOSLoaderInteger_HypervisorDebuggerNetHostPort
hypervisorhostport integer 6.2 and higher
0x250000FF BcdOSLoaderInteger_HypervisorDebuggerPages   integer 6.2 and higher
0x25000100 BcdOSLoaderInteger_TpmBootEntropyPolicy
tpmbootentropy 0 = Default
1 = ForceDisable
2 = ForceEnable
6.1 and higher
0x22000110 BcdOSLoaderString_HypervisorDebuggerNetKey
hypervisorusekey string 6.2 and higher
0x22000112 BcdOSLoaderString_HypervisorProductSkuType   string 6.2 and higher
0x25000113 BcdOSLoaderInteger_HypervisorRootProc
hypervisorrootproc integer 6.2 and higher
0x26000114 BcdOSLoaderBoolean_HypervisorDebuggerNetDhcp
hypervisordhcp boolean 6.2 and higher
0x25000115 BcdOSLoaderInteger_HypervisorIommuPolicy
hypervisoriommupolicy 0 = Default
1 = Enable
2 = Disable
6.2 and higher
0x26000116 BcdOSLoaderBoolean_HypervisorUseVApic
hypervisorusevapic boolean 6.2 and higher
0x22000117 BcdOSLoaderString_HypervisorLoadOptions
hypervisorloadoptions string 6.3 and higher
0x25000118 BCDE_OSLOADER_TYPE_HYPERVISOR_MSR_FILTER_POLICY hypervisormsrfilterpolicy 0 = Disable
1 = Enable
10.0 and higher
0x25000119 BCDE_OSLOADER_TYPE_HYPERVISOR_MMIO_NX_POLICY hypervisormmionxpolicy 0 = Disable
1 = Enable
10.0 and higher
0x25000120 BCDE_OSLOADER_TYPE_XSAVEPOLICY xsavepolicy integer 6.1 and higher
BcdOSLoaderInteger_XSavePolicy     6.2 and higher
0x25000121 BCDE_OSLOADER_TYPE_XSAVEADDFEATURE0 xsaveaddfeature0 integer 6.1 and higher
BcdOSLoaderInteger_XSaveAddFeature0     6.2 and higher
0x25000122 BCDE_OSLOADER_TYPE_XSAVEADDFEATURE1 xsaveaddfeature1 integer 6.1 and higher
BcdOSLoaderInteger_XSaveAddFeature1     6.2 and higher
0x25000123 BCDE_OSLOADER_TYPE_XSAVEADDFEATURE2 xsaveaddfeature2 integer 6.1 and higher
BcdOSLoaderInteger_XSaveAddFeature2     6.2 and higher
0x25000124 BCDE_OSLOADER_TYPE_XSAVEADDFEATURE3 xsaveaddfeature3 integer 6.1 and higher
BcdOSLoaderInteger_XSaveAddFeature3     6.2 and higher
0x25000125 BCDE_OSLOADER_TYPE_XSAVEADDFEATURE4 xsaveaddfeature4 integer 6.1 and higher
BcdOSLoaderInteger_XSaveAddFeature4     6.2 and higher
0x25000126 BCDE_OSLOADER_TYPE_XSAVEADDFEATURE5 xsaveaddfeature5 integer 6.1 and higher
BcdOSLoaderInteger_XSaveAddFeature5     6.2 and higher
0x25000127 BCDE_OSLOADER_TYPE_XSAVEADDFEATURE6 xsaveaddfeature6 integer 6.1 and higher
BcdOSLoaderInteger_XSaveAddFeature6     6.2 and higher
0x25000128 BCDE_OSLOADER_TYPE_XSAVEADDFEATURE7 xsaveaddfeature7 integer 6.1 and higher
BcdOSLoaderInteger_XSaveAddFeature7     6.2 and higher
0x25000129 BCDE_OSLOADER_TYPE_XSAVEREMOVEFEATURE xsaveremovefeature integer 6.1 and higher
BcdOSLoaderInteger_XSaveRemoveFeature     6.2 and higher
0x2500012A BCDE_OSLOADER_TYPE_XSAVEPROCESSORSMASK xsaveprocessorsmask integer 6.1 and higher
BcdOSLoaderInteger_XSaveProcessorsMask     6.2 and higher
0x2500012B BCDE_OSLOADER_TYPE_XSAVEDISABLE xsavedisable integer 6.1 and higher
BcdOSLoaderInteger_XSaveDisable     6.2 and higher
0x2500012C BCDE_OSLOADER_TYPE_KERNEL_DEBUGGER_TYPE kerneldebugtype 0 = Serial
1 = 1394
2 = USB
3 = NET
6.3 and higher
0x2200012D BCDE_OSLOADER_TYPE_KERNEL_DEBUGGER_BUS_PARAMETERS kernelbusparams string 6.3 and higher
0x2500012E BCDE_OSLOADER_TYPE_KERNEL_DEBUGGER_PORT_ADDRESS kerneldebugaddress integer 6.3 and higher
0x2500012F BCDE_OSLOADER_TYPE_KERNEL_DEBUGGER_PORT_NUMBER kerneldebugport integer 6.3 and higher
0x25000130 BCDE_OSLOADER_TYPE_FVE_CLAIMED_DEVICE_LOCK_COUNTER claimedtpmcounter integer 6.2 and higher
0x25000131 BCDE_OSLOADER_TYPE_KERNEL_DEBUGGER_1394_CHANNEL kernelchannel integer 6.3 and higher
0x22000132 BCDE_OSLOADER_TYPE_KERNEL_DEBUGGER_USB_TARGETNAME kerneltargetname string 6.3 and higher
0x25000133 BCDE_OSLOADER_TYPE_KERNEL_DEBUGGER_NET_HOST_IP kernelhostip integer 6.3 and higher
0x25000134 BCDE_OSLOADER_TYPE_KERNEL_DEBUGGER_NET_HOST_PORT kernelport integer 6.3 and higher
0x26000135 BCDE_OSLOADER_TYPE_KERNEL_DEBUGGER_NET_DHCP kerneldhcp boolean 6.3 and higher
0x22000136 BCDE_OSLOADER_TYPE_KERNEL_DEBUGGER_NET_KEY kernelkey string 6.3 and higher
0x22000137 BcdOSLoaderString_IMCHiveName
imchivename string 6.3 and higher
0x21000138 BcdOSLoaderDevice_IMCDevice
imcdevice device 6.3 and higher
0x25000139 BCDE_OSLOADER_TYPE_KERNEL_DEBUGGER_BAUDRATE kernelbaudrate integer 6.3 and higher
0x22000140 BCDE_OSLOADER_TYPE_MANUFACTURING_MODE mfgmode string 10.0 and higher
0x26000141 BCDE_OSLOADER_TYPE_EVENT_LOGGING_ENABLED event boolean 10.0 and higher
0x25000142 BcdOSLoaderInteger_VsmLaunchType
vsmlaunchtype 0 = Off
1 = Auto
10.0 and higher
0x25000144 BCDE_OSLOADER_TYPE_HYPERVISOR_ENFORCED_CODE_INTEGRITY hypervisorenforcedcodeintegrity 0 = Disable
1 = Enable
2 = Strict
10.0 and higher
0x21000150 BCDE_OSLOADER_TYPE_SYSTEM_DATA_DEVICE systemdatadevice device 10.0 and higher

The mis-spelling of BcdOSLoaderInteger_PerformaceDataMemory is Microsoft’s.

The WMI symbols for configflags and groupsize are correctly reproduced: their names suggest boolean types but the elements actually are integers. Conversely, the WMI constants for usefirmwarepcisettings, hypervisordisableslat and hypervisoruselargevtlb suggest integers for types that actually are boolean. Does nobody take care? Does nobody ever check? The type library for Windows 7 shows that someone does check, just not well. Where the WMI symbol for usefirmwarepcisettings had been misnamed, someone instead “corrected” the numerical definition, to 0x25000070, which then got corrected for Windows 8—along with changes of names for four but not all five. Somewhere at Microsoft are managers who genuinely wonder why some programmers in the big wide world don’t follow Microsoft’s interfaces but instead go their own way with that they think they observe and deduce.

Though evstore was introduced for Windows 7, it did not get a WMI symbol until the first service pack. Perhaps the reason is that its spot at index 0x53 was taken by the BcdOSLoaderBoolean_UseLegacyApicMode which had been defined incorrectly as 0x26000053 instead of 0x26000054.

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 seems not to be documented anywhere. It is known only from its meaningfulness to WINLOAD, which expects an integer value between 0 and 3 to select from different reasons that can be presented in the user interface when simulating an initialisation failure. Because the element has no friendly name it can be worked with through BCDEDIT only as custom:250000C0 where a friendly name might otherwise be used. Curiously, versions of BCDEDIT up to and including Windows 8 have suitable names 0 = Load, 1 = Hive, 2 = Acpi and 3 = General for the permitted values, and an array of pointers to those names, but no reference to the array. Then, just as these all get removed from BCDEDIT, the element is given a WMI symbol for programmatic access.

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 Versions
0x21000001 BcdResumeDevice_HiberFileDevice
filedevice device 6.0 and higher
0x22000002 BcdResumeString_HiberFilePath
filepath string 6.0 and higher
0x26000003 BcdResumeBoolean_UseCustomSettings
customsettings boolean 6.0 and higher
0x26000004 BcdResumeBoolean_x86PaeMode
pae boolean 6.0 and higher
0x21000005 BcdResumeDevice_AssociatedOsDevice
associatedosdevice device 6.0 and higher
0x26000006 BCDE_RESUME_LOADER_TYPE_DEBUG_OPTION_ENABLED debugoptionenabled boolean 6.0 and higher
BcdResumeBoolean_DebugOptionEnabled     6.2 and higher
0x25000007 BCDE_RESUME_LOADER_TYPE_BOOTUX_POLICY bootux 0 = Disabled
1 = Basic
2 = Standard
6.1 and higher
BcdResumeInteger_BootUxPolicy     6.2 and higher
0x25000008 BcdResumeInteger_BootMenuPolicy
bootmenupolicy 0 = Legacy
1 = Standard
6.2 and higher
0x26000024 BcdResumeBoolean_HormEnabled     6.2 and higher

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 Applicable Versions
0x25000001 BcdMemDiagInteger_PassCount
passcount integer 6.0 and higher
0x25000002 BcdMemDiagInteger_TestMix
testmix 0 = Basic
1 = Extended
6.0 and higher
0x25000003 BcdMemDiagInteger_FailureCount
failurecount integer 6.0 to 6.1
0x26000003 BcdMemDiagBoolean_CacheEnabled
cacheenable boolean 6.2 and higher
0x25000004 BcdMemDiagInteger_TestToFail
testtofail 0 = Stride
1 = Mats
2 = InverseCoupling
3 = RandomPattern
4 = Checkerboard
6.0 to 6.1
0x26000004 BcdMemDiagBoolean_FailuresEnabled
failuresenabled boolean 6.2 and higher
0x26000005 BCDE_MEMTEST_TYPE_CACHE_ENABLE cacheenable boolean 6.1 only
0x25000005 BcdMemDiagInteger_StrideFailureCount
stridefailcount integer 6.2 and higher
0x25000006 BcdMemDiagInteger_InvcFailureCount
invcfailcount integer 6.2 and higher
0x25000007 BcdMemDiagInteger_MatsFailureCount
matsfailcount integer 6.2 and higher
0x25000008 BcdMemDiagInteger_RandFailureCount
randfailcount integer 6.2 and higher
0x25000009 BcdMemDiagInteger_ChckrFailureCount
chckrfailcount integer 6.2 and higher

The reworking in Windows 8 so that the various tests each have their own counts of failure produces the first case of an element being redefined numerically. Deletion of 0x25000003 and 0x25000004 let cacheenable slip from 0x26000005 to 0x26000003 and only then were new elements added.


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 Versions
0x22000001 BCDE_LEGACY_LOADER_TYPE_BPB_STRING bpbstring string 6.0 and higher

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 Versions
0x26000001 BCDE_STARTUP_TYPE_PXE_SOFT_REBOOT pxesoftreboot boolean 6.0 and higher
0x22000002 BCDE_STARTUP_TYPE_PXE_APPLICATION_NAME applicationname string 6.0 and higher

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 Versions
0x35000001 BcdDeviceInteger_RamdiskImageOffset
ramdiskimageoffset integer 6.0 and higher
0x35000002 BcdDeviceInteger_TftpClientPort
ramdisktftpclientport integer 6.0 and higher
0x31000003 BcdDeviceDevice_SdiDevice
ramdisksdidevice device 6.0 and higher
0x32000004 BcdDeviceString_SdiPath
ramdisksdipath string 6.0 and higher
0x35000005 BcdDeviceInteger_RamdiskImageLength
ramdiskimagelength integer 6.0 and higher
0x36000006 BCDE_DEVICE_TYPE_RAMDISK_EXPORT_AS_CD exportascd boolean 6.0 and higher
BcdDeviceBoolean_ExportAsCdRamdiskImageOffset     6.0 to 6.1
BcdDeviceBoolean_RamdiskExportAsCd     6.2 and higher
0x35000007 BCDE_DEVICE_TYPE_RAMDISK_TFTP_BLOCK_SIZE ramdisktftpblocksize integer 6.0 and higher
BcdDeviceInteger_TftpBlockSize     6.0 to 6.1
BcdDeviceInteger_RamdiskTftpBlockSize     6.2 and higher
0x35000008 BCDE_DEVICE_TYPE_RAMDISK_TFTP_WINDOW_SIZE ramdisktftpwindowsize integer 6.0 from Windows Vista SP1, and higher
BcdDeviceInteger_TftpWindowSize     6.0 from Windows Vista SP1 to 6.1
BcdDeviceInteger_RamdiskTftpWindowSize     6.2 and higher
0x36000009 BCDE_DEVICE_TYPE_RAMDISK_MULTICAST_ENABLED ramdiskmcenabled boolean 6.1 and higher
BcdDeviceInteger_MulticastEnabled     6.1 only
BcdDeviceBoolean_RamdiskMulticastEnabled     6.2 and higher
0x3600000A BCDE_DEVICE_TYPE_RAMDISK_MULTICAST_TFTP_FALLBACK ramdiskmctftpfallback boolean 6.1 and higher
BcdDeviceInteger_MulticastTftpFallback     6.1 only
BcdDeviceInteger_RamdiskMulticastTftpFallback     6.2 and higher
0x3600000B BcdDeviceBoolean_RamdiskTftpVarWindow
ramdisktftpvarwindow boolean 6.2 and higher

Microsoft seems to have had recurring trouble with the WMI symbols for device elements. Not only do some names in some versions of the BCDSRV type library suggest the wrong type of data but some others have incorrect numerical definitions. Programmers can ignore the former as a quirk but incorrect numerical evaluation makes the symbol useless for the programming it’s intended for. (Against this is that the first of the problems concerned a WMI constant that Microsoft anyway did not document.)

Specifically, the type library from the original Windows Vista has BcdDeviceInteger_TftpBlockSize evaluate as 0x36000007 instead of 0x35000007. This was compounded for the addition of BcdDeviceInteger_TftpWindowsSize in Windows Vista SP1, as 0x36000008 instead of 0x35000008. Both were corrected for the type library in Windows 7, but it introduced a new type of editing mistake: the WMI constants for ramdiskmcenabled and ramdiskmctftpfallback are named as if to suggest integer types, but they actually are boolean—which finally got accounted for in a renaming of multiple elements for Windows 8.

The ramdisktftpblocksize element was omitted from the bcdedit /? types devobject documentation in the original Windows Vista. The oversight was perhaps not noticed until ramdiskftpwindowsize was added for the first service pack.