What does NTSTATUS 0xC000022D (STATUS_RETRY) mean?

 
Previous Next
STATUS_CONVERT_TO_LARGE STATUS_FOUND_OUT_OF_SCOPE

STATUS_RETRY

Retry is part of the individual API contract, including when and how to try again

STATUS_RETRY is not a universal instruction to immediately call the same function in a tight loop. It says the request needs another attempt, but the returning API determines the retry timing, required state changes, and whether a retry count must be bounded. The caller must preserve that contract.

The D3COLD auxiliary-power callback is explicit: when it returns STATUS_RETRY, RetryInSeconds tells the driver how long to wait before the next request. Display miniport documentation gives other reasons, such as pending flips or the need to execute later at PASSIVE_LEVEL. RDBSS documentation also shows that some routines are not permitted to return STATUS_RETRY; if they need a retry loop, they must handle it internally. These examples demonstrate why the call site matters.

Log the retry reason and any provider-supplied delay or state flag. Set an upper bound where the contract requires caller-driven retries and keep the original failure if the limit is exceeded. Avoid retrying after cancellation, object teardown, or a permanent capability status. In asynchronous driver code, the retry path must also preserve IRP ownership and completion rules so the original request is completed exactly once.

What to inspect

  • Read the failing routine's return contract for delay, level, or state requirements before retrying.
  • Bound caller-controlled retries and record the attempt count plus the first failure.
  • Recheck cancellation and object lifetime before resubmitting asynchronous work.

References


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