DIF_REMOVE

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 程式碼處理器

設置DiRemoveDevice

安裝器操作

針對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)

也請參閱

設置DiRemoveDevice

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS

SP_REMOVEDEVICE_PARAMS