What does HRESULT 0xC00D2792 (NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS) mean?

 
Previous Next
NS_E_DRM_MIGRATION_INVALID_LEGACYV2_DATA NS_E_DRM_MIGRATION_INVALID_LEGACYV2_SST_PASSWORD

NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS

How to classify this result

When the client returns NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS (0xC00D2792), the decisive condition is the target already contains the license being imported. This result belongs to license and secure-state migration, specifically the controlled import/export path that packages legacy DRM state, validates the migration image and source identity, and commits eligible licenses to a supported target environment.

The built-in message summarizes the user-visible outcome, while the symbolic phrase “migration license already exists” preserves the exact WMDRM boundary for diagnosis. For this code, the proof step is to record license ID/KID and compare target and source records.

Minimum incident record

Capture the first NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS occurrence before retry or teardown changes state. The smallest useful record contains:

  • Code-specific proof: record license ID/KID and compare target and source records.
  • Protected identity: source and target OS versions and user SIDs.
  • Operation state: migration image identity, hash and creation time.
  • Persistence or transport: legacy V2 secure-store entry and supplied password.
  • Security context: importer plug-in availability and current operation state.
  • Correlation point: per-license duplicate or import result.

Prefer IDs, hashes, sizes, and timestamps. Never log keys, passwords, licenses, or decrypted media.

Why the producing layer matters

Two platform rules frame NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS. Migration is not equivalent to copying license-store files: the importer validates source state, target support and protected identities. A migration image, target-state corruption and an already imported license are independent outcomes and should not be collapsed into one generic restore failure.

Triage without destroying evidence

  1. Locate the earliest API return, callback or event containing NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS and 0xC00D2792.
  2. Identify the exact content, license, store, device or migration object generation involved in “migration license already exists”.
  3. Determine whether “migration license already exists” occurred before network exchange, during response validation, while enforcing policy, or while committing protected state.
  4. Perform the code-specific check: record license ID/KID and compare target and source records.
  5. Make one narrow correction — skip the duplicate or use documented reconciliation instead of overwriting it — and repeat the same producing operation.

Why the symbolic name matters

ResultDifferent boundary
NS_E_DRM_MIGRATION_INVALID_LEGACYV2_DATALegacy DRM v2 data supplied to the importer is malformed or inconsistent.
NS_E_DRM_MIGRATION_INVALID_LEGACYV2_SST_PASSWORDThe password for the legacy v2 secure-store entry is incorrect.
NS_E_DRM_MIGRATION_NOT_SUPPORTEDThe selected importer plug-in does not support this migration format or operation.

Order the NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS event chain by timestamp; prefer the earliest specific result.

Shortcuts that make diagnosis worse

  • Avoid editing migration images or combining data from different source machines. That changes evidence without demonstrating why NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS was produced.
  • Avoid running concurrent playback or DRM operations against the source while migration owns it. That shortcut can create a second store, identity or policy problem.
  • Do not reduce NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS to “DRM failed” in telemetry; retain the HRESULT, symbolic name, operation and object identity.

Recovery at the right layer

The corrective direction is to skip the duplicate or use documented reconciliation instead of overwriting it. Preserve the original content/header, store or migration material for NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS until the operation succeeds and survives a fresh application object or required restart.

Representative case: The same backup/migration set is imported twice.

Completion criteria

After the repair, recreate the WMDRM object and run the smallest reproducer for NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS. Confirm that 0xC00D2792 no longer occurs, that the intended license action completes, and that no store, certificate, clock or migration warning replaces it.

Code-specific operational note

The symbolic phrase “migration license already exists” is the important search and telemetry key for NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS. Keep it beside the exact value 0xC00D2792; the official message “The license being imported already exists” is useful to users, but it does not identify the producing API, object generation or protected identity on its own.

Technical references


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