| Предыдущий | Следующий |
| RPC_S_INVALID_TAG | RPC_S_NO_ENTRY_NAME |
RPC_S_INVALID_BOUND
Согласуемый или изменяемый массив содержит невозможные границы
RPC_S_INVALID_BOUND указывает, что значения согласования или вариативности массива NDR во время выполнения противоречат друг другу. Типичные примеры: передаваемая длина превышает выделенный размер, первый элемент находится за максимальной границей, при вычислении верхней границы произошло арифметическое переполнение либо связанные значения size_is и length_is не совпадают.
Перед вызовом записывайте каждое значение счётчика, используемое выражениями корреляции IDL, включая знаковость и единицы измерения. До выделения памяти или маршалинга проверяйте ошибки «байты вместо элементов» и переполнение умножения. На принимающей стороне сохраняйте строгие проверки заглушек вместо их отключения ради совместимости. Повтор сетевого запроса с теми же счётчиками воспроизведёт ошибку, поскольку структура данных изначально недопустима.
Что следует проверить
- Убедитесь, что передаваемая длина никогда не превышает число выделенных элементов.
- Проверяйте отрицательные и переполненные значения до их передачи сгенерированным заглушкам.
- Сопоставьте 32- и 64-разрядные сборки на предмет различий ширины типов или выражений корреляции.
Ссылки
- Microsoft: согласуемые и изменяемые массивы MIDL
- Microsoft: семантика выделения size_is
- MS-RPCE: строгие проверки согласованности NDR
Нужно найти другой код? Найти другой код состояния или ошибки.