| Previous | Next |
| MQ_ERROR_NO_INTERNAL_USER_CERT | MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE |
MQ_ERROR_CORRUPTED_SECURITY_DATA
Operational meaning
Applications should keep MQ_ERROR_CORRUPTED_SECURITY_DATA attached to the exact MSMQ call that produced it; translating it immediately to “queue error” discards the diagnostic boundary. Its diagnostic boundary is cryptographic processing failure. The code is an umbrella for a failed security primitive; capture the underlying CryptoAPI status and algorithm/provider settings.
For MQ_ERROR_CORRUPTED_SECURITY_DATA, the property namespace is split among message, queue, computer, private-computer, and management properties. When diagnosing MQ_ERROR_CORRUPTED_SECURITY_DATA, A numeric identifier meaningful in one structure is not automatically legal in another API.
When diagnosing MQ_ERROR_CORRUPTED_SECURITY_DATA, validation occurs in layers: identifier recognition, variant type, buffer shape, value range, required companions, and operation eligibility. In the MQ_ERROR_CORRUPTED_SECURITY_DATA path, these layers correspond to different MSMQ HRESULTs and different fixes.
Where to draw the boundary
| Subsystem | MSMQ property arrays and their parallel identifier, value, and status elements |
|---|---|
| Decisive boundary | the property identifier, VARTYPE, value, operation, and buffer ownership are validated separately |
| Code-specific focus | cryptographic processing failure |
| Primary recovery rule | Do not classify it as a queue-permission error without evidence. |
When diagnosing MQ_ERROR_CORRUPTED_SECURITY_DATA, do not merge this result with other property failures: identifier, VARTYPE, value, size, required companions, and operation eligibility are diagnosed by different codes. For MQ_ERROR_CORRUPTED_SECURITY_DATA, the code-specific boundary is cryptographic processing failure.
Evidence to preserve
- The complete apropid/apropvar/astatus triples in original order; associate it explicitly with
MQ_ERROR_CORRUPTED_SECURITY_DATA. - When diagnosing
MQ_ERROR_CORRUPTED_SECURITY_DATA, the api name and whether the structure was input, output, or both; capture the value before cleanup or retry changes it. - In the
MQ_ERROR_CORRUPTED_SECURITY_DATApath, the first failing property rather than only the aggregate hresult; compare it with a known-good call using the same account and queue type. - For this
MQ_ERROR_CORRUPTED_SECURITY_DATAresult, 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_CORRUPTED_SECURITY_DATA, 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.
Diagnostic sequence
- Record the unsigned HRESULT,
MQ_ERROR_CORRUPTED_SECURITY_DATA, and the native API or COM method before a framework replaces it with a generic exception. - When diagnosing
MQ_ERROR_CORRUPTED_SECURITY_DATA, 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_ERROR_CORRUPTED_SECURITY_DATApath, capture the first failing property rather than only the aggregate HRESULT. - For this
MQ_ERROR_CORRUPTED_SECURITY_DATAresult, capture the complete aPropID/aPropVar/aStatus triples in original order. - Reproduce with the smallest queue/message/property set that still returns
MQ_ERROR_CORRUPTED_SECURITY_DATA; change one precondition at a time. - When diagnosing
MQ_ERROR_CORRUPTED_SECURITY_DATA, apply the code-specific recovery rule: Do not classify it as a queue-permission error without evidence.
Handling and recovery
Do not classify it as a queue-permission error without evidence.
When diagnosing MQ_ERROR_CORRUPTED_SECURITY_DATA, do not hide this HRESULT behind an unlimited framework retry. In the MQ_ERROR_CORRUPTED_SECURITY_DATA path, require a verified precondition change and preserve the original correlation identifier across the next attempt.
Nearby failure boundaries
In the MQ_ERROR_CORRUPTED_SECURITY_DATA path, changing a queue ACL or restarting the service does not correct an invalid identifier, VARTYPE, value, structure, or property combination. The specific focus for MQ_ERROR_CORRUPTED_SECURITY_DATA remains cryptographic processing failure.
- In the
MQ_ERROR_CORRUPTED_SECURITY_DATApath, restarting MSMQ before collecting evidence can invalidate handles and erase the first useful event; it is a containment action, not a root-cause diagnosis. - For this
MQ_ERROR_CORRUPTED_SECURITY_DATAresult, granting broad queue or certificate permissions may mask the symptom while creating a security defect. ForMQ_ERROR_CORRUPTED_SECURITY_DATA, test the exact identity and access needed by the operation.
Worked example
A message serializer encounters MQ_ERROR_CORRUPTED_SECURITY_DATA. For MQ_ERROR_CORRUPTED_SECURITY_DATA, it logs the rejected property index and rebuilds the request from a typed schema instead of retrying the same arrays. When diagnosing MQ_ERROR_CORRUPTED_SECURITY_DATA, 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_ERROR_CORRUPTED_SECURITY_DATA, assert the raw value and relevant outputs, then correct only the documented precondition and verify the intended success or neighboring HRESULT.
References
- Microsoft: Message Queuing error and information codes — source used for the
MQ_ERROR_CORRUPTED_SECURITY_DATAanalysis. - Microsoft: queue properties and MQQUEUEPROPS — source used for the
MQ_ERROR_CORRUPTED_SECURITY_DATAanalysis. - Microsoft: MSMQ message properties — source used for the
MQ_ERROR_CORRUPTED_SECURITY_DATAanalysis. - Microsoft: MQCreateQueue — source used for the
MQ_ERROR_CORRUPTED_SECURITY_DATAanalysis.
Looking for a different code? Search another status or error code.