| Previous | Next |
| MQ_INFORMATION_PROPERTY_IGNORED | MQ_INFORMATION_DUPLICATE_PROPERTY |
MQ_INFORMATION_UNSUPPORTED_PROPERTY
Why the exact HRESULT matters
The important part of MQ_INFORMATION_UNSUPPORTED_PROPERTY is not only whether the call failed, but which MSMQ subsystem had enough information to return this specific result. In this case the decisive subject is version or implementation capability warning. Compare the property with the installed MSMQ version and the concrete operation rather than assuming malformed input.
For MQ_INFORMATION_UNSUPPORTED_PROPERTY, A warning returned from a queue or message property call can describe only one element while the other elements and the primary operation succeeded. When diagnosing MQ_INFORMATION_UNSUPPORTED_PROPERTY, preserve both the returned object state and the element-level status.
When diagnosing MQ_INFORMATION_UNSUPPORTED_PROPERTY, informational HRESULTs are especially easy to mishandle in wrappers that treat every nonzero value as an exception. In the MQ_INFORMATION_UNSUPPORTED_PROPERTY path, the caller must first determine whether the documented operation and its side effects already completed.
Subsystem context
| Subsystem | the per-property status channel used by MSMQ APIs |
|---|---|
| Decisive boundary | the call may complete while one array element is rejected, ignored, duplicated, or still pending |
| Code-specific focus | version or implementation capability warning |
| Primary recovery rule | Use a capability-aware fallback and do not expect the ignored value to appear on the stored message or queue. |
When diagnosing MQ_INFORMATION_UNSUPPORTED_PROPERTY, unlike an error HRESULT, this informational value can accompany a completed operation. In the MQ_INFORMATION_UNSUPPORTED_PROPERTY path, it must still be handled because ignored or duplicate properties can change the stored result. For MQ_INFORMATION_UNSUPPORTED_PROPERTY, the code-specific boundary is version or implementation capability warning.
Minimum useful telemetry
- Whether an output object or queue was nevertheless created; associate it explicitly with
MQ_INFORMATION_UNSUPPORTED_PROPERTY. - When diagnosing
MQ_INFORMATION_UNSUPPORTED_PROPERTY, the function result and every entry of the optional astatus array; capture the value before cleanup or retry changes it. - In the
MQ_INFORMATION_UNSUPPORTED_PROPERTYpath, the matching apropid and mqpropvariant index; compare it with a known-good call using the same account and queue type. - For this
MQ_INFORMATION_UNSUPPORTED_PROPERTYresult, 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_INFORMATION_UNSUPPORTED_PROPERTY, 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.
Step-by-step diagnosis
- Record the unsigned HRESULT,
MQ_INFORMATION_UNSUPPORTED_PROPERTY, and the native API or COM method before a framework replaces it with a generic exception. - When diagnosing
MQ_INFORMATION_UNSUPPORTED_PROPERTY, verify the postcondition after the failed call: queue existence, message presence, directory object state, transaction outcome, or generated output may differ by result. - In the
MQ_INFORMATION_UNSUPPORTED_PROPERTYpath, capture the function result and every entry of the optional aStatus array. - Capture the matching aPropID and MQPROPVARIANT index.
- Reproduce with the smallest queue/message/property set that still returns
MQ_INFORMATION_UNSUPPORTED_PROPERTY; change one precondition at a time. - When diagnosing
MQ_INFORMATION_UNSUPPORTED_PROPERTY, apply the code-specific recovery rule: Use a capability-aware fallback and do not expect the ignored value to appear on the stored message or queue.
Retry and cleanup
Use a capability-aware fallback and do not expect the ignored value to appear on the stored message or queue.
When diagnosing MQ_INFORMATION_UNSUPPORTED_PROPERTY, an immediate loop around the same call is not recovery. In the MQ_INFORMATION_UNSUPPORTED_PROPERTY path, define who owns cancellation, handle recreation, transaction reconciliation, and duplicate suppression before another attempt is issued.
Avoiding a false diagnosis
In the MQ_INFORMATION_UNSUPPORTED_PROPERTY path, do not treat a nonzero informational HRESULT as proof that the primary operation failed. For this MQ_INFORMATION_UNSUPPORTED_PROPERTY result, verify the completed effect and the individual property status. The specific focus for MQ_INFORMATION_UNSUPPORTED_PROPERTY remains version or implementation capability warning.
- In the
MQ_INFORMATION_UNSUPPORTED_PROPERTYpath, A successful test under an interactive administrator account does not prove that the production service account has the same profile, token, directory access, or key permissions. - For this
MQ_INFORMATION_UNSUPPORTED_PROPERTYresult, restarting MSMQ before collecting evidence can invalidate handles and erase the first useful event; it is a containment action, not a root-cause diagnosis.
Example
A native c++ sender encounters MQ_INFORMATION_UNSUPPORTED_PROPERTY. For MQ_INFORMATION_UNSUPPORTED_PROPERTY, it records both the successful primary effect and the property warning, then corrects only the affected field. When diagnosing MQ_INFORMATION_UNSUPPORTED_PROPERTY, the acceptance test then changes only the decisive precondition and confirms both the HRESULT and the actual queue/message state.
A regression test should force MQ_INFORMATION_UNSUPPORTED_PROPERTY, assert the raw value and relevant outputs, then correct only the documented precondition and verify the intended success or neighboring HRESULT.
References
- Microsoft: MSMQ message properties — source used for the
MQ_INFORMATION_UNSUPPORTED_PROPERTYanalysis. - Microsoft: Message Queuing overview — source used for the
MQ_INFORMATION_UNSUPPORTED_PROPERTYanalysis. - Microsoft: Message Queuing error and information codes — source used for the
MQ_INFORMATION_UNSUPPORTED_PROPERTYanalysis. - Microsoft: queue properties and MQQUEUEPROPS — source used for the
MQ_INFORMATION_UNSUPPORTED_PROPERTYanalysis.
Looking for a different code? Search another status or error code.