| Previous | Next |
| kIOReturnExclusiveAccess | kIOReturnUnsupported |
kIOReturnBadMessageID
Identifier mismatch, not payload size
kIOReturnBadMessageID means that sent and received messages had different msg_id values. It points to disagreement about the operation or message identity in a communication path. The header does not describe a hardware fault, so replacing a cable or retrying a device transfer is usually not the first useful response.
Look for an interface-version mismatch, an incorrect selector or notification ID, request routing to the wrong service, or a lifecycle race in which a response belongs to a different operation. This condition is distinct from kIOReturnMessageTooLarge, where the problem is message size rather than identity.
How to diagnose it
- Capture the expected and received identifiers, interface version, selector, and service instance.
- Verify that both sides were built against compatible headers and use the same protocol or method definition.
- Correlate requests and responses with a per-operation identifier so that stale completions are visible.
- Invalidate and rediscover a service after reset or removal before accepting messages from a new instance.
References
- Apple XNU source: IOReturn.h
- Apple: IOKit architectural overview
- Apple: Introduction to IOKit Fundamentals
Looking for a different code? Search another status or error code.