| 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
| Evidence | Why it matters |
|---|---|
| Producing object and operation | 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 |
| Key observation | GIT cookie, requested IID, register/revoke sequence and callback apartment |
| Controlled comparison | Repeat 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
- Capture
0xC00D126A, the exact Player/API operation and the first timestamp at which it appears. - 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.
- 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.
- 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.
- 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 result | Different condition |
|---|---|
NS_E_BKGDOWNLOAD_FAILEDINITIALIZE | starting the overall background-download manager and job database |
NS_E_BKGDOWNLOAD_INVALID_FILE_NAME | deriving a valid final filename for the requested download |
NS_E_BKGDOWNLOAD_WMDUNPACKFAILED | extracting 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.