共用方式為


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 會從任何已安裝的裝置中移除驅動程式套件,但不會從驅動程式存放區移除驅動程式套件。

注意: 強制卸載驅動程式套件可能會導致以較不相容的或較舊的驅動程式取代較新的驅動程式套件。
 
如需 Windows 如何選取裝置驅動程式套件的資訊,請參閱 Windows 如何選取驅動程式

[out, optional] NeedReboot

BOOL 類型的指標,DiUninstallDriver 設定,指出是否需要重新啟動系統才能完成卸載。 這個參數是選擇性的,而且可以 NULL。 如果提供 參數,而且需要重新啟動系統才能完成卸載,DiUninstallDriver 會將值設定為 TRUE。 在此情況下,呼叫端必須提示使用者重新啟動系統。 如果提供此參數且不需要系統重新啟動才能完成卸載,DiUninstallDriver 會將值設定為 FALSE。 如果參數 NULL,而且需要系統重新啟動才能完成卸載,DiUninstallDriver 會顯示系統重新啟動對話框。 如需此參數的詳細資訊,請參閱下列 一節。

傳回值

DiUninstallDriver 會傳回 true TRUE,如果函式成功從任何已安裝的裝置中移除 驅動程式 套件,且已成功從系統的驅動程式存放區移除。 如果驅動程式套件未從驅動程式存放區成功卸載,DiUninstallDriver 會傳回 FALSE,而且您可以呼叫 getLastError來擷取記錄的錯誤。 GetLastError 可能會傳回的一些較常見的錯誤值如下:

傳回碼 描述
ERROR_ACCESS_DENIED
呼叫端沒有系統管理員許可權。 根據預設,Windows 要求呼叫者具有系統管理員許可權,才能從 驅動程式存放區卸載 驅動程式套件
ERROR_FILE_NOT_FOUND
指定的 INF 檔案路徑不存在。
ERROR_INVALID_FLAGS
針對 Flags 指定的值不等於零或DIURFLAG_NO_REMOVE_INF。
ERROR_IN_WOW64
呼叫的應用程式是32位應用程式,嘗試在不允許的64位環境中執行。 如需詳細資訊,請參閱 在 64 位系統上安裝裝置

言論

一般而言,卸載應用程式應該將 NeedReboot 設定為 NULL,以指示 DiUninstallDriver,提示使用者重新啟動系統,如果需要重新啟動才能完成移除作業。 應用程式應該只在下列情況下提供 NeedReboot 指標:

  • 應用程式必須呼叫 DiUninstallDriver 數次才能完成卸載。 在此情況下,應用程式應該記錄 TRUENeedReboot 值是否由 DiUninstallDriver 的任何呼叫傳回,如果是的話,請在最後 呼叫 DiUninstallDriver 之後,提示使用者重新啟動系統。
  • 應用程式必須執行必要的作業,而不是呼叫 DiUninstallDriver,系統應該重新啟動。 如果需要系統重新啟動,應用程式應該完成必要的作業,然後提示使用者重新啟動系統。

要求

要求 價值
最低支援的用戶端 適用於 Windows 10 版本 1703 和更新版本的 Windows。
目標平臺 桌面
標頭 newdev.h (包括 Newdev.h)
連結庫 Newdev.lib

另請參閱

DiUninstallDevice