| Предыдущий | Следующий |
| KERN_NO_SPACE | KERN_FAILURE |
KERN_INVALID_ARGUMENT
KERN_INVALID_ARGUMENT — это ошибка контракта Mach для аргумента, который недопустим для запрошенной операции или неприменим к типу объекта этой операции. Сам по себе статус не указывает конкретный параметр: ошибочным значением может быть порт, адрес, количество, селектор, маска защиты или другое поле, специфичное для API.
Отличайте этот результат от KERN_INVALID_VALUE. XNU описывает последний как ошибку диапазона, тогда как KERN_INVALID_ARGUMENT также охватывает значение неправильного вида или не имеющее смысла для данного вызова. Поэтому вызывающая сторона должна сохранять точную процедуру Mach и полный набор входных данных, а не считать каждую ошибку аргумента числовым выходом за границы.
Полезная диагностическая запись
- Запишите API Mach, задействованную задачу или порт и все скалярные аргументы в единицах, требуемых этим API.
- Для входных данных «указатель и длина» проверяйте весь диапазон и требуемое выравнивание, а не только начальный адрес.
- Проверьте, допустимы ли бит параметров или право объекта для этой операции, а не просто ненулевые ли они.
- Не преобразуйте результат непосредственно в POSIX
EINVALбез сохранения исходного статуса Mach.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.