// // Copyright (c) 2008-2011, Kenneth Bell // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. // // // Symbolic names of BCD Elements taken from Geoff Chappell's website: // http://www.geoffchappell.com/viewer.htm?doc=notes/windows/boot/bcd/elements.htm // // namespace DiscUtils.BootConfig { /// /// Enumeration of known BCD elements. /// public enum WellKnownElement : int { /// /// Not specified. /// None = 0, /// /// Device containing the application. /// LibraryApplicationDevice = 0x11000001, /// /// Path to the application. /// LibraryApplicationPath = 0x12000002, /// /// Description of the object. /// LibraryDescription = 0x12000004, /// /// Preferred locale of the object. /// LibraryPreferredLocale = 0x12000005, /// /// Objects containing elements inherited by the object. /// LibraryInheritedObjects = 0x14000006, /// /// Upper bound on physical addresses used by Windows. /// LibraryTruncatePhysicalMemory = 0x15000007, /// /// List of objects, indicating recovery sequence. /// LibraryRecoverySequence = 0x14000008, /// /// Enables auto recovery. /// LibraryAutoRecoveryEnabled = 0x16000009, /// /// List of bad memory regions. /// LibraryBadMemoryList = 0x1700000A, /// /// Allow use of bad memory regions. /// LibraryAllowBadMemoryAccess = 0x1600000B, /// /// Policy on use of first mega-byte of physical RAM. /// /// 0 = UseNone, 1 = UseAll, 2 = UsePrivate. LibraryFirstMegaBytePolicy = 0x1500000C, /// /// Debugger enabled. /// LibraryDebuggerEnabled = 0x16000010, /// /// Debugger type. /// /// 0 = Serial, 1 = 1394, 2 = USB. LibraryDebuggerType = 0x15000011, /// /// Debugger serial port address. /// LibraryDebuggerSerialAddress = 0x15000012, /// /// Debugger serial port. /// LibraryDebuggerSerialPort = 0x15000013, /// /// Debugger serial port baud rate. /// LibraryDebuggerSerialBaudRate = 0x15000014, /// /// Debugger 1394 channel. /// LibraryDebugger1394Channel = 0x15000015, /// /// Debugger USB target name. /// LibraryDebuggerUsbTargetName = 0x12000016, /// /// Debugger ignores user mode exceptions. /// LibraryDebuggerIgnoreUserModeExceptions = 0x16000017, /// /// Debugger start policy. /// /// 0 = Active, 1 = AutoEnable, 2 = Disable. LibraryDebuggerStartPolicy = 0x15000018, /// /// Emergency Management System enabled. /// LibraryEmergencyManagementSystemEnabled = 0x16000020, /// /// Emergency Management System serial port. /// LibraryEmergencyManagementSystemPort = 0x15000022, /// /// Emergency Management System baud rate. /// LibraryEmergencyManagementSystemBaudRate = 0x15000023, /// /// Load options. /// LibraryLoadOptions = 0x12000030, /// /// Displays advanced options. /// LibraryDisplayAdvancedOptions = 0x16000040, /// /// Displays UI to edit advanced options. /// LibraryDisplayOptionsEdit = 0x16000041, /// /// FVE (Full Volume Encryption - aka BitLocker?) KeyRing address. /// LibraryFveKeyRingAddress = 0x16000042, /// /// Device to contain Boot Status Log. /// LibraryBootStatusLogDevice = 0x11000043, /// /// Path to Boot Status Log. /// LibraryBootStatusLogFile = 0x12000044, /// /// Whether to append to the existing Boot Status Log. /// LibraryBootStatusLogAppend = 0x12000045, /// /// Disables graphics mode. /// LibraryGraphicsModeDisabled = 0x16000046, /// /// Configure access policy. /// /// 0 = default, 1 = DisallowMmConfig. LibraryConfigAccessPolicy = 0x15000047, /// /// Disables integrity checks. /// LibraryDisableIntegrityChecks = 0x16000048, /// /// Allows pre-release signatures (test signing). /// LibraryAllowPrereleaseSignatures = 0x16000049, /// /// Console extended input. /// LibraryConsoleExtendedInput = 0x16000050, /// /// Initial console input. /// LibraryInitialConsoleInput = 0x15000051, /// /// Application display order. /// BootMgrDisplayOrder = 0x24000001, /// /// Application boot sequence. /// BootMgrBootSequence = 0x24000002, /// /// Default application. /// BootMgrDefaultObject = 0x23000003, /// /// User input timeout. /// BootMgrTimeout = 0x25000004, /// /// Attempt to resume from hibernated state. /// BootMgrAttemptResume = 0x26000005, /// /// The resume application. /// BootMgrResumeObject = 0x23000006, /// /// The tools display order. /// BootMgrToolsDisplayOrder = 0x24000010, /// /// Displays the boot menu. /// BootMgrDisplayBootMenu = 0x26000020, /// /// No error display. /// BootMgrNoErrorDisplay = 0x26000021, /// /// The BCD device. /// BootMgrBcdDevice = 0x21000022, /// /// The BCD file path. /// BootMgrBcdFilePath = 0x22000023, /// /// The custom actions list. /// BootMgrCustomActionsList = 0x27000030, /// /// Device containing the Operating System. /// OsLoaderOsDevice = 0x21000001, /// /// System root on the OS device. /// OsLoaderSystemRoot = 0x22000002, /// /// The resume application associated with this OS. /// OsLoaderAssociatedResumeObject = 0x23000003, /// /// Auto-detect the correct kernel & HAL. /// OsLoaderDetectKernelAndHal = 0x26000010, /// /// The filename of the kernel. /// OsLoaderKernelPath = 0x22000011, /// /// The filename of the HAL. /// OsLoaderHalPath = 0x22000012, /// /// The debug transport path. /// OsLoaderDebugTransportPath = 0x22000013, /// /// NX (No-Execute) policy. /// /// 0 = OptIn, 1 = OptOut, 2 = AlwaysOff, 3 = AlwaysOn. OsLoaderNxPolicy = 0x25000020, /// /// PAE policy. /// /// 0 = default, 1 = ForceEnable, 2 = ForceDisable. OsLoaderPaePolicy = 0x25000021, /// /// WinPE mode. /// OsLoaderWinPeMode = 0x26000022, /// /// Disable automatic reboot on OS crash. /// OsLoaderDisableCrashAutoReboot = 0x26000024, /// /// Use the last known good settings. /// OsLoaderUseLastGoodSettings = 0x26000025, /// /// Disable integrity checks. /// OsLoaderDisableIntegrityChecks = 0x26000026, /// /// Allows pre-release signatures (test signing). /// OsLoaderAllowPrereleaseSignatures = 0x26000027, /// /// Loads all executables above 4GB boundary. /// OsLoaderNoLowMemory = 0x26000030, /// /// Excludes a given amount of memory from use by Windows. /// OsLoaderRemoveMemory = 0x25000031, /// /// Increases the User Mode virtual address space. /// OsLoaderIncreaseUserVa = 0x25000032, /// /// Size of buffer (in MB) for perfomance data logging. /// OsLoaderPerformanceDataMemory = 0x25000033, /// /// Uses the VGA display driver. /// OsLoaderUseVgaDriver = 0x26000040, /// /// Quiet boot. /// OsLoaderDisableBootDisplay = 0x26000041, /// /// Disables use of the VESA BIOS. /// OsLoaderDisableVesaBios = 0x26000042, /// /// Maximum processors in a single APIC cluster. /// OsLoaderClusterModeAddressing = 0x25000050, /// /// Forces the physical APIC to be used. /// OsLoaderUsePhysicalDestination = 0x26000051, /// /// The largest APIC cluster number the system can use. /// OsLoaderRestrictApicCluster = 0x25000052, /// /// Forces only the boot processor to be used. /// OsLoaderUseBootProcessorOnly = 0x26000060, /// /// The number of processors to be used. /// OsLoaderNumberOfProcessors = 0x25000061, /// /// Use maximum number of processors. /// OsLoaderForceMaxProcessors = 0x26000062, /// /// Processor specific configuration flags. /// OsLoaderProcessorConfigurationFlags = 0x25000063, /// /// Uses BIOS-configured PCI resources. /// OsLoaderUseFirmwarePciSettings = 0x26000070, /// /// Message Signalled Interrupt setting. /// OsLoaderMsiPolicy = 0x25000071, /// /// PCE Express Policy. /// OsLoaderPciExpressPolicy = 0x25000072, /// /// The safe boot option. /// /// 0 = Minimal, 1 = Network, 2 = DsRepair. OsLoaderSafeBoot = 0x25000080, /// /// Loads the configured alternate shell during a safe boot. /// OsLoaderSafeBootAlternateShell = 0x26000081, /// /// Enables boot log. /// OsLoaderBootLogInitialization = 0x26000090, /// /// Displays diagnostic information during boot. /// OsLoaderVerboseObjectLoadMode = 0x26000091, /// /// Enables the kernel debugger. /// OsLoaderKernelDebuggerEnabled = 0x260000A0, /// /// Causes the kernal to halt early during boot. /// OsLoaderDebuggerHalBreakpoint = 0x260000A1, /// /// Enables Windows Emergency Management System. /// OsLoaderEmsEnabled = 0x260000B0, /// /// Forces a failure on boot. /// OsLoaderForceFailure = 0x250000C0, /// /// The OS failure policy. /// OsLoaderDriverLoadFailurePolicy = 0x250000C1, /// /// The OS boot status policy. /// OsLoaderBootStatusPolicy = 0x250000E0, /// /// The device containing the hibernation file. /// ResumeHiberFileDevice = 0x21000001, /// /// The path to the hibernation file. /// ResumeHiberFilePath = 0x22000002, /// /// Allows resume loader to use custom settings. /// ResumeUseCustomSettings = 0x26000003, /// /// PAE settings for resume application. /// ResumePaeMode = 0x26000004, /// /// An MS-DOS device with containing resume application. /// ResumeAssociatedDosDevice = 0x21000005, /// /// Enables debug option. /// ResumeDebugOptionEnabled = 0x26000006, /// /// The number of iterations to run. /// MemDiagPassCount = 0x25000001, /// /// The test mix. /// MemDiagTestMix = 0x25000002, /// /// The failure count. /// MemDiagFailureCount = 0x25000003, /// /// The tests to fail. /// MemDiagTestToFail = 0x25000004, /// /// BPB string. /// LoaderBpbString = 0x22000001, /// /// Causes a soft PXE reboot. /// StartupPxeSoftReboot = 0x26000001, /// /// PXE application name. /// StartupPxeApplicationName = 0x22000002, /// /// Offset of the RAM disk image. /// DeviceRamDiskImageOffset = 0x35000001, /// /// Client port for TFTP. /// DeviceRamDiskTftpClientPort = 0x35000002, /// /// Device containing the SDI file. /// DeviceRamDiskSdiDevice = 0x31000003, /// /// Path to the SDI file. /// DeviceRamDiskSdiPath = 0x32000004, /// /// Length of the RAM disk image. /// DeviceRamDiskRamDiskImageLength = 0x35000005, /// /// Exports the image as a CD. /// DeviceRamDiskExportAsCd = 0x36000006, /// /// The TFTP transfer block size. /// DeviceRamDiskTftpBlockSize = 0x35000007, /// /// The device type. /// SetupDeviceType = 0x45000001, /// /// The application relative path. /// SetupAppRelativePath = 0x42000002, /// /// The device relative path. /// SetupRamDiskDeviceRelativePath = 0x42000003, /// /// Omit OS loader elements. /// SetupOmitOsLoaderElements = 0x46000004, /// /// Recovery OS flag. /// SetupRecoveryOs = 0x46000010, } }