Что означает код HRESULT 0xC00E001C (MQ_ERROR_ILLEGAL_CURSOR_ACTION)?

 
Предыдущий Следующий
MQ_ERROR_IO_TIMEOUT MQ_ERROR_MESSAGE_ALREADY_RECEIVED

MQ_ERROR_ILLEGAL_CURSOR_ACTION

Что означает MQ_ERROR_ILLEGAL_CURSOR_ACTION

MQ_ERROR_ILLEGAL_CURSOR_ACTION — Запрошенное действие получения сообщения недопустимо для текущей позиции курсора. Например, MQ_ACTION_PEEK_NEXT нельзя применить, если курсор уже находится в конце очереди.

Cursor в MSMQ хранит позицию при просмотре сообщений очереди. Действия peek current/peek next зависят от того, где находится курсор; поэтому ошибка относится к последовательности навигации по очереди, а не к недопустимому указателю памяти или повреждению сообщения.

Что проверить

  • Логируйте действие receive/peek и позицию курсора перед вызовом. Особое внимание — переходу после последнего доступного сообщения.
  • Не вызывайте MQ_ACTION_PEEK_NEXT, если курсор ещё не установлен на допустимое текущее сообщение или уже дошёл до конца очереди.
  • При параллельных потребителях учитывайте удаление сообщений между peek-вызовами: состояние очереди может измениться независимо от локальной позиции cursor.

Как подтвердить исправление

После исправления последовательность peek current/next должна корректно обходить очередь и отдельно обрабатывать достижение конца без повторения недопустимого действия.

Технические ссылки


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