共用方式為


DIF_REMOVE

DIF_REMOVE要求會通知安裝程式 Windows 即將移除裝置,並讓安裝程式有機會準備移除。

傳送時

當使用者在 裝置管理員 中移除裝置時。

誰處理

類別共同安裝程式

可以處理

裝置共同安裝程式

可以處理

類別安裝程式

可以處理

安裝程式輸入

DeviceInfoSet
提供包含要移除之 裝置之裝置資訊的 控制碼。

DeviceInfoData
提供裝置資訊集中裝置 SP_DEVINFO_DATA 結構的指標。

裝置安裝參數
DeviceInfoData相關聯的裝置安裝參數 (SP_DEVINSTALL_PARAMS)

類別安裝參數
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。

如果安裝程式判斷不應該移除裝置,安裝程式會傳回 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