Что означает код ошибки Windows 1159 (ERROR_MESSAGE_SYNC_ONLY)?

 
Предыдущий Следующий
ERROR_NO_MORE_USER_HANDLES ERROR_SOURCE_ELEMENT_EMPTY

ERROR_MESSAGE_SYNC_ONLY

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

ERROR_MESSAGE_SYNC_ONLY означает, что выбранное оконное сообщение имеет контракт только синхронной доставки. Частая причина — параметры wParam/lParam содержат указатель на данные, которые гарантированно живут лишь до возврата оконной процедуры.

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

  • Сверьте конкретный message с документацией и используемый способ доставки: SendMessage, PostMessage или другой API.
  • Если в параметрах есть указатели или временные структуры, не переводите такой message на asynchronous delivery ради устранения зависания.
  • Для действительно асинхронной архитектуры скопируйте данные в собственный объект с явным временем жизни и используйте сообщение/API, где это разрешено контрактом.
  • Проверьте межпроцессный сценарий отдельно: pointer-bearing messages могут иметь дополнительные ограничения marshaling.

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

Исправление подтверждается тем, что сообщение доставляется разрешённым способом, данные остаются валидны до завершения обработки и исчезают случайные use-after-free/hang симптомы.

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


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