DiUninstallDriverW 函式 (newdev.h)
DiUninstallDriver 函式會從任何已安裝的裝置中移除驅動程式套件,方法是使用另一個相符的驅動程式套件安裝這些裝置,如果有的話,或如果沒有其他相符的驅動程式套件可用,則為 Null 驅動程式。 然後,指定的驅動程式套件會從 驅動程式存放區中移除。
語法
BOOL DiUninstallDriverW(
[in, optional] HWND hwndParent,
[in] LPCWSTR InfPath,
[in] DWORD Flags,
[out, optional] PBOOL NeedReboot
);
參數
[in, optional] hwndParent
最上層視窗的句柄,DiUninstallDriver 應該用來顯示與卸載驅動程式相關聯的任何使用者介面元件。 這個參數是選擇性的,而且可以設定為 NULL。
[in] InfPath
NULL 終止字串的指標,提供 驅動程式套件之 INF 檔案的完整路徑,。
[in] Flags
DWORD 類型的值,指定下列旗標的零或一或多個:DIURFLAG_NO_REMOVE_INF。 一般而言,這個旗標應該設定為零。
如果這個旗標為零,DiUninstallDriver 藉由安裝具有另一個相符驅動程式套件的裝置來移除驅動程式套件,如果沒有其他相符的驅動程式套件,則為 Null 驅動程式套件。 不過,如果此旗標設定為 DIURFLAG_NO_REMOVE_INF,DiUninstallDriver 會從任何已安裝的裝置中移除驅動程式套件,但不會從驅動程式存放區移除驅動程式套件。
[out, optional] NeedReboot
BOOL 類型的指標,DiUninstallDriver 設定,指出是否需要重新啟動系統才能完成卸載。 這個參數是選擇性的,而且可以 NULL。 如果提供 參數,而且需要重新啟動系統才能完成卸載,
傳回值
DiUninstallDriver 會傳回 true TRUE,如果函式成功從任何已安裝的裝置中移除 驅動程式 套件,且已成功從系統的驅動程式存放區移除。 如果驅動程式套件未從驅動程式存放區成功卸載,DiUninstallDriver 會傳回 FALSE,而且您可以呼叫 getLastError來擷取記錄的錯誤。 GetLastError 可能會傳回的一些較常見的錯誤值如下:
傳回碼 | 描述 |
---|---|
|
呼叫端沒有系統管理員許可權。 根據預設,Windows 要求呼叫者具有系統管理員許可權,才能從 |
|
指定的 INF 檔案路徑不存在。 |
|
針對 Flags 指定的值不等於零或DIURFLAG_NO_REMOVE_INF。 |
|
呼叫的應用程式是32位應用程式,嘗試在不允許的64位環境中執行。 如需詳細資訊,請參閱 在 64 位系統上安裝裝置。 |
言論
一般而言,卸載應用程式應該將 NeedReboot 設定為 NULL,以指示 DiUninstallDriver,提示使用者重新啟動系統,如果需要重新啟動才能完成移除作業。 應用程式應該只在下列情況下提供 NeedReboot 指標:
- 應用程式必須呼叫 DiUninstallDriver 數次才能完成卸載。 在此情況下,應用程式應該記錄 TRUENeedReboot 值是否由 DiUninstallDriver 的任何呼叫傳回,如果是的話,請在最後 呼叫 DiUninstallDriver 之後,提示使用者重新啟動系統。
- 應用程式必須執行必要的作業,而不是呼叫 DiUninstallDriver,系統應該重新啟動。 如果需要系統重新啟動,應用程式應該完成必要的作業,然後提示使用者重新啟動系統。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 適用於 Windows 10 版本 1703 和更新版本的 Windows。 |
目標平臺 | 桌面 |
標頭 | newdev.h (包括 Newdev.h) |
連結庫 | Newdev.lib |