What does Windows error code 15400 (ERROR_CANNOT_SWITCH_RUNLEVEL) mean?

 
Previous Next
ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED ERROR_INVALID_RUNLEVEL_SETTING

ERROR_CANNOT_SWITCH_RUNLEVEL

Requested service run-level switch cannot complete

ERROR_CANNOT_SWITCH_RUNLEVEL is Windows system result 15400 (0x00003C28). The orchestrator could not construct or execute a valid transition to the target level.

This result is an overall transition failure. It can result from dependency blockers, unsupported target state, service failures, or an unreconciled previous transition, so the first component-specific status is essential.

Where this value belongs

  • System component coordinates an ordered group of service changes.
  • Management tool requests a platform mode transition.
  • Translated orchestration result reaches a Win32 status field.

The code does not identify one service by itself. Diagnosis begins with the transition plan, target level, and earliest service or agent that rejected the plan.

Common interpretation mistakes

  • It is mishandled when the global code is logged without the first blocking service.
  • It is mishandled when the entire switch is retried while partial state is unknown.
  • It is mishandled when dependency order is reconstructed after services have already changed.
  • It is mishandled when an unsupported target level is treated as a timeout.

Troubleshooting steps

  1. Capture current level, target level, and transition ID.
  2. Persist the planned service order before execution.
  3. Find the earliest rejected or failed transition step.
  4. Query actual service states after the failure.
  5. Compare dependencies and load-order groups with the plan.
  6. Choose resume, rollback, or a fresh switch only after reconciliation.

Useful evidence

  • Preserve transition plan and requested target.
  • Preserve first blocking service or agent.
  • Preserve service states before and after failure.
  • Preserve dependency graph and load-order groups.
  • Preserve rollback or reconciliation result.

The global status should always be paired with the earliest component result; otherwise several unrelated failures look identical.

Correct handling and recovery

Correct the demonstrated blocker, reconcile partial service state, and submit a supported transition from the verified current level.

Do not blindly replay the full switch. A new attempt is safe only after ownership and current service states are known.

Difference from nearby values

ERROR_INVALID_RUNLEVEL_SETTING identifies invalid configuration. It can also arise from runtime blockers even when configuration is valid.

Practical scenario

A transition plan is valid, but a critical service rejects its stop request. The orchestrator records that service status, leaves the system at the current level, and retries only after the service defect is corrected.

Implementation guidance

Orchestrators need durable transition IDs, per-step outcomes, and explicit rollback policy. Administrators should fix the first blocker instead of treating code 15400 as a generic reboot request.

For code 15400, record runlevel_from, runlevel_to, runlevel_transition_id, runlevel_first_blocker, and runlevel_reconciled_state.

References


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