What does Windows error code 160 (ERROR_BAD_ARGUMENTS) mean?

 
Could be also:
ConstantTypeOS
INTERNAL_POWER_ERRORBugCheck CodeWindows
Previous Next
ERROR_BAD_THREADID_ADDR ERROR_BAD_PATHNAME

ERROR_BAD_ARGUMENTS

What ERROR_BAD_ARGUMENTS means

One or more arguments supplied to the operation are invalid for the requested function. This broad legacy result means the call contract was violated but does not identify which parameter. It is often emitted by compatibility APIs whose modern equivalents would use a more specific invalid-parameter code.

Common causes

  • A numeric value is outside the documented range
  • Two individually valid parameters form an invalid combination
  • A reserved field is nonzero
  • The caller and callee use different structure versions

How to investigate

  1. Record all arguments in a privacy-safe form at the failing boundary
  2. Validate ranges and cross-field invariants before the call
  3. Compare structure size and version fields with the runtime documentation
  4. Use a minimal call and add parameters back one at a time

Developer guidance

Perform explicit validation close to the public API boundary and return a field-specific diagnostic in application logs. Avoid silently coercing invalid values because that hides caller defects.

Administrator and support guidance

Check configuration values that feed the call, especially after upgrades. A rollback may mask a schema mismatch, so retain both old and new configuration versions.

How this code differs from related results

Unlike ERROR_INVALID_PARAMETER, this older code may come from a compatibility subsystem. The investigation principle is the same, but the originating API matters.

Evidence worth collecting

For ERROR_BAD_ARGUMENTS, begin the trace at the operation where a numeric value is outside the documented range. Preserve the exact API boundary, numeric result, process and thread identifiers, relevant object state, and the component version. The first verification point should be to record all arguments in a privacy-safe form at the failing boundary. This evidence distinguishes the specific this result contract from a later secondary failure.

Recovery and verification

Recovery for it should address the observed condition rather than merely retrying the same call. After the change, reproduce the scenario in which a numeric value is outside the documented range, then confirm that the intended operation completes and that cleanup returns all associated resources. Also verify that the next repeated operation follows the same successful path without increasing the resource class implicated by this result.

When to escalate

Escalate this result with a minimal reproduction focused on the failing pipe or compatibility boundary. Include the operating-system build, binary architecture, runtime or compatibility-layer version, the exact input values, and a timestamped trace showing a numeric value is outside the documented range. For the result escalation record, note whether changing concurrency, object lifetime, target process, module set, or endpoint location alters the result.

References


Looking for a different code? Search another status or error code.