| Предыдущий | Следующий |
| 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-оболочки для разных классов объектов ядра.
- Проверьте индексацию массива и упаковку структуры, прежде чем искать причину в создании дескриптора.
Ссылки
- Microsoft: поддерживаемые типы объектов system_handle
- Microsoft: принципы формата дескрипторов RPC
- Microsoft: статус несоответствия типа системного дескриптора
Нужно найти другой код? Найти другой код состояния или ошибки.