DIF_REMOVE

DIF_REMOVE请求通知安装程序 Windows 即将删除设备,并为安装程序提供准备删除的机会。

发送时间

当用户在 设备管理器 中删除设备时。

谁处理

类辅助安装程序

可以处理

设备辅助安装程序

可以处理

类安装程序

可以处理

安装程序输入

DeviceInfoSet
提供包含要删除 的设备的设备信息集 的句柄。

DeviceInfoData
提供指向设备信息集中设备的 SP_DEVINFO_DATA 结构的指针。

设备安装参数
有与 DeviceInfoData 关联的SP_DEVINSTALL_PARAMS) (设备安装参数。

类安装参数
SP_REMOVEDEVICE_PARAMS结构可能与 DeviceInfoData 相关联。

如果SP_DEVINSTALL_PARAMS中清除了DI_CLASSINSTALLPARAMS标志,则 请求没有类安装参数。 在这种情况下,未指定硬件配置文件,设备将从整个系统中删除。

安装程序输出

安装程序返回值

辅助安装程序可以返回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。

如果安装程序确定不应删除设备,则安装程序会返回 Win32 错误代码,使 DIF 请求失败。 如果DI_QUIETINSTALL标志清晰,安装程序应向用户显示一条消息,说明设备未被删除的原因。

共同安装程序不得尝试通过调用 SetupDiRemoveDevice 来删除设备本身。 在成功移除设备后,共同安装程序通常会在后处理中处理此请求。

例如,如果共同安装程序必须删除注册表中的信息,则共同安装程序应在后处理中执行此操作,并且仅当以前的安装程序成功执行删除请求时。 在其预处理阶段,协同安装程序应将注册表信息存储在其上下文参数中,并返回请求后处理ERROR_DI_POSTPROCESSING_REQUIRED。 当 Windows 调用辅助安装程序对此 DIF 请求进行后处理时,辅助安装程序应检查 DIF 状态为NO_ERROR,然后删除注册表信息。 如果辅助安装程序在其预处理阶段删除注册表信息,并且类安装程序 (或其他共同安装程序) 无法DIF_REMOVE,则辅助安装程序可能会使设备处于不可预知的状态。

处理此 DIF 请求时,安装程序不应删除文件,以防文件被其他设备使用。

Windows 在启动 PnP 查询删除和删除处理之前发送此 DIF 请求。

有关 DIF 代码的详细信息,请参阅 处理 DIF 代码

要求

版本

在 Microsoft Windows 2000 及更高版本的 Windows 中受支持。

标头

Setupapi.h (包括 Setupapi.h)

另请参阅

SetupDiRemoveDevice

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS

SP_REMOVEDEVICE_PARAMS