| Previous | Next |
| STATUS_RESOURCEMANAGER_READ_ONLY | STATUS_RING_PREVIOUSLY_FULL |
STATUS_RING_PREVIOUSLY_EMPTY
The important event is the empty-to-readable boundary transition
STATUS_RING_PREVIOUSLY_EMPTY is a success/information-style ring result describing state before a successful insertion. The packet was accepted; the useful diagnostic fact is that the queue had no readable packet immediately before this write. That boundary matters because a consumer that was idle can now have work available.
Do not turn the status into a generic “ring buffer error.” Public VMBus documentation provides a concrete model of a bidirectional packet channel with separate incoming and outgoing shared-memory rings, read/write indices, and an opposite endpoint. In such designs the transition from empty to non-empty is exactly the kind of event that can change whether another side needs to be notified. The NTSTATUS text does not make the value VMBus-specific, so logs should retain the component and API that returned it.
When this status appears unexpectedly often, trace the producer write index, consumer read index, packet length, ring capacity, and the notification decision taken after insertion. A lost wakeup investigation should focus on ordering around the index update and signal, not on retrying the successful insertion. Conversely, repeatedly signalling on every insert can create needless interrupt or event traffic when the ring was already non-empty.
What to inspect
- Record pre-insert read/write indices and the post-insert write index.
- Verify whether the caller treats this information status as successful.
- Correlate the boundary transition with the wakeup or endpoint-notification path.
References
- Microsoft Open Specifications: NTSTATUS values
- Linux kernel: VMBus ring buffers
- Microsoft WDK: VMBus KMCL API
- Microsoft WDK: VmbPacketSend
- Microsoft: Using NTSTATUS values
Looking for a different code? Search another status or error code.
