| Предыдущий | Следующий |
| MQ_ERROR_OPERATION_CANCELLED | MQ_ERROR_SERVICE_NOT_AVAILABLE |
MQ_ERROR_SHARING_VIOLATION
Что означает MQ_ERROR_SHARING_VIOLATION
MQ_ERROR_SHARING_VIOLATION (0xC00E0009) — Нарушение совместного доступа: очередь уже открыта для монопольного извлечения сообщений.
В подсистеме «COM/WinRT» результат 0xC00E0009 относится к области «контракт вызываемого interface, аргументы и state объекта». Описание «нарушение совместного доступа: очередь уже открыта для монопольного извлечения сообщений» сужает проверку до темы «mq, sharing, violation».
Что проверить и как подтвердить исправление
Сначала сопоставьте первый отказ с фактическими параметрами операции. Для 0xC00E0009 в условии «нарушение совместного доступа: очередь уже открыта для монопольного извлечения сообщений» воспроизведите отказ на минимальном объекте и меняйте только одно условие за запуск, чтобы отделить неверный вход от состояния системы.
Диагностика 0xC00E0009 должна включать IID и method, thread/apartment, argument values, object state и исходный HRESULT; отдельно запишите HRESULT, IErrorInfo. Для темы «mq, sharing, violation» при 0xC00E0009 важны значения именно на первом отказе, а не после обработки ошибки верхним уровнем.
Коррекция для 0xC00E0009 должна быть предметной: исправьте параметры и жизненный цикл объекта в соответствии с контрактом первого неуспешного метода. Для 0xC00E0009 и сообщения «нарушение совместного доступа: очередь уже открыта для монопольного извлечения сообщений» общий сброс допустим лишь как контроль, но не как доказательство причины.
Считайте исправление подтверждённым только после устойчивого повтора исходного сценария без результата 0xC00E0009 и без обхода штатных проверок.
Документация для результата 0xC00E0009: MQOpenQueue.
Нужно найти другой код? Найти другой код состояния или ошибки.