| Предыдущий | Следующий |
| TBS_E_PROVISIONING_INCOMPLETE | TPMAPI_E_NOT_ENOUGH_DATA |
TPMAPI_E_INVALID_STATE
Практический разбор TPMAPI_E_INVALID_STATE
TPMAPI_E_INVALID_STATE — HRESULT, относящийся к области TPM Base Services API. Буфер команды TPM используется в недопустимой последовательности или находится в состоянии, несовместимом с запрошенной операцией.
В случае TPMAPI_E_INVALID_STATE этот HRESULT возвращён обвязкой TPM API. Для TPMAPI_E_INVALID_STATE следует различать ошибку сериализации/шифрования параметров и статус, пришедший непосредственно от TPM.
Практический вывод для TPMAPI_E_INVALID_STATE: этот HRESULT фиксирует описанное условие, но сам по себе не показывает, какой участник операции первым нарушил контракт. Для TPMAPI_E_INVALID_STATE найдите первый вызов, вернувший статус, и только после этого меняйте конфигурацию подсистемы TPM Base Services API.
Как читать имя TPMAPI_E_INVALID_STATE
Имя TPMAPI_E_INVALID_STATE помогает сузить поиск: INVALID — недопустимое значение или состояние; STATE — состояние объекта. Эти части имени не заменяют документацию API, но позволяют проверить, что журнал и код относятся к одному и тому же условию.
Практическая диагностика
В случае TPMAPI_E_INVALID_STATE формулировка указывает на недопустимые данные или состояние. Для TPMAPI_E_INVALID_STATE сохраните исходное представление до нормализации и проверяйте структуру на той границе, где её принимает API.
- Для TPMAPI_E_INVALID_STATE сопоставьте фактическое значение, структуру и версию входных данных с документированным контрактом.
- При разборе TPMAPI_E_INVALID_STATE повторите операцию на новом контексте после завершения текущих запросов к TPM.
- При разборе TPMAPI_E_INVALID_STATE запишите вызываемую функцию TPM API, состояние контекста, размеры буферов и исходный вложенный статус.
- При разборе TPMAPI_E_INVALID_STATE проверьте совместимость версии Windows, TPM Base Services и прошивки TPM.
- При разборе TPMAPI_E_INVALID_STATE не очищайте TPM до получения журналов и проверки того, что проблема действительно относится к состоянию модуля.
Какие данные собрать
- Для TPMAPI_E_INVALID_STATE отделите постоянный дефект конфигурации от временной занятости TPM контролируемой повторной попыткой.
- Для TPMAPI_E_INVALID_STATE соберите журнал TPM и сведения tpmtool, не включая секретные ключевые данные.
- Для TPMAPI_E_INVALID_STATE сохраните порядок операций и точку, где параметры шифруются или расшифровываются.
Граница корректного решения
В случае TPMAPI_E_INVALID_STATE для TPMAPI_E_INVALID_STATE недостаточно скрыть ошибку повтором. Для TPMAPI_E_INVALID_STATE после изменения воспроизведите исходную операцию, проверьте конечное состояние объекта и убедитесь, что ресурсы освобождаются без потери первичного HRESULT.
Ссылки по TPMAPI_E_INVALID_STATE
Нужно найти другой код? Найти другой код состояния или ошибки.