| Предыдущий | Следующий |
| 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 симптомы.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.