| Previous | Next |
| kIOReturnCannotLock | kIOReturnNotReadable |
kIOReturnNotOpen
A lifecycle precondition failure
kIOReturnNotOpen means that the target cannot accept the operation because it has not been opened through the interface’s required lifecycle. In IOKit, open and close are not cosmetic calls: they establish ownership, allocate or reserve state, and allow a provider to decide whether a client may access a service.
This error often follows incorrect cleanup, use of an object after close, a failed open that was ignored, or a device reconnect that invalidated a previously open interface. Reopening is appropriate only after confirming that the object is still the current device instance. Reusing a stale service handle after unplug/re-enumeration can turn a simple lifecycle error into misleading downstream failures.
What to verify
- Check the result of every open, claim, and configuration call before scheduling I/O.
- Keep open-state ownership in one component and make close idempotent at the application level.
- On removal or reset, invalidate the old interface and repeat discovery before opening again.
- Log the client identifier and lifecycle transitions, not only the final I/O call that returned this status.
References
- Apple IOReturn.h reference
- Apple IOKit Fundamentals: Architectural Overview
- Apple: Working With USB Device Interfaces
Looking for a different code? Search another status or error code.