Что означает код HRESULT 0xC00E0009 (MQ_ERROR_SHARING_VIOLATION)?

 
Предыдущий Следующий
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.


Нужно найти другой код? Найти другой код состояния или ошибки.