| Previous | Next |
| E_ACCESSDENIED | E_OUTOFMEMORY |
E_HANDLE
E_HANDLE means an API received a handle that is stale, closed, fabricated, of the wrong object type, or valid only in another process.
Meaning in the subsystem
E_POINTER concerns a pointer contract; E_HANDLE concerns a kernel or framework handle token whose lifetime/type is invalid.
Minimum useful evidence
- The numeric handle value together with the process ID and handle type
- Creation, duplication, transfer, close, and reuse timestamps
- Whether the handle crossed a process boundary and whether DuplicateHandle or marshaling was used
- The first call that reports the invalid handle, not a later cleanup call
Isolate the responsible condition
- Disable early cleanup and prove whether lifetime, rather than permissions, controls the result.
- Duplicate the handle explicitly into the consumer process and compare behavior.
- Use handle tracing or Application Verifier to catch the first close and subsequent reuse.
Regression proof
Apply the smallest change that addresses the first rejected condition: Make ownership explicit, close once, prevent use-after-close, and duplicate handles across processes instead of copying their integer values.
Close the incident only when stress cancellation and error paths until handle tracing shows no double close or stale reuse and the original call remains stable.
Technical references
The following documentation is most relevant when checking the code against the actual Windows contract for this condition:
Looking for a different code? Search another status or error code.