| Предыдущий | Следующий |
| MQ_ERROR_IO_TIMEOUT | MQ_ERROR_MESSAGE_ALREADY_RECEIVED |
MQ_ERROR_ILLEGAL_CURSOR_ACTION
Что означает MQ_ERROR_ILLEGAL_CURSOR_ACTION
MQ_ERROR_ILLEGAL_CURSOR_ACTION — HRESULT, относящийся к области Microsoft Message Queuing. Запрошенное действие курсора Message Queuing недопустимо в его текущей позиции.
В случае MQ_ERROR_ILLEGAL_CURSOR_ACTION код относится к Microsoft Message Queuing и может описывать очередь, форматное имя, дескриптор, буфер свойства, службу каталогов или локальный queue manager.
Практический вывод для MQ_ERROR_ILLEGAL_CURSOR_ACTION: этот HRESULT фиксирует описанное условие, но сам по себе не показывает, какой участник операции первым нарушил контракт. Для MQ_ERROR_ILLEGAL_CURSOR_ACTION найдите первый вызов, вернувший статус, и только после этого меняйте конфигурацию подсистемы Microsoft Message Queuing.
Как читать имя MQ_ERROR_ILLEGAL_CURSOR_ACTION
Имя MQ_ERROR_ILLEGAL_CURSOR_ACTION помогает сузить поиск: ERROR — ошибка; ILLEGAL — недопустимая операция; CURSOR — технический маркер «cursor»; ACTION — технический маркер «action». Эти части имени не заменяют документацию API, но позволяют проверить, что журнал и код относятся к одному и тому же условию.
Особенность MQ_ERROR_ILLEGAL_CURSOR_ACTION
MQ_ACTION_PEEK_NEXT допустим только для корректно созданного и позиционированного cursor. Конец очереди является нормальной границей обхода, а не поводом бесконечно повторять тот же peek; при изменении сценария перечисления курсор нужно переустановить либо создать заново.
Практическая диагностика
В случае MQ_ERROR_ILLEGAL_CURSOR_ACTION важно сохранить исходный контекст вызова: имя функции, параметры, состояние объекта и первый низкоуровневый статус. Для MQ_ERROR_ILLEGAL_CURSOR_ACTION без этого одинаковый HRESULT может ошибочно связываться с разными причинами.
- При разборе MQ_ERROR_ILLEGAL_CURSOR_ACTION проверьте ACL очереди и системные привилегии под фактической учётной записью процесса.
- При разборе MQ_ERROR_ILLEGAL_CURSOR_ACTION запишите path name и format name очереди, тип операции, права доступа и свойства, которые читались или записывались.
- При разборе MQ_ERROR_ILLEGAL_CURSOR_ACTION проверьте состояние службы MSMQ, достижимость удалённой машины и подключение к службе каталогов при необходимости.
- При разборе MQ_ERROR_ILLEGAL_CURSOR_ACTION сверьте размеры буферов свойств и повторите запрос по документированной схеме определения требуемой длины.
Как воспроизвести проблему
- Для MQ_ERROR_ILLEGAL_CURSOR_ACTION не создавайте дубликат очереди до проверки существующего path name и instance identifier.
- Для MQ_ERROR_ILLEGAL_CURSOR_ACTION сохраните HRESULT, PROPID, фактическую/требуемую длину и тип форматного имени.
- Для MQ_ERROR_ILLEGAL_CURSOR_ACTION проверьте воспроизведение на локальной private queue, чтобы отделить сеть и каталог от API-контракта.
Критерий успешного исправления
В случае MQ_ERROR_ILLEGAL_CURSOR_ACTION считайте причину MQ_ERROR_ILLEGAL_CURSOR_ACTION устранённой только после проверки на тех же данных и под той же учётной записью, где возник сбой, а затем выполните контрольный тест с заведомо неверным входом.
Ссылки по MQ_ERROR_ILLEGAL_CURSOR_ACTION
Нужно найти другой код? Найти другой код состояния или ошибки.
