| Предыдущий | Следующий |
| NTE_ENCRYPTION_FAILURE | NTE_USER_CANCELLED |
NTE_DEVICE_NOT_FOUND
NTE_DEVICE_NOT_FOUND следует интерпретировать на границе отсутствующего криптографического устройства. Конфигурация поставщика ссылается на аппаратное или защитное устройство, которое в этой системе отсутствует, не перечисляется, не поддерживается или недоступно. Полезный диагностический вопрос — какой конкретный объект и операция заставили Windows выбрать этот HRESULT, а не работает ли в целом некий ключ, сертификат, учётная запись, файл или устройство.
Найдите первую сбойную границу
При этом результате поставщик опирается на ограниченное или отдельно управляемое устройство: смарт-карту, TPM, HSM, виртуальный токен, считыватель или удалённую службу ключей. Установка поставщика, обнаружение устройства, готовность, ёмкость объектов, состояние аутентификации и политика ключей — разные уровни, которые следует журналировать отдельно.
Полезные наблюдения вместо общих журналов
| Запишите | Почему это важно для данного кода |
|---|---|
| видимый поставщику идентификатор устройства, считыватель или endpoint, версии прошивки и драйвера и состояние соединения | При этом результате это показывает, следует ли состояние за аппаратурой, middleware или хранимыми объектами. |
| инвентаризация объектов токена, ёмкость или квота и признак постоянства целевого ключа | При этом результате это сохраняет данные о ёмкости и готовности устройства до очистки. |
| та же операция с другим заведомо исправным устройством через тот же middleware | При этом результате это отделяет установку поставщика от физической доступности устройства. |
Проверки, специфичные для кода:
- Проверьте считыватель, TPM, клиент HSM, USB-устройство, виртуальную смарт-карту и установку удалённого поставщика.
- Сравните идентификаторы устройств и конфигурацию поставщика с компьютером, где был подготовлен ключ.
- До переустановки приложения проверьте архитектуру процесса и видимость устройства в текущем сеансе.
Постройте хронологию до изменения состояния
Сопоставьте последнюю успешную операцию с установкой или обновлением поставщика, созданием или обновлением ключа, изменениями профиля или сеанса, подключением и отключением устройства, обновлением политик и первым неудачным вызовом. Для этого результата порядок важен: ошибка сразу после миграции ключа указывает на другую границу, чем сбой после смены учётной записи службы.
- Для этого результата подготовьте минимальный пример с именем API, поставщика, ключа или контейнера, флагами и размерами нечувствительных входных данных.
- Для этого пути сохраните события поставщика, устройства, профиля и ОС за период от последнего успеха до первого сбоя.
- Для этого пути сохраните заведомо исправный контрольный результат с той же идентичностью, архитектурой и выбором поставщика.
Воспроизведение без разрушительной очистки
Оставьте неизменными приложение, учётную запись и конфигурацию поставщика, меняя по одной переменной устройства: переподключите тот же токен, используйте другой считыватель или endpoint, затем заведомо исправный токен. Это покажет, следует ли состояние за аппаратурой, транспортом, middleware или хранимыми объектами.
- Сохраните исходный ввод, идентичность, выбор поставщика или протокола и первое возвращённое значение для этого результата.
- Используйте один заведомо исправный контроль, меняющий только подозреваемую часть пути поиска криптографического устройства.
- Где это безопасно, выполните обратное сравнение с заведомо исправным вводом на том же сбойном слое.
- Фиксируйте место первого расхождения в пути поиска устройства, а не оценивайте только итоговое сообщение приложения.
Чем это отличается от похожих сбоев
NTE_DEVICE_NOT_READY означает обнаруженное, но ещё не готовое устройство; этот код — что подходящее устройство вообще не найдено. Удаление объектов токена до экспорта меток, ID, сертификатов и политик может уничтожить единственные данные о переполнении или неудачной очистке после регистрации.
Для отсутствующего криптографического устройства также сохраняйте исходное числовое значение: соседние константы могут требовать существенно разного восстановления, даже если приложение показывает их все как ошибку аутентификации, сертификата или безопасности.
Регрессионная проверка
Для этого результата исходный поставщик должен обнаружить готовое устройство и выполнить целевую операцию при стабильном составе объектов; временный успех с несвязанным оборудованием является только данными для локализации. Сохраните регрессионный тест с нечувствительными идентификаторами и ожидаемыми результатами, включая один отрицательный контроль, который должен по-прежнему завершаться ошибкой.
Технические ссылки
Эти источники определяют HRESULT и соответствующий интерфейс, протокол или формат данных обнаружения криптографического устройства.
- Открытые спецификации Microsoft: значения HRESULT.
- Microsoft: CNG Key Storage Providers.
- NIST SP 800-57 Part 1: рекомендации по управлению ключами.
Нужно найти другой код? Найти другой код состояния или ошибки.