| Previous | Next |
| RPC_X_NULL_REF_POINTER | RPC_X_BYTE_COUNT_TOO_SMALL |
RPC_X_ENUM_VALUE_OUT_OF_RANGE
An enum value failed the RPC contract
RPC_X_ENUM_VALUE_OUT_OF_RANGE means that a stub received or produced an enumeration value outside the values permitted by the interface it is processing. The important boundary is the RPC contract: an enum is serialized as part of NDR data, then interpreted according to the IDL and the generated stub. Casting an arbitrary integer to a C or C++ enum does not make it a valid protocol value.
This is different from an application-defined “invalid option” response. The error is raised while the remote-call parameters are being validated or reconstructed, so the manager routine may not have received a usable value at all.
Where mismatches come from
- Client and server use different IDL revisions and one side added, removed, or renumbered enum members.
- A hand-written serializer, FFI binding, test fuzzer, or corrupted intermediate record emits a raw numeric value instead of a defined enumerator.
- Version-gated feature values are sent to an endpoint that negotiated an older interface or transfer contract.
- Code confuses a bitmask with an enum and combines values that should be mutually exclusive.
How to diagnose it
- Record interface UUID, interface version, procedure number, enum field name, and numeric value at the client boundary.
- Compare the generated MIDL header, proxy, and server stub from both builds; do not compare only application DLL versions.
- Check whether the value is meant to be an enum, a flags field, or a discriminant for a union.
- Reject unsupported feature values before making the call when the protocol defines capability or version negotiation.
References
Microsoft: RPC NDR Engine · The Open Group: DCE NDR transfer syntax · Microsoft: strict NDR/NDR64 consistency checks
Looking for a different code? Search another status or error code.