DiUninstallDriverA 函式 (newdev.h)
DiUninstallDriver 函式會藉由使用其他相符驅動程式套件來安裝這些裝置,如果沒有任何其他相符的驅動程式套件可用,則會從安裝驅動程式套件的任何裝置中移除驅動程式套件。 然後,指定的驅動程式套件會從 驅動程式存放區中移除。
語法
BOOL DiUninstallDriverA(
[in, optional] HWND hwndParent,
[in] LPCSTR 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 會透過使用其他相符驅動程式套件來安裝這些裝置,如果沒有任何其他相符的驅動程式套件可用, 則 DiUninstallDriver 會從任何已安裝的裝置中移除驅動程式套件。 不過,如果此旗標設定為 DIURFLAG_NO_REMOVE_INF,DiUninstallDriver 會從安裝所在的任何裝置中移除驅動程式套件,但不會從驅動程式存放區移除驅動程式套件。
如需 Windows 如何為裝置選取驅動程式套件的資訊,請參閱 Windows 如何選取驅動程式。
[out, optional] NeedReboot
DiUninstallDriver 所設定之 BOOL 類型的值指標,指出是否需要重新啟動系統才能完成卸載。 這個參數是選擇性的,而且可以是 NULL。 如果提供 參數且需要重新啟動系統才能完成卸載, DiUninstallDriver 會將值設定為 TRUE。 在此情況下,呼叫端必須提示使用者重新啟動系統。 如果提供此參數,而且不需要重新啟動系統才能完成卸載, DiUninstallDriver 會將值設定為 FALSE。 如果 參數為 NULL ,而且需要重新啟動系統才能完成卸載, DiUninstallDriver 會顯示系統重新啟動對話方塊。 如需此參數的詳細資訊,請參閱下列一節。
傳回值
DiUninstallDriver 會傳回 TRUE ,如果函式成功從安裝所在的任何裝置移除 驅動程式套件 ,而且已成功從系統的驅動程式存放區中移除。 如果驅動程式套件未從驅動程式存放區成功卸載, DiUninstallDriver 會傳回 FALSE ,而且可以藉由呼叫 GetLastError 來擷取記錄的錯誤。 GetLastError 可能會傳回的一些較常見的錯誤值如下:
傳回碼 | Description |
---|---|
|
呼叫端沒有系統管理員許可權。 根據預設,Windows 要求呼叫端具有系統管理員許可權,才能從驅動程式存放區卸載驅動程式套件。 |
|
指定的 INF 檔案路徑不存在。 |
|
針對 Flags 指定的值不等於零或DIURFLAG_NO_REMOVE_INF。 |
|
呼叫應用程式是32位應用程式,嘗試在不允許的64位環境中執行。 如需詳細資訊,請參閱 在64位系統上安裝裝置。 |
備註
一般而言,卸載應用程式應該將 NeedReboot 設定為 NULL ,以指示 DiUninstallDriver 在需要重新啟動才能完成移除時提示使用者重新啟動系統。 應用程式應該只在下列情況下提供 NeedReboot 指標:
- 應用程式必須呼叫 DiUninstallDriver 數次才能完成卸載。 在此情況下,應用程式應該記錄對 DiUninstallDriver 的任何呼叫是否傳回 TRUENeedReboot 值,如果是的話,在最後呼叫 DiUninstallDriver 之後,提示使用者重新啟動系統。
- 應用程式必須在系統重新啟動之前執行必要的作業,而不是呼叫 DiUninstallDriver。 如果需要重新啟動系統,應用程式應該完成必要的作業,然後提示使用者重新啟動系統。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 版本 1703 和更新版本的 Windows 中提供。 |
目標平台 | 桌面 |
標頭 | newdev.h (包含 Newdev.h) |
程式庫 | Newdev.lib |