BCD Objects - Boot Configuration Data in Windows Vista

There are three general categories of BCD objects: application objects, inheritable objects, and device objects.General (lot. generalis - umumiy, bosh) - qurolli kuchlardagi harbiy unvon (daraja). Dastlab, 16-a.da Fransiyada joriy qilingan. Rossiyada 17-a.ning 2-yarmidan maʼlum. Oʻzbekiston qurolli kuchlarida G. The most common type of BCD object is an application object, which describes a boot environment application such as the Windows boot manager or Windows boot loader. Each object is represented by a 128-bit unique GUID and contains a 32-bit description that describes the type of object.
The following table shows the object codes and associated object code values for the three object categories.
Object Types
Description
|
Value
|
Application
|
0x1
|
Inheritable
|
0x2
|
Device
|
0x3
|
Figure 4 shows the layout of the type. The details of how data is packed into bits 0 through 27 depends on the category.
Figure 4. Layout of the BCD object type.
BCD Application Objects
A BCD application object represents a boot environment executable such as the Windows boot loader. Standard application objects include:
The Windows boot manager object, which controls boot flow. In a dual-boot system, the Windows boot manager displays a boot selection menu to the user.
The Windows boot loader object, which loads a particular version or configuration of Windows Vista or later versions of Windows.
The Windows Ntldr object, which loads versions of Windows earlier than Windows Vista.
The Windows resume loader object, which restores Windows to its running state when a computer resumes from hibernation.
The Windows Memory Tester object, which runs a set of memory diagnostics.
BCD application objects have two defining characteristics: image type and application type. Image type specifies how the executable is loaded. For example, an executable can be loaded through the firmware or by the Windows boot manager (as a boot application). The following table lists the valid image types, along with the associated numerical value:
Image Types
Description
|
Value
|
Firmware application
|
0x1
|
Boot application
|
0x2
|
Ntldr-based loader object
|
0x3
|
Real-mode application
|
0x4
|
Application type specifies what the application does. Each valid type has an associated code. The following table lists the standard application types, along with their numerical codes:
Application Types
Description
|
Value
|
Description
|
Firmware boot manager
|
0x1
|
Applies only to EFI systems.
|
Windows boot manager
|
0x2
|
Controls boot flow. In a dual-boot system, displays a boot selection menu to the user.
|
Windows boot loader
|
0x3
|
Loads a particular version or configuration of Windows.
|
Windows resume application
|
0x4
|
Restores Windows to its running state when a computer resumes from hibernation.
|
Windows memory tester
|
0x5
|
A memory diagnostics application.
|
Ntldr
|
0x6
|
Applies only to PC/AT BIOS systems. Loads versions of Windows earlier than Windows Vista.
|
Boot sector
|
0x8
|
A 16-bit real-mode application. Applies only to PC/AT BIOS systems. Can be used to restart the boot process and load a non-Windows operating system.
|
Figure 5 shows how the layout of an object type.
Figure 5. Layout of the BCD application object type
The following table gives the BCDEdit identifier and GUID for some commonly used application objects:
Standard Application Objects
Description
|
BCDEdit ID
|
GUID
|
Windows Boot Manager
|
{bootmgr}
|
9dea862c-5cdd-4e70-acc1-f32b344d4795
|
Firmware Boot Manager
|
{fwbootmgr}
|
a5a30fa2-3d06-4e9f-b5f4-a01df9d1fcba
|
Windows Memory Tester
|
{memdiag}
|
b2721d73-1db4-4c62-bf78-c548a880142d
|
Windows Resume Application
|
No alias
|
147aa509-0358-4473-b83b-d950dda00615
|
Legacy Windows Loader
|
{ntldr}
|
466f5a88-0af2-4f76-9038-095b170dc21c
|
Current boot entry
|
{current}
|
fa926493-6f1c-4193-a414-58f0b2456d1e
|
Default boot entry
|
{default}
|
|
BCD Inheritable Objects
Some BCD elements can be applied to more than one BCD application object, and a few are global to the entire BCD store. It is possible to associate these elements separately with each instance of an object that uses them. A more efficient approach is to create an inheritable object. This is a container for elements that are shared across multiple BCD object instances. For example, there are inheritable objects to specify whether the kernel debugger uses a COM, USB, or 1394 connection. A BCD object includes the inheritable object that contains the element instead of having a separate instance of the element itself.
As described in the BCD element section, BCD element namespace is divided so that elements that are used by two different application classes can share the same type code. This means that an inheritable application class object can be associated only with a particular class of BCD application objects. Alternatively, an inheritable BCD object can contain only BCD elements that apply to all boot environment applications. Such objects can be included by any BCD application class. The two types of inheritable object are distinguished by their class. The numerical class code is given in parentheses:
Library class (0x1). Inheritable objects of this type can be inherited by any BCD object and can contain only library class BCD elements.
Application class (0x2). Inheritable objects of this type can be inherited only by the specified BCD application class.
Inheritable objects that have a class code set to Application class must also include the type of application objects that can include the inheritable object. Possible values include any of the BCD application object types, such as Windows boot loaders or Windows boot manager.
The following table gives the BCDEdit identifier and GUID for some commonly used inheritable objects:
Standard Inheritable Objects
BCDEdit ID
|
GUID
|
Description
|
{badmemory}
|
5189b25c-5558-4bf2-bca4-289b11bd29e2
|
Global RAM defect list that can be inherited by any boot application.
|
{bootloadersettings}
|
6efb52bf-1766-41db-a6b3-0ee5eff72bd7
|
Global settings that should be inherited by all Windows boot loader applications.
|
{dbgsettings}
|
4636856e-540f-4170-a130-a84776f4c654
|
Global debugger settings that can be inherited by any boot application.
|
{emssettings}
|
0ce4991b-e6b3-4b16-b23c-5e0d9250e5d9
|
Global Emergency Management Services settings that can be inherited by any boot application.
|
{globalsettings}
|
7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e
|
Global settings that should be inherited by all boot applications.
|
{resumeloadersettings}
|
1afa9c49-16ab-4a5c-901b-212802da9460
|
Global settings that should be inherited by all resume applications.
|
The inherited type has the following layout. The contents of the value field depend on the class code:
Library. Value is not used.
Application. Value specifies the type of application that can inherit from the object. It should be set to one of the application codes that were listed earlier.
Figure 6. Layout of the BCD inherited object type
BCD Device Objects
Most devices, such as a partition on a hard disk, can be described by a single BCD element. However, more complicated devices could exist that require more than one element to describe. A BCD device object is a container for BCD elements for a complex device.
For example, a BCD device object is used when booting from a RAM disk that was created from a Windows image (WIM) file. The device object contains the location of the WIM file and, when booted over the network, the network port information. The BCDEdit identifier for this object is {ramdiskoptions}. The associated GUID is {ae5534e0-a924-466c-b836-758539a3ee3a}). It is also possible to create custom device objects.
The device type has the following layout.
Figure 7. Layout of the BCD device object type
|