What does HRESULT 0xC0390002 (ERROR_BCD_TOO_MANY_ELEMENTS) mean?

 
Could be also:
ConstantTypeOS
STATUS_BCD_TOO_MANY_ELEMENTSNTSTATUSWindows
Previous Next
ERROR_VOLMGR_RAID5_NOT_SUPPORTED ERROR_VHD_DRIVE_FOOTER_MISSING

ERROR_BCD_TOO_MANY_ELEMENTS

The important question is not merely what the text says, but which contract was being evaluated. At this boundary, enumerating a BCD object/store exceeded an allowed element threshold, often indicating an unexpectedly large, duplicated, or corrupted configuration set.

Start with the failing layer

BCD repair should begin with an export and an inventory of both BCD objects and firmware entries. Object GUIDs, EFI System Partition paths, referenced device elements, firmware NVRAM capacity, and boot order must be correlated; editing one representation in isolation can create a second inconsistency.

Do not collapse this result into a nearby status. The code does not identify which element is invalid; it states that the enumerated set exceeds the accepted bound. Compare lifecycle, identity, caller, and first API.

Preserve before retrying

Incident evidenceQuestion it answers
Store copy/hash, object GUID, element count by type, and enumeration APISeparates contract failure from environment.
Duplicate/stale objects, inherited chains, and firmware-generated entriesCreates a stable before/after control.
Windows build and any management tool that recently rewrote the storeTests whether the first boundary moves.
Whether the count grows after each deployment, imaging, or synchronization cyclePins evidence to one attempt.

Identifiers, timestamps, versions, counts, state flags, hashes, and redacted paths normally provide enough correlation. Keep credentials, private keys, message bodies, recovery material, and personal data out of routine incident logs.

Three useful comparisons

  • Enumerate an offline copy with a bounded diagnostic tool; retain one negative control so that a broad workaround is not mistaken for a root-cause correction.
  • Compare against a newly created store for the same machine role; keep every other input fixed and record the first event that differs from the failing run.
  • Remove only verified stale test entries from a duplicate store and measure the threshold again; use a disposable or backed-up environment when the comparison changes boot, security, device, queue, or encryption state.

One clean comparison is more informative than many uncontrolled retries. For the controlled comparison, keep the original inputs and identity, change a single suspected condition, and stop as soon as the first differing event is visible.

Decision points

Interpret the controlled tests as evidence about the returning boundary:

Observed resultInterpretation
The minimal or known-good comparison succeeds The control works; inspect production-specific state.
The control fails at the same first operation The control also fails; inspect host/provider evidence.
A new HRESULT marks another boundaryThe failure moved to another boundary; diagnose the new status separately rather than treating it as confirmation that the entire operation is fixed.

A defensible fix

The corrective action should be narrow: Back up the store, remove provably obsolete duplicates or rebuild from authoritative boot entries rather than truncating enumeration results. Preserve the pre-change configuration or trace.

Close the incident only when the cleaned store enumerates completely, boots every retained entry, and repeated servicing no longer increases element count. Repeat under the original identity and state. A different environment is comparison, not proof.

Technical references

These references define the HRESULT family and subsystem contract used above:


Looking for a different code? Search another status or error code.