| Предыдущий | Следующий |
| MACH_RCV_PORT_CHANGED | MACH_RCV_INVALID_DATA |
MACH_RCV_INVALID_NOTIFY
Ошибка настройки канала уведомлений
MACH_RCV_INVALID_NOTIFY возникает, когда операция приёма запрашивает поведение уведомления через MACH_RCV_NOTIFY, но аргумент notify не является допустимым правом приёма. Права отправки недостаточно: ядру требуется назначение, из которого вызывающая сторона может получать сообщения уведомлений и которым она может управлять в течение ожидания.
Этот результат отличается от MACH_RCV_INVALID_NAME. Основная цель приёма может быть допустимой, тогда как вторичная конечная точка уведомления — нет. Диагностируйте два порта отдельно и не считайте это доказательством получения сообщения или отказа основного порта.
Что исправить
- Запишите цель приёма и порт уведомления как отдельные значения с предполагаемыми типами прав.
- Создайте конечную точку уведомления до выдачи приёма и сохраняйте её право приёма до завершения или отмены.
- Проверьте параллельные пути очистки, способные освободить или переместить право уведомления.
- Предпочитайте API уведомлений высокоуровневой среды, если она владеет полным жизненным циклом прав портов.
Ссылки
- Справочник интерфейса ядра Mach: mach_msg
- Исходный код Apple XNU: mach/message.h
- Apple Kernel Programming Guide: обзор Mach
Нужно найти другой код? Найти другой код состояния или ошибки.