| Previous | Next |
| STATUS_RING_PREVIOUSLY_ABOVE_QUOTA | STATUS_RING_SIGNAL_OPPOSITE_ENDPOINT |
STATUS_RING_NEWLY_EMPTY
The consumer removed the last readable packet
STATUS_RING_NEWLY_EMPTY is about the post-removal state: the current packet was successfully removed and no packet remains readable. This differs from a ring that was empty before an operation. The status therefore marks a transition from active data to an idle queue.
Shared-memory ring designs use read and write positions to decide whether data is present. The documented Hyper-V VMBus model has an incoming and outgoing ring for each channel, with read/write indices in the ring header and packet delivery to an endpoint callback. When a consumer catches the writer, a subsequent interrupt or callback policy may change. This is only a public example of the state machine; the NTSTATUS value is not documented as exclusive to VMBus.
Investigate premature-idle bugs by recording the packet length, old and new read positions, observed write position, and any concurrent producer publication. A stale write index or missing acquire/release ordering can make a consumer believe the ring is empty while a producer has already published data. Do not automatically poll in a tight loop after this status; verify the design’s intended notification mechanism for the next empty-to-non-empty transition.
What to inspect
- Log old/new read indices and the write index used for the empty decision.
- Verify memory-ordering rules around producer publication and consumer observation.
- Confirm that the idle path re-arms the documented notification mechanism.
References
- Microsoft Open Specifications: NTSTATUS values
- Linux kernel: VMBus ring-buffer layout
- Microsoft WDK: incoming VMBus packets
- Microsoft WDK: VMBus KMCL API
- Microsoft: Using NTSTATUS values
Looking for a different code? Search another status or error code.