Что означает код HRESULT 0x800F021B (SPAPI_E_DEVICE_INTERFACE_ACTIVE)?

 
Предыдущий Следующий
SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE SPAPI_E_DEVICE_INTERFACE_REMOVED

SPAPI_E_DEVICE_INTERFACE_ACTIVE

Для удаления регистрации интерфейс должен быть неактивен

SPAPI_E_DEVICE_INTERFACE_ACTIVE обычно появляется, когда SetupDiRemoveDeviceInterface вызывается для включённого интерфейса. Регистрация интерфейса устройства и рабочее состояние устройства связаны, но не тождественны: удаление регистрации, пока клиенты ещё могут обнаружить или открыть интерфейс, нарушило бы его жизненный цикл.

Закрытия дескриптора приложения недостаточно для деактивации интерфейса. Драйвер или операция Plug and Play должны отключить либо остановить базовое устройство/интерфейс через поддерживаемый путь изменения состояния, прежде чем SetupAPI сможет удалить регистрацию.

Выполняйте завершение в порядке жизненного цикла

  • Проверьте флаг SPINT_ACTIVE в данных интерфейса.
  • Запретите новые открытия и закройте незавершённые дескрипторы устройства.
  • Отключите или остановите базовое устройство через подходящий механизм PnP.
  • Удаляйте регистрацию интерфейса только после того, как SetupAPI сообщит о его неактивности.

Ссылки


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