| 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
- Locate the earliest API return, callback or event containing
NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTSand0xC00D2792. - Identify the exact content, license, store, device or migration object generation involved in “migration license already exists”.
- Determine whether “migration license already exists” occurred before network exchange, during response validation, while enforcing policy, or while committing protected state.
- Perform the code-specific check: record license ID/KID and compare target and source records.
- 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
| Result | Different boundary |
|---|---|
NS_E_DRM_MIGRATION_INVALID_LEGACYV2_DATA | Legacy DRM v2 data supplied to the importer is malformed or inconsistent. |
NS_E_DRM_MIGRATION_INVALID_LEGACYV2_SST_PASSWORD | The password for the legacy v2 secure-store entry is incorrect. |
NS_E_DRM_MIGRATION_NOT_SUPPORTED | The 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_EXISTSwas 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_EXISTSto “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
- Backing up and restoring DRM licenses — API and state rules relevant to this boundary.
- Obtaining the required DRM library — platform documentation used to distinguish this result from adjacent results.
- DRM client programming guide — official Windows Media DRM context for
NS_E_DRM_MIGRATION_LICENSE_ALREADY_EXISTS. - Windows Media DRM error codes
Looking for a different code? Search another status or error code.