| Предыдущий | Следующий |
| RPC_S_MAX_CALLS_TOO_SMALL | RPC_S_PROTSEQ_NOT_FOUND |
RPC_S_STRING_TOO_LONG
description[строка превышает длину, представимую или разрешённую контрактом RPC.]Строку невозможно маршалировать в пределах ограничения интерфейса
RPC_S_STRING_TOO_LONG возникает до того, как приложение должно рассматривать значение как обычный текст. Строки RPC регулируются типом IDL, правилами завершителя, корреляционными атрибутами и полями длины NDR. Отсутствующий завершитель, неправильное число символов, путаница между байтами и символами или неограниченный результат преобразования могут привести к превышению контракта маршалинга.
Измерьте исходную строку в тех же единицах, которые использует IDL: в символах или элементах, а не в предполагаемых байтах; при необходимости учитывайте завершитель. Сравните пути преобразования ANSI и Unicode и проверьте версии сгенерированных proxy/stub. Молчаливое усечение опасно, если значение является именем субъекта, путём или идентификатором; отклоняйте его на границе приложения с документированным максимумом.
Что проверить
- Запишите фактическое число элементов, ёмкость буфера, кодировку и наличие завершителя.
- Проверьте корреляции size_is или max_is, связанные со строковым параметром.
- Применяйте предметно-ориентированный максимум до вызова сгенерированной клиентской заглушки.
Ссылки
- Microsoft: массивы MIDL и ограничения строк
- Microsoft: числа элементов, выделяемых средой выполнения
- Microsoft: базовые символьные типы RPC
Нужно найти другой код? Найти другой код состояния или ошибки.