| Предыдущий | Следующий |
| E_PENDING | E_CHANGED_STATE |
E_BOUNDS
Что означает E_BOUNDS
E_BOUNDS (0x8000000B) — Операция попыталась обратиться к данным за пределами допустимого диапазона.
При результате 0x8000000B граница диагностики проходит внутри подсистемы «COM/WinRT», в области «контракт вызываемого interface, аргументы и state объекта». Здесь сообщение «операция попыталась обратиться к данным за пределами допустимого диапазона» связано с темой «bounds».
Что проверить и как подтвердить исправление
Первый шаг — сопоставьте первый отказ с фактическими параметрами операции. Когда при 0x8000000B система сообщает «операция попыталась обратиться к данным за пределами допустимого диапазона», сверьте тип, размер, диапазон, маску флагов и принадлежность каждого дескриптора текущему объекту именно по контракту первого неуспешного метода.
Для воспроизведения 0x8000000B сохраните IID и method, thread/apartment, argument values, object state и исходный HRESULT; отдельно запишите HRESULT, ID, IDs, IAgileObject. По теме «bounds» для 0x8000000B сравните эти данные с исправным запуском до очистки журналов или пересоздания объекта.
Для 0x8000000B применяйте исправление на границе первого отказа: приведите аргументы и жизненный цикл объекта к контракту метода; неизменённый вызов после contract failure повторять не следует. Сообщение «операция попыталась обратиться к данным за пределами допустимого диапазона» при 0x8000000B не следует подавлять общей обработкой исключения.
Подтвердите изменение повтором исходной операции: результат 0x8000000B не должен возникать на исправном объекте, но прежний отрицательный контроль обязан оставаться предсказуемым.
Документация для результата 0x8000000B: C++/WinRT error handling · concurrency and asynchronous operations · WinMD files.
Нужно найти другой код? Найти другой код состояния или ошибки.