| Предыдущий | Следующий |
| STATUS_CALLBACK_RETURNED_THREAD_AFFINITY | STATUS_EXECUTABLE_MEMORY_WRITE |
STATUS_LPC_HANDLE_COUNT_EXCEEDED
Собственное сообщение содержит слишком много передаваемых дескрипторов
LPC и ALPC могут передавать дескрипторы объектов ядра через атрибуты сообщения, но формат собственного сообщения и политика порта задают конечный предел их числа. Превышение этого предела является ошибкой построения протокола; увеличение буфера полезной нагрузки не увеличивает допустимый массив дескрипторов.
Большие пакеты дескрипторов следует перепроектировать. Передавайте только объекты, необходимые одной операции, разбивайте обмен на последовательность сообщений или представляйте коллекцию одним общим разделом либо объектом серверного посредника. Для каждой частичной передачи также нужны явные правила отката и закрытия.
Что проверить
- Подсчитывайте дескрипторы после удаления недопустимых и повторяющихся записей, а не до расширения на уровне приложения.
- Для каждого дескриптора фиксируйте требуемый доступ, тип объекта и правила передачи владения.
- Разбивайте пакеты с идентификатором транзакции или последовательности, чтобы получатель мог обнаружить неполную доставку.
- Закрывайте дублированные дескрипторы на всех путях ошибки, включая отклонение до принятия сообщения другой стороной.
Ссылки
- Открытые спецификации Microsoft: значения NTSTATUS
- System Informer PHNT: собственные определения LPC
- Метаданные Microsoft Windows SDK: ntstatus.h
Нужно найти другой код? Найти другой код состояния или ошибки.