What does HRESULT 0x80070006 (E_HANDLE) mean?

 
Could be also:
ConstantTypeOS
HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE)Win32 errorWindows
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.