| Previous | Next |
| STATUS_DATA_OVERWRITTEN | STATUS_RING_PREVIOUSLY_EMPTY |
STATUS_RESOURCEMANAGER_READ_ONLY
A KTM enlistment can declare that it cannot affect the transaction outcome
STATUS_RESOURCEMANAGER_READ_ONLY belongs to Kernel Transaction Manager terminology. A resource manager participates in transactions through enlistments and receives KTM notifications. Microsoft documents a read-only enlistment path for a resource manager that made no data modifications or only monitored the transaction.
When the resource manager calls the read-only enlistment routine, the enlistment can no longer influence the transaction outcome and KTM does not durably record it for recovery. Microsoft also documents that KTM stops delivering notifications to that read-only enlistment. This is materially different from a write-protected storage volume: “read-only” describes the resource manager’s participation in this transaction, not a device attribute.
Capture the transaction, resource manager, enlistment, notification sequence, and the moment the resource manager decided it had made no changes. If later code expects prepare/commit/rollback notifications, verify that it did not first transition the enlistment to read-only. Do not retry a modification through the same read-only transactional role as though a disk write failed. The resource manager’s state machine and enlistment decision must match whether it actually owns transactional updates.
What to inspect
- Identify the KTM resource manager and enlistment rather than looking for a read-only disk or file attribute.
- Trace whether the resource manager declared the enlistment read-only before later code expected transaction notifications.
- Check recovery assumptions because a read-only enlistment is not durably recorded for KTM recovery.
References
- Microsoft: Creating a resource manager
- Microsoft: Kernel Transaction Manager functions
- Microsoft: Enlistments
- Microsoft: Transaction notifications
- Microsoft Open Specifications: NTSTATUS values
Looking for a different code? Search another status or error code.