What does NTSTATUS 0xC000009A (STATUS_INSUFFICIENT_RESOURCES) mean?

 
Previous Next
STATUS_ALLOTTED_SPACE_EXCEEDED STATUS_DFS_EXIT_PATH_FOUND

STATUS_INSUFFICIENT_RESOURCES

Treat this as a resource-allocation path, not automatically as bad physical RAM

STATUS_INSUFFICIENT_RESOURCES is widely used when kernel or driver code cannot obtain a resource needed to continue. Pool allocation is a common source, but the status does not by itself prove a machine is physically out of memory. A local allocation can fail because of pool pressure, allocation size, fragmentation constraints, framework-object creation, or deliberate fault injection during driver testing.

Microsoft's pool-allocation guidance explicitly tells NTSTATUS-returning driver routines to handle a null allocation or return STATUS_INSUFFICIENT_RESOURCES. WDF routines such as WdfMemoryCreate also document the value for insufficient memory. Driver Verifier can intentionally fail allocations with low-resource simulation so error paths become testable; a correctly written driver must unwind partial state and complete the request cleanly.

Log the allocation type, requested size, pool tag or object type, IRQL, retry policy, and allocations already held by the operation. Avoid an unbounded immediate retry loop because it can intensify pressure and hide the original allocation site. For critical I/O paths, consider documented forward-progress or preallocation mechanisms. When reproducing a driver bug, systematic low-resource simulation is more informative than waiting for a production machine to become exhausted.

What to inspect

  • Find the first failed allocation or resource acquisition in the request path.
  • Verify partial allocations, references, locks, and IRPs are released on the failure branch.
  • Use Driver Verifier low-resource testing to make allocation-failure paths reproducible.

References


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