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 程式碼處理常式
安裝程式作業
為了回應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) |