| Предыдущий | Следующий |
| 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-описания
It indicates that the destination buffer cannot hold the returned TPM data or encoded result.
Read the returned required size when the API provides one, then allocate a larger buffer.
Verify that byte counts, not element counts, are supplied for buffers whose APIs use byte lengths.
Handle variable-size TPM blobs and logs without relying on a fixed legacy buffer size.
Поля корреляции
- TPM API method, context handle и operation correlation ID.
- input structure type/length, algorithm и flags.
- TBS/service state и первый native TPMAPI result.
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 параметры могут быть полностью корректны, а ошибка возникает только при копировании результата вызывающей стороне.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
