| Предыдущий | Следующий |
| RPC_S_UNSUPPORTED_TYPE | RPC_S_INVALID_BOUND |
RPC_S_INVALID_TAG
description[Дискриминант объединения NDR не выбрал ни одной допустимой ветви.]Тег маршализованного объединения не определяет допустимую ветвь
RPC_S_INVALID_TAG — ошибка проверки данных NDR, связанная с дискриминированным объединением. Переданное значение переключателя не совпало ни с одним объявленным вариантом case, а IDL не содержит ветви default. Причиной могут быть повреждённые данные на проводе, несовместимые версии IDL или код приложения, формирующий объединение с тегом, не соответствующим активному члену.
Сравните точные UUID и версию интерфейса, а также сгенерированные заглушки на обеих сторонах. Записывайте дискриминант до вызова и проверьте, не изменяет ли его пользовательская сериализация, прокси-код или вручную сформированный буфер. Повторение того же буфера не исправит несоответствие. Надёжная проверка MIDL полезна тем, что отклоняет недопустимую ветвь до интерпретации памяти процедурой диспетчера как неверного типа.
Что проверить
- Проверьте тип переключателя объединения и каждое объявленное значение case в IDL.
- Убедитесь, что клиент и сервер используют заглушки, созданные из одного определения интерфейса.
- Рассматривайте неожиданные удалённые данные как ошибку проверки протокола, а не временный транспортный сбой.
Ссылки
- Microsoft: демаршализация NDR и обработка объединений
- MS-RPCE: терминология NDR, IDL и синтаксиса передачи
- Microsoft: возвращаемое значение RPC invalid tag
Нужно найти другой код? Найти другой код состояния или ошибки.
