Site icon EfmSoft

Что означает код HRESULT 0x80290106 (TPMAPI_E_BUFFER_TOO_SMALL)?

 
Предыдущий Следующий
TPMAPI_E_OUT_OF_MEMORY TPMAPI_E_INTERNAL_ERROR

TPMAPI_E_BUFFER_TOO_SMALL

Причина на native boundary

Для TPMAPI_E_BUFFER_TOO_SMALL (0X80290106) рабочая граница — буфер / слишком / мал. Код относится к Windows TPM API, measured-boot/TCG data и TPM command preparation. Сохраняйте первый native return и identity объекта: именно они определяют, проверяется ли здесь input, capability, ownership, lifecycle или transport.

TPMAPI может отклонить structure ещё до TBS/TPM command. Поэтому format/length/PCR/key validation нельзя автоматически считать аппаратной ошибкой TPM.

Фрагменты исходного EN-описания

Поля корреляции

PCR bank, digest algorithm, serialized event/blob и TPM identity должны принадлежать одному boot/operation generation; смешение корректных по отдельности данных всё равно даёт invalid input.

Проверка гипотезы

Проверьте condition «буфер / слишком / мал» на том же объекте и том же API. Один контролируемый change должен либо убрать этот HRESULT, либо сдвинуть первый failure к другому, более конкретному коду.

Проверяйте структуру и длину на границе TPM API до отправки команды. Не исправляйте serialized TPM/TCG blob вручную, если его можно заново получить через поддерживаемый API.

Завершение диагностики

Используйте требуемый размер/двухпроходный API contract, не обрезайте структуру. Повторите с тем же логическим input и достаточным буфером.

Направление ошибки размера

Здесь недостаточен именно destination, куда TPM API должен записать уже сформированный output. Запишите переданный capacity и требуемый размер, если API его возвращает; проверьте, измеряется ли параметр в байтах, а не в элементах структуры. В двухпроходном вызове сначала получите required size, затем выделите буфер и повторите чтение. Это не то же самое, что неполный входной command: исходные TPM параметры могут быть полностью корректны, а ошибка возникает только при копировании результата вызывающей стороне.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.

Exit mobile version