What does HRESULT 0xC00D126A (NS_E_INTERFACE_NOT_REGISTERED_IN_GIT) mean?

 
Previous Next
NS_E_BKGDOWNLOAD_FAILEDINITIALIZE NS_E_BKGDOWNLOAD_INVALID_FILE_NAME

NS_E_INTERFACE_NOT_REGISTERED_IN_GIT

How to investigate NS_E_INTERFACE_NOT_REGISTERED_IN_GIT

The code 0xC00D126A narrows the event to retrieving a COM interface from the Global Interface Table in another apartment. The result comes from a background download job or Windows Media package; preserve the first lower-level error that precedes it.

What the Player is doing

The Player’s download manager coordinates an owner window, a plug-in, background job identity, temporary files and final completion or cancellation. A downloaded .wmd package adds an extraction and cataloguing phase after transfer.

Receiving all network bytes is not the same as completing the job, moving the temporary file or successfully unpacking and cataloguing a Windows Media Download package. A realistic trigger is that a worker uses a cookie after shutdown code revoked the interface.

Capture before changing state

EvidenceWhy it matters
Producing object and operationjob GUID and Player signature, BITS/job state, expected and actual file count, remote and local names, temporary path, completion/cancel request, plug-in and callback identity, COM apartment, WMD extraction result and first underlying HRESULT
Key observationGIT cookie, requested IID, register/revoke sequence and callback apartment
Controlled comparisonRepeat the producing call after changing only this condition: register the live interface before cross-apartment use and revoke it only after callbacks finish.

Five-step isolation test

  1. Capture 0xC00D126A, the exact Player/API operation and the first timestamp at which it appears.
  2. Save GIT cookie, requested IID, register/revoke sequence and callback apartment; do this before ejecting media, reconnecting a device, canceling a job or rebuilding the Player object.
  3. Correlate the result with job GUID and Player signature, BITS/job state, expected and actual file count, remote and local names, temporary path, completion/cancel request, plug-in and callback identity, COM apartment, WMD extraction result and first underlying HRESULT.
  4. Reproduce once with the original source and destination, then apply only this change: register the live interface before cross-apartment use and revoke it only after callbacks finish.
  5. Start a fresh operation and verify that the original call advances without returning NS_E_INTERFACE_NOT_REGISTERED_IN_GIT.

Different conditions in the same family

Related resultDifferent condition
NS_E_BKGDOWNLOAD_FAILEDINITIALIZEstarting the overall background-download manager and job database
NS_E_BKGDOWNLOAD_INVALID_FILE_NAMEderiving a valid final filename for the requested download
NS_E_BKGDOWNLOAD_WMDUNPACKFAILEDextracting and validating a downloaded.wmd package after transfer

Correction criteria

The test is successful when you register the live interface before cross-apartment use and revoke it only after callbacks finish, recreate the owning operation, and the original call no longer returns it.

COM apartment lifetime is part of the failure

A pointer that was valid in the registering apartment is not a substitute for a valid Global Interface Table cookie. Record the thread/apartment that called RegisterInterfaceInGlobal, the cookie, requested IID and the point at which RevokeInterfaceFromGlobal ran. A shutdown race can make a later worker callback look like a missing Player component.

Documentation


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