| Предыдущий | Следующий |
| KERN_UREFS_OVERFLOW | KERN_RIGHT_EXISTS |
KERN_INVALID_CAPABILITY
KERN_INVALID_CAPABILITY сообщает, что вызывающая сторона передала возможность порта Mach, которую ядро не может использовать для этого запроса. В Mach права порта являются возможностями: наличие определённого права разрешает только операции, связанные с этим правом и объектом.
Этот код связан с простым отсутствием имени, но является более конкретным. Имя порта может существовать и право может присутствовать, однако предоставленная возможность всё равно может быть непригодна, поскольку представляет другой объект, неподходящий уровень привилегий или право, не позволяющее выполнить запрошенное действие.
Что проверить
- Какой объект Mach ожидает API: задачу, поток, узел, службу, запись памяти или другой объект, представленный портом.
- Точное право и уровень привилегий, переданные вызывающей стороне.
- Требовался ли управляющий или привилегированный порт, но вместо него было передано имя либо непривилегированный порт.
- Была ли возможность получена из пространства имён другой задачи или аннулирована при завершении.
Не пытайтесь исправить это, считая номера портов взаимозаменяемыми. Ценность модели Mach состоит в том, что возможности кодируют и идентичность объекта, и разрешённую область доступа.
Ссылки
- XNU: kern_return.h
- Руководство Apple по программированию ядра: порты и права Mach
- Справочное руководство GNU Mach: интерфейс управления портами
Нужно найти другой код? Найти другой код состояния или ошибки.