| Previous | Next |
| MQ_ERROR_INVALID_OWNER | MQ_ERROR_RESULT_BUFFER_TOO_SMALL |
MQ_ERROR_UNSUPPORTED_ACCESS_MODE
What this result actually narrows down
Applications should keep MQ_ERROR_UNSUPPORTED_ACCESS_MODE attached to the exact MSMQ call that produced it; translating it immediately to “queue error” discards the diagnostic boundary. Interpret it as requested open/access mode has no MSMQ implementation, not as a general transport outage. This differs from access denied: authorization was not evaluated because the mode itself is unsupported.
For MQ_ERROR_UNSUPPORTED_ACCESS_MODE, A service restart can make the symptom disappear while removing the state needed to identify it. When diagnosing MQ_ERROR_UNSUPPORTED_ACCESS_MODE, preserve operation parameters, identity, queue format name, and logs before intervention.
When diagnosing MQ_ERROR_UNSUPPORTED_ACCESS_MODE, MSMQ exposes more specific property, queue, directory, transaction, and security HRESULTs. In the MQ_ERROR_UNSUPPORTED_ACCESS_MODE path, A generic value often means that the useful subordinate error was discarded by a wrapper or appears earlier in the event timeline.
MSMQ objects involved
| Subsystem | the MSMQ API boundary that returned a nonspecific failure |
|---|---|
| Decisive boundary | the generic HRESULT is useful only when correlated with the operation, property statuses, service logs, and preceding failure |
| Code-specific focus | requested open/access mode has no MSMQ implementation |
| Primary recovery rule | Use a documented receive, peek, send, or administration access combination. |
When diagnosing MQ_ERROR_UNSUPPORTED_ACCESS_MODE, because the code is nonspecific, it should never be the only telemetry field. In the MQ_ERROR_UNSUPPORTED_ACCESS_MODE path, the operation and subordinate status determine whether retry is safe. For MQ_ERROR_UNSUPPORTED_ACCESS_MODE, the code-specific boundary is requested open/access mode has no MSMQ implementation.
Triage data
- Msmq service, application, and transaction logs around the first occurrence; associate it explicitly with
MQ_ERROR_UNSUPPORTED_ACCESS_MODE. - When diagnosing
MQ_ERROR_UNSUPPORTED_ACCESS_MODE, api or com method, raw parameters, and calling identity; capture the value before cleanup or retry changes it. - In the
MQ_ERROR_UNSUPPORTED_ACCESS_MODEpath, property-level status values and first windows error in the same timeline; compare it with a known-good call using the same account and queue type. - For this
MQ_ERROR_UNSUPPORTED_ACCESS_MODEresult, record the queue path or format name, local/remote placement, transactional flag, caller SID, process build, and UTC correlation ID when they apply.
For MQ_ERROR_UNSUPPORTED_ACCESS_MODE, log certificate thumbprints, provider names, SIDs, GUIDs, lengths, and hashes where useful, but do not log private keys, symmetric keys, credentials, or confidential message bodies.
A safe investigation order
- Record the unsigned HRESULT,
MQ_ERROR_UNSUPPORTED_ACCESS_MODE, and the native API or COM method before a framework replaces it with a generic exception. - Reproduce with the smallest queue/message/property set that still returns
MQ_ERROR_UNSUPPORTED_ACCESS_MODE; change one precondition at a time. - In the
MQ_ERROR_UNSUPPORTED_ACCESS_MODEpath, verify the postcondition after the failed call: queue existence, message presence, directory object state, transaction outcome, or generated output may differ by result. - For this
MQ_ERROR_UNSUPPORTED_ACCESS_MODEresult, capture MSMQ service, application, and transaction logs around the first occurrence. - For
MQ_ERROR_UNSUPPORTED_ACCESS_MODE, capture API or COM method, raw parameters, and calling identity. - When diagnosing
MQ_ERROR_UNSUPPORTED_ACCESS_MODE, apply the code-specific recovery rule: Use a documented receive, peek, send, or administration access combination.
Correct response
Use a documented receive, peek, send, or administration access combination.
When diagnosing MQ_ERROR_UNSUPPORTED_ACCESS_MODE, an immediate loop around the same call is not recovery. In the MQ_ERROR_UNSUPPORTED_ACCESS_MODE path, define who owns cancellation, handle recreation, transaction reconciliation, and duplicate suppression before another attempt is issued.
What this code is not
The generic value is not a diagnosis. For this MQ_ERROR_UNSUPPORTED_ACCESS_MODE result, property statuses and the earliest native/service error must remain attached to the operation. The specific focus for MQ_ERROR_UNSUPPORTED_ACCESS_MODE remains requested open/access mode has no MSMQ implementation.
- In the
MQ_ERROR_UNSUPPORTED_ACCESS_MODEpath, granting broad queue or certificate permissions may mask the symptom while creating a security defect. For thisMQ_ERROR_UNSUPPORTED_ACCESS_MODEresult, test the exact identity and access needed by the operation. - For this
MQ_ERROR_UNSUPPORTED_ACCESS_MODEresult, changing queue names, deleting directory objects, or recreating certificates without reconciliation can create a second object while callers still reference the first.
Example failure path
An application framework encounters MQ_ERROR_UNSUPPORTED_ACCESS_MODE. For MQ_ERROR_UNSUPPORTED_ACCESS_MODE, it captures the native property statuses and first service event so the generic wrapper error can be replaced by a specific diagnosis. When diagnosing MQ_ERROR_UNSUPPORTED_ACCESS_MODE, the acceptance test then changes only the decisive precondition and confirms both the HRESULT and the actual queue/message state.
Automated coverage should preserve the original arrays/identities, confirm that cleanup is safe after MQ_ERROR_UNSUPPORTED_ACCESS_MODE, and test that a retry does not duplicate messages or directory objects.
Technical references
- Microsoft Open Specifications: MSMQ protocols overview — source used for the
MQ_ERROR_UNSUPPORTED_ACCESS_MODEanalysis. - Microsoft: Message Queuing error and information codes — source used for the
MQ_ERROR_UNSUPPORTED_ACCESS_MODEanalysis. - Microsoft: Message Queuing overview — source used for the
MQ_ERROR_UNSUPPORTED_ACCESS_MODEanalysis.
Looking for a different code? Search another status or error code.