Что означает код возврата ядра macOS 0 (MACH_MSG_SUCCESS)?

 
Также может означать:
КонстантаТипОС
ERROR_SUCCESSОшибка WindowsWindows
STATUS_SUCCESSNTSTATUSWindows
STATUS_WAIT_0NTSTATUSWindows
kOSReturnSuccessКод возврата ядра macOSmacOS
KERN_SUCCESSКод возврата ядра macOSmacOS
ippStsNoErrСтатус Intel IPPЛюбая
S_OKHRESULTWindows
hrNoneHRESULTWindows
Предыдущий Следующий
KERN_SUCCESS kOSReturnError

MACH_MSG_SUCCESS

Успешная отправка или операция приёма сообщения Mach обозначает ограниченную границу API или среды выполнения, а не общий сбой компьютера. MACH_MSG_SUCCESS — нулевой результат mach_msg или связанной операции обмена сообщениями. Запрошенная отправка, приём или комбинированная транзакция завершилась на уровне IPC; получатель всё равно должен проверить идентификатор и размер сообщения, схему дескрипторов, trailer и семантические поля ответа.

Где формируется результат

Несколько низкоуровневых API Apple используют ноль как успех, однако каждый typedef относится к отдельному контракту. Тип результата, проверка выходных данных и правила владения ресурсами остаются частью успешной обработки сообщений Mach.

MACH_MSG_SUCCESS подтверждает завершение транспорта IPC, а не принятие тела сообщения приложением. Сервер может успешно получить сообщение, а затем вернуть в ответе ошибку своего протокола. Сохраняйте числовое значение, объявленный тип и первую вернувшую его операцию вместе с MACH_MSG_SUCCESS; то же целое число может принадлежать другому пространству статусов в другом API.

Какие данные сохранить

Что сохранитьДиагностическая ценность
Опции mach_msg, размеры отправки и приёма, тайм-ауты, notify port и точное значение mach_msg_return_t.Определяет конкретный объект и операцию успешного обмена сообщениями Mach.
Биты заголовка, ID сообщения, объявленный размер, число дескрипторов и признак complex message.Отделяет состояние аргумента или жизненного цикла от нижележащего провайдера при анализе успешной передачи сообщения Mach.
Disposition каждого переданного права порта и владение out-of-line memory.Создаёт устойчивое сравнение состояния до и после операции при анализе успешной передачи сообщения Mach.
Ёмкость приёмного буфера, формат trailer, идентичность reply port и ожидаемая получателем версия протокола.Показывает, является ли MACH_MSG_SUCCESS первичным результатом или преобразованной сводкой.

Для успешной отправки или операции приёма сообщения Mach сохраните биты заголовка, ID, объявленный размер, число дескрипторов и complex-message flag до переустановки, перезагрузки или очистки состояния. Успех только после такого изменения полезен как сравнительный результат для успешной отправки или операции приёма сообщения Mach, но не устанавливает исходную причину.

Контролируемая последовательность диагностики

  1. Отправьте известное протоколу сообщение и после MACH_MSG_SUCCESS проверьте, принял ли получатель его ID и схему дескрипторов. Запишите первый статус и переход состояния.
  2. Используйте ограниченный тайм-аут или намеренно малый приёмный буфер и убедитесь, что эти результаты не декодируются как успех. Изменившийся результат означает новую границу.
  3. Проследите переданные права и out-of-line regions до уничтожения принятого сообщения. Повторите исходную поддерживаемую операцию.

Чем отличаются соседние результаты

Наблюдаемое сравнениеСледующий проверяемый вывод
Первая контрольная проверка изменила результатСосредоточьтесь на проверке ID и схемы дескрипторов известного сообщения после MACH_MSG_SUCCESS.
Вторая проверка успешного обмена сообщениями Mach воспроизводит тот же первый статусСохраните данные нижележащей среды до изменения приложения. Вторая проверка использовала ограниченный тайм-аут или намеренно малый приёмный буфер.
После ограниченного изменения успешный результат сменился другим статусомПосле третьей проверки операция перешла к другой границе при анализе успешной передачи сообщения Mach. Проверялись владение переданными правами и out-of-line memory до уничтожения сообщения. Сохраните оба результата.

Исправление и доказательство

Целевое исправление. После успешного транспорта проверяйте принятую схему и правила владения, а ошибки прикладного ответа обрабатывайте отдельно от mach_msg_return_t. Для успешной отправки или операции приёма сообщения Mach изменяйте только объект, аргумент, политику, провайдер или состояние жизненного цикла, на которые указывают данные.

Критерий приёмки. Отправка или приём возвращает MACH_MSG_SUCCESS, кадрирование проходит протокольную проверку, каждый переданный ресурс имеет одного владельца, а ожидаемый прикладной ответ обрабатывается отдельно. Повторите исходную операцию, давшую успешную отправку или операцию приёма сообщения Mach с исходной идентичностью и поддерживаемой конфигурацией, затем сохраните одну отрицательную контрольную проверку.

Технические ссылки

Эти источники определяют пространство имён и контракт подсистемы, необходимые для проверки MACH_MSG_SUCCESS в используемой версии платформы.


Нужно найти другой код? Найти другой код состояния или ошибки.