DIF_REMOVE請求通知安裝人員Windows即將移除裝置,並給予安裝人員準備移除的機會。
傳送時
當使用者在 裝置管理員 中移除裝置時,
誰負責
類別共同安裝器 |
能應付 |
裝置共同安裝器 |
能應付 |
類別安裝器 |
能應付 |
安裝人員輸入
裝置資訊集
提供一個裝置 資訊集 的柄,包含待移除的裝置。
裝置資訊資料
提供指向裝置資訊集中 SP_DEVINFO_DATA 結構的指標。
裝置安裝參數
裝置資訊資料(DeviceInfoData)有裝置安裝參數(SP_DEVINSTALL_PARAMS)。
類別安裝參數
裝置資訊資料(DeviceInfoData)可能會關聯一個SP_REMOVEDEVICE_PARAMS結構。
如果 SP_DEVINSTALL_PARAMS中DI_CLASSINSTALLPARAMS旗標明確,請求中沒有類別安裝參數。 此時不指定硬體配置檔,裝置將從整個系統中移除。
安裝器輸出
安裝回傳價值
共同安裝者可以回傳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 錯誤碼而失敗。 如果DI_QUIETINSTALL標誌是清除的,安裝程式應該會向使用者顯示訊息,說明為何裝置未被移除。
共同安裝者不得自行呼叫 SetupDiRemoveDevice 來移除該裝置。 共同安裝者通常在裝置成功移除後,於後處理時處理此請求。
例如,若共同安裝者必須刪除登錄檔中的資訊,則應在後處理階段進行,且前提是先前的安裝程式已成功移除。 在預處理過程中,共同安裝者應將登錄資訊儲存在其上下文參數中,並回傳ERROR_DI_POSTPROCESSING_REQUIRED請求後處理。 當Windows呼叫共同安裝者進行此 DIF 請求的後處理時,共同安裝者應檢查 DIF 狀態是否NO_ERROR,然後刪除登錄檔資訊。 如果共同安裝者在預處理過程中刪除登錄資訊,而類別安裝程式(或其他共同安裝者)未能通過DIF_REMOVE,共同安裝者可能會讓裝置處於不可預測的狀態。
安裝程式在處理此 DIF 請求時不應刪除檔案,以防該檔案被其他裝置使用。
Windows 會在啟動 PnP 查詢移除及移除處理前,先發送此 DIF 請求。
欲了解更多關於 DIF 代碼的資訊,請參閱 「處理 DIF 代碼」。
Requirements
Version |
支援Microsoft Windows 2000 及以後版本的 Windows。 |
頁首 |
Setupapi.h(包含 Setupapi.h) |