| Previous | Next |
| NS_DRM_E_MIGRATION_UPGRADE_WITH_DIFF_SID | NS_DRM_E_MIGRATION_TARGET_MACHINE_LESS_THAN_LH |
NS_DRM_E_MIGRATION_SOURCE_MACHINE_IN_USE
What this HRESULT isolates
The symbolic result NS_DRM_E_MIGRATION_SOURCE_MACHINE_IN_USE narrows 0xC00D278C to license and secure-state migration. In practical terms, the source DRM environment is busy with another operation during migration; the producing layer is 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 source machine in use” preserves the exact WMDRM boundary for diagnosis. For this code, the proof step is to identify active playback, acquisition, store or DRM processes.
Which component owns the failure
Do not flatten NS_DRM_E_MIGRATION_SOURCE_MACHINE_IN_USE into a generic DRM error. Migration is not equivalent to copying license-store files: the importer validates source state, target support and protected identities. The second relevant rule is that a migration image, target-state corruption and an already imported license are independent outcomes and should not be collapsed into one generic restore failure.
Diagnostic inputs that separate the causes
Capture the first NS_DRM_E_MIGRATION_SOURCE_MACHINE_IN_USE occurrence before retry or teardown changes state. The smallest useful record contains:
- Code-specific proof: identify active playback, acquisition, store or DRM processes.
- Protected identity: per-license duplicate or import result.
- Operation state: source and target OS versions and user SIDs.
- Persistence or transport: migration image identity, hash and creation time.
- Security context: legacy V2 secure-store entry and supplied password.
- Correlation point: importer plug-in availability and current operation state.
Prefer IDs, hashes, sizes, and timestamps. Never log keys, passwords, licenses, or decrypted media.
How to prove the condition
- Start from
0xC00D278Cand map it to the first WMDRM object that returned it. - Separate content/header evidence, license evidence, machine/device evidence and service/network evidence around “migration source machine in use”.
- Before retrying
NS_DRM_E_MIGRATION_SOURCE_MACHINE_IN_USE, check whether another “migration source machine in use” operation was active or whether the previous result may have committed partially. - Apply the smallest supported fix: quiesce the source and retry migration with exclusive ownership; avoid resetting unrelated protected state.
What a supported fix should change
The supported response to NS_DRM_E_MIGRATION_SOURCE_MACHINE_IN_USE is narrow: quiesce the source and retry migration with exclusive ownership. After correcting NS_DRM_E_MIGRATION_SOURCE_MACHINE_IN_USE, reopen or recreate the object that owned “migration source machine in use” so cached state from the failed generation is not mistaken for the repair result.
Representative case: Protected playback keeps the source store open during export.
Do not merge these HRESULTs
| Result | Different boundary |
|---|---|
NS_DRM_E_MIGRATION_TARGET_MACHINE_LESS_THAN_LH | The target operating system is older than the migration mechanism supports. |
NS_DRM_E_MIGRATION_UPGRADE_WITH_DIFF_SID | Migration or upgrade sees a different user SID than the protected source state expects. |
NS_DRM_E_MIGRATION_IMAGE_ALREADY_EXISTS | A migration image already exists for the selected operation or destination. |
Order the NS_DRM_E_MIGRATION_SOURCE_MACHINE_IN_USE event chain by timestamp; prefer the earliest specific result.
How to know the fix is real
A valid regression for NS_DRM_E_MIGRATION_SOURCE_MACHINE_IN_USE has two fixtures: one that deliberately produces “the source DRM environment is busy with another operation during migration” and one that applies the targeted correction. Compare callback order, selected license/KID, final rights decision and persistence state; disappearance of the “migration source machine in use” dialog alone is not proof.
Code-specific operational note
The symbolic phrase “migration source machine in use” is the important search and telemetry key for NS_DRM_E_MIGRATION_SOURCE_MACHINE_IN_USE. Keep it beside the exact value 0xC00D278C; the official message “The Digital Rights Management component is in use during license migration. Contact Microsoft product support.” 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 — official Windows Media DRM context for
NS_DRM_E_MIGRATION_SOURCE_MACHINE_IN_USE. - Obtaining the required DRM library — API and state rules relevant to this boundary.
- DRM client programming guide — platform documentation used to distinguish this result from adjacent results.
- Windows Media DRM error codes
Looking for a different code? Search another status or error code.