Что означает код ошибки Windows 1836 (RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH)?

 
Предыдущий Следующий
RPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED RPC_S_GROUP_MEMBER_NOT_FOUND

RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH

Среда выполнения получила дескриптор операционной системы неправильного типа

RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH является проверкой типа параметра MIDL system_handle . Числовое значение дескриптора было достаточно корректным для проверки, но базовый объект ядра имел не объявленный тип — например, передан дескриптор файла там, где требуется дескриптор события, маркера, секции или процесса.

Записывайте в журнал как объявленный в IDL тип sh_* , так и путь кода, создавший дескриптор. Не используйте нетипизированные оболочки, объединяющие несвязанные значения HANDLE, и проверяйте происхождение элементов массива до вызова. Дублирование того же неправильного дескриптора или запрос более широких прав доступа не изменит тип объекта.

Что проверить

  • Проследите каждый дескриптор до API, которым он был создан или открыт.
  • Используйте отдельные типизированные RAII-оболочки для разных классов объектов ядра.
  • Проверьте индексацию массива и упаковку структуры, прежде чем искать причину в создании дескриптора.

Ссылки


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