A BCD store is a namespace container for BCD objects and elements that holds the information that is required to load Windows or run other boot applications. Physically, a BCD store is a binary file in the registry hive format. A computer has a system BCD store that describes all installed Windows Vista operating systems and installed Windows boot applications. A computer can optionally have many non-system BCD stores. The characteristics of BCD stores include:
The system store is a registry hive whose file is named BCD. On PC/AT BIOS systems, the file resides in the active partition's \boot folder. On EFI systems, the file is located on the EFI system partition (ESP) under \EFI\Microsoft\Boot.
The system store is used by the Windows boot manager to control boot flow. With a multiboot system, it presents a selection menu to the user.
BCD has two interfaces: the BCD WMI provider and BCDedit.exe. Both interfaces abstract the location of the system store. BCDedit.exe operates on the system store unless a specific store is specified. With the BCD WMI API, the system store is specified by an empty string ("").
Administrators or support professionals can create additional BCD stores with BCDEdit or programmatically with the BCD WMI API. Additional stores can be useful for recovery, repair, and imaging.
Administrators or support professionals can use BCDEdit or the WMI API to import a non-system store as the system store.
Figure 2 shows an example of how the BCD hierarchy is implemented in a typical BCD store.
Figure 2. A typical BCD store
A BCD store normally has at least two and optionally many BCD objects.
A Windows boot manager object. This object contains BCD elements that pertain to the Windows boot manager, such as the entries to display in an operating system selection menu, boot tool selection menu, and timeout for the selection menus. The Windows boot manager object and its associated elements serve essentially the same purpose as the [boot loader] section of a boot.ini file. A store can optionally have multiple instances of the Windows boot manager. However, only one of them can be represented by the Windows boot manager's well-known globally unique identifier (GUID). The GUID's alias, {bootmgr} can be used to manipulate a store with BCDEdit.
At least one and optionally several Windows boot loader objects. Stores contain one instance of this object for each version or configuration of Windows Vista or Windows Server 2008 that is installed on the system. These objects contain BCD elements that are used when loading Windows or during Windows initialization such as no-execute (NX) page protection policy, physical-address extensions (PAEs) policy, kernel debugger settings, and so on. Each object and its associated elements serve essentially the same purpose as one of the lines in the [operating systems] section of boot.ini. When a computer is booted into Windows Vista, the associated boot loader object is represented by the alias {current}. When manipulating a store with BCDEdit, the default boot loader object has the alias {default}.
An optional Windows Ntldr object. The Ntldr object describes the location of Ntldr, which can be executed to boot earlier versions of Windows. It is required only if the system includes versions of Windows that are earlier than Windows Vista. It is possible to have multiple instances of objects that describe Ntldr. However, as with the Windows boot manager, only one instance can be represented by Ntldr's well-known GUID. The GUID's alias, {ntldr} can be used to manipulate a store with BCDEdit.
Optional boot applications. Stores can optionally have BCD objects that perform other boot-related operations. One example is the Windows Memory Tester, which runs memory diagnostics.
For comparison, Figure 3 shows the contents of a typical boot.ini file and how the boot.ini entries correspond to BCD objects and elements.
|