| Previous | Next |
| MF_I_MANUAL_PROXY | MQ_INFORMATION_ILLEGAL_PROPERTY |
MQ_INFORMATION_PROPERTY
Interpretation
The important part of MQ_INFORMATION_PROPERTY is not only whether the call failed, but which MSMQ subsystem had enough information to return this specific result. Its diagnostic boundary is aggregate property warning. The top-level call succeeded; use aStatus to locate the property that did not receive a clean MQ_OK result.
For MQ_INFORMATION_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_PROPERTY, preserve both the returned object state and the element-level status.
When diagnosing MQ_INFORMATION_PROPERTY, informational HRESULTs are especially easy to mishandle in wrappers that treat every nonzero value as an exception. In the MQ_INFORMATION_PROPERTY path, the caller must first determine whether the documented operation and its side effects already completed.
Relevant API contract
| 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 | aggregate property warning |
| Primary recovery rule | Do not roll back a successfully created queue or sent message solely because the aggregate value is informational. |
When diagnosing MQ_INFORMATION_PROPERTY, unlike an error HRESULT, this informational value can accompany a completed operation. In the MQ_INFORMATION_PROPERTY path, it must still be handled because ignored or duplicate properties can change the stored result. For MQ_INFORMATION_PROPERTY, the code-specific boundary is aggregate property warning.
Decisive observations
- Whether an output object or queue was nevertheless created; associate it explicitly with
MQ_INFORMATION_PROPERTY. - When diagnosing
MQ_INFORMATION_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_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_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_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.
Troubleshooting workflow
- Record the unsigned HRESULT,
MQ_INFORMATION_PROPERTY, and the native API or COM method before a framework replaces it with a generic exception. - When diagnosing
MQ_INFORMATION_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_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_PROPERTY; change one precondition at a time. - When diagnosing
MQ_INFORMATION_PROPERTY, apply the code-specific recovery rule: Do not roll back a successfully created queue or sent message solely because the aggregate value is informational.
Recovery rules
Do not roll back a successfully created queue or sent message solely because the aggregate value is informational.
When diagnosing MQ_INFORMATION_PROPERTY, retry only after a measurable state change: corrected property data, resized storage, restored service/directory reachability, recreated handle, completed transaction recovery, or repaired certificate access. In the MQ_INFORMATION_PROPERTY path, bound attempts and keep an idempotency key for sends or directory mutations.
Differences that matter
In the MQ_INFORMATION_PROPERTY path, do not treat a nonzero informational HRESULT as proof that the primary operation failed. For this MQ_INFORMATION_PROPERTY result, verify the completed effect and the individual property status. The specific focus for MQ_INFORMATION_PROPERTY remains aggregate property warning.
- In the
MQ_INFORMATION_PROPERTYpath, changing queue names, deleting directory objects, or recreating certificates without reconciliation can create a second object while callers still reference the first. - For this
MQ_INFORMATION_PROPERTYresult, 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.
Practical scenario
A queue provisioning tool encounters MQ_INFORMATION_PROPERTY. For MQ_INFORMATION_PROPERTY, it records both the successful primary effect and the property warning, then corrects only the affected field. When diagnosing MQ_INFORMATION_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_PROPERTY, assert the raw value and relevant outputs, then correct only the documented precondition and verify the intended success or neighboring HRESULT.
Sources
- Microsoft: queue properties and MQQUEUEPROPS — source used for the
MQ_INFORMATION_PROPERTYanalysis. - Microsoft: MSMQ message properties — source used for the
MQ_INFORMATION_PROPERTYanalysis. - Microsoft: Message Queuing overview — source used for the
MQ_INFORMATION_PROPERTYanalysis. - Microsoft: Message Queuing error and information codes — source used for the
MQ_INFORMATION_PROPERTYanalysis.
Looking for a different code? Search another status or error code.