| Предыдущий | Следующий |
| KERN_INVALID_TASK | KERN_INVALID_VALUE |
KERN_INVALID_RIGHT
KERN_INVALID_RIGHT означает, что переданное имя порта Mach реально существует в пространстве имён задачи, но обозначает неподходящий тип права порта для запрошенной операции. Mach различает права отправки, приёма и однократной отправки, и многие операции допустимы только для одной из этих возможностей.
Это отличается от KERN_INVALID_NAME, где имя вообще не обозначает права, и от KERN_NOT_RECEIVER, где операция конкретно требует владения на стороне приёма. Различие помогает обнаружить ошибку передачи IPC: клиент мог получить право отправки, а последующий код ошибочно считает, что способен управлять портом или принимать из него сообщения.
Что проверить
- Тип права, требуемый сбойным API.
- Диспозицию, использованную при создании, копировании, перемещении или передаче права в сообщении.
- Не было ли имя порта повторно использовано после освобождения или изменения пространства имён.
- Не должна ли операция выполняться в другой задаче, которая действительно владеет требуемой возможностью.
В диагностике указывайте как имя порта, так и ожидаемый и фактический типы права. Тогда общий код возврата превращается в конкретное объяснение отсутствующей связи возможностей.
Ссылки
- XNU: kern_return.h
- Руководство Apple по программированию ядра: порты и права Mach
- Справочное руководство GNU Mach: интерфейс управления портами
Нужно найти другой код? Найти другой код состояния или ошибки.