Поделиться через


DIF_REMOVE

Запрос DIF_REMOVE уведомляет установщик о том, что Windows готовится удалить устройство, и дает установщику возможность подготовиться к удалению.

При отправке

Когда пользователь удаляет устройство в диспетчер устройств.

Кто обрабатывает

Со-установщик класса

Может обрабатывать

Совместный установщик устройств

Может обрабатывать

Установщик классов

Может обрабатывать

Входные данные установщика

DeviceInfoSet
Предоставляет дескриптор набору сведений об устройстве , который содержит устройство, которое требуется удалить.

DeviceInfoData
Предоставляет указатель на структуру SP_DEVINFO_DATA для устройства в наборе сведений об устройстве.

Параметры установки устройства
Существуют параметры установки устройства (SP_DEVINSTALL_PARAMS), связанные с DeviceInfoData.

Параметры установки класса
Структура SP_REMOVEDEVICE_PARAMS может быть связана с DeviceInfoData.

Параметры установки класса для запроса отсутствуют, если флаг DI_CLASSINSTALLPARAMS не указан в SP_DEVINSTALL_PARAMS. В этом случае профиль оборудования не указан, и устройство должно быть удалено из системы в целом.

Выходные данные установщика

Ни один

Возвращаемое значение установщика

Совместный установщик может возвращать NO_ERROR, ERROR_DI_POSTPROCESSING_REQUIRED или код ошибки Win32.

Если установщик класса успешно обрабатывает этот запрос и SetupDiCallClassInstaller должен впоследствии вызвать обработчик по умолчанию, установщик класса возвращает ERROR_DI_DO_DEFAULT.

Если установщик класса успешно обрабатывает этот запрос, включая прямой вызов обработчика по умолчанию, установщик класса должен вернуть NO_ERROR и SetupDiCallClassInstaller впоследствии не будет вызывать обработчик по умолчанию снова.

Примечание Установщик класса может напрямую вызывать обработчик по умолчанию, но установщик класса никогда не должен пытаться заменять операции обработчика по умолчанию.

Дополнительные сведения о вызове обработчика по умолчанию см. в разделе Вызов обработчиков кода DIF по умолчанию.

Если установщик класса обнаруживает ошибку, установщик должен вернуть соответствующий код ошибки Win32, и SetupDiCallClassInstaller впоследствии не будет вызывать обработчик по умолчанию.

Обработчик кода DIF по умолчанию

SetupDiRemoveDevice

Операция установщика

В ответ на запрос DIF_REMOVE установщик обычно выполняет некоторые операции очистки. В этом случае совместный установщик возвращает NO_ERROR, а установщик класса — ERROR_DI_DO_DEFAULT.

Если установщик определяет, что устройство не следует удалять, установщик завершает запрос DIF, возвращая код ошибки Win32. Если флаг DI_QUIETINSTALL не задан, установщик должен отобразить пользователю сообщение, объясняющее, почему устройство не удаляется.

Совместные установщики не должны пытаться самостоятельно удалить устройство, вызвав SetupDiRemoveDevice. Совместное установщики обычно обрабатывают этот запрос в постобработке после успешного удаления устройства.

Например, если совместному установщику необходимо удалить сведения в реестре, он должен сделать это при постобработке и только в том случае, если предыдущие установщики успешно завершили запрос на удаление. При прохождении предварительной обработки совместному установщику необходимо сохранить сведения о реестре в параметре контекста и вернуть ERROR_DI_POSTPROCESSING_REQUIRED для запроса постобработки. Когда Windows вызывает совместное средство установки для постобработки этого запроса DIF, совместный установщик должен проверка, что состояние DIF NO_ERROR, а затем удалить сведения о реестре. Если совместный установщик удаляет сведения о реестре в своем проходе предварительной обработки, а установщик класса (или другой совместный установщик) завершает работу DIF_REMOVE, совместный установщик может оставить устройство в непредсказуемом состоянии.

Установщики не должны удалять файлы при обработке этого запроса DIF, если файлы используются другим устройством.

Windows отправляет этот запрос DIF, прежде чем инициирует обработку запроса PnP-remove и remove.

Дополнительные сведения о кодах DIF см. в разделе Обработка кодов DIF.

Требования

Версия

Поддерживается в Microsoft Windows 2000 и более поздних версиях Windows.

Заголовок

Setupapi.h (включая Setupapi.h)

См. также раздел

SetupDiRemoveDevice

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS

SP_REMOVEDEVICE_PARAMS