DiInstallDriverW 函式 (newdev.h)
DiInstallDriver 函式會在 驅動程式存放區預安裝驅動程式,然後將驅動程式安裝在驅動程式支援的裝置上。
語法
BOOL DiInstallDriverW(
[in, optional] HWND hwndParent,
[in] LPCWSTR InfPath,
[in] DWORD Flags,
[out, optional] PBOOL NeedReboot
);
參數
[in, optional] hwndParent
DiInstallDriver 的最上層視窗句柄,用來顯示與安裝裝置相關聯的任何使用者介面元件。 這個參數是選擇性的,而且可以設定為 NULL。
[in] InfPath
NULL 終止字串的指標,提供 驅動程式套件之 INF 檔案的完整路徑,。
[in] Flags
DWORD 類型的值,指定零或一或多個旗標的組合,如這裡所述(Flags 通常設定為零)。
如果 旗標 為零,DiInstallDriver 只有在驅動程式比目前安裝在裝置上的驅動程式更符合裝置時,才會在裝置上安裝指定的驅動程式。 如需 Windows 如何選取裝置驅動程式的詳細資訊,請參閱 Windows 如何選取驅動程式。
如果 旗標 包含DIIRFLAG_FORCE_INF,DiInstallDriver 在相符的裝置上安裝指定的驅動程式,無論驅動程式是否比目前安裝在裝置上的驅動程式更相符。 如果同時指定DIIRFLAG_INSTALL_AS_SET,則會忽略DIIRFLAG_FORCE_INF。
如果 旗標 包含DIIRFLAG_INSTALL_AS_SET(Windows 10 1709 版和更新版本支援),InfPath 應該指定目錄,而不是 INF 檔案的完整路徑,DiInstallDriver 將會在該目錄中安裝具有特殊行為的所有 INF 檔案。 所有 驅動程式套件 都會暫存到 Driver Store,但尚未在裝置上安裝。 在下一次關閉系統時,這些驅動程式套件將可供後續安裝在裝置上,而且這些套件會安裝在最適合的任何裝置上,讓裝置在下次開機時準備就緒。
[out, optional] NeedReboot
BOOL 類型的指標,DiInstallDriver 設定,指出是否需要重新啟動系統才能完成安裝。 這個參數是選擇性的,而且可以 NULL。 如果提供 參數,而且必須重新啟動系統才能完成安裝,DiInstallDriver 會將值設定為 true true。 在此情況下,呼叫端必須提示使用者重新啟動系統。 如果提供此參數且不需要系統重新啟動才能完成安裝,DiInstallDriver 會將值設定為 FALSE。 如果參數 NULL,而且需要系統重新啟動才能完成安裝,DiInstallDriver 會顯示系統重新啟動對話框。 如需此參數的詳細資訊,請參閱下列 一節。
傳回值
DiInstallDriver 會傳回 true true,如果函式成功預安裝 驅動程式存放區中的指定 驅動程式套件,。
DiInstallDriver 如果函式已在系統中的一或多個裝置上成功安裝驅動程式,也會傳 回 true TRUE。 如果驅動程式套件未成功安裝在驅動程式存放區中,
傳回碼 | 描述 |
---|---|
|
呼叫端沒有系統管理員許可權。 根據預設,Windows 要求呼叫者具有系統管理員許可權,才能在 驅動程式存放區中預安裝 驅動程式套件。 |
|
指定的 INF 檔案路徑不存在。 |
|
為 Flags 指定的值不等於零或DIIRFLAG_FORCE_INF。 |
|
呼叫的應用程式是32位應用程式,嘗試在不允許的64位環境中執行。 如需詳細資訊,請參閱 在 64 位系統上安裝裝置。 |
言論
DiInstallDriver 會執行下列作業:
- 在 驅動程式存放區中預安裝 驅動程式套件。 如果驅動程式存放區中已預安裝相同驅動程式套件的實例,DiInstallDriver 先移除該實例,然後將驅動程式套件的新實例新增至驅動程式存放區。
- 列舉系統中存在的裝置。
- 如果 旗標 等於零,則只有在指定的驅動程式比目前安裝在裝置上的驅動程式更符合時,才會將驅動程式安裝在裝置上。
- 如果 旗標 等於DIIRFLAG_FORCE_INF,則不論 驅動程式套件 是否比目前安裝在裝置上的驅動程式,都會在裝置上安裝驅動程式。
- 應用程式必須呼叫 DiInstallDriver 數次才能完成安裝。 在此情況下,應用程式應該記錄 TRUENeedReboot 值是否由任何呼叫 DiInstallDriver 傳回,如果是的話,請在最後 呼叫 DiInstallDriver 之後,提示使用者重新啟動系統。
- 應用程式必須執行必要的作業,而不是呼叫 DiInstallDriver,才能發生系統重新啟動。 如果需要系統重新啟動,應用程式應該完成必要的作業,然後提示使用者重新啟動系統。
- 應用程式是類別安裝程式,在此情況下,類別安裝程式應該在裝置的 Flags SP_DEVINSTALL_PARAMS 成員中設定DI_NEEDREBOOT旗標。
注意
newdev.h 標頭會將 DiInstallDriver 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 適用於 Windows Vista 和更新版本的 Windows。 |
目標平臺 | 桌面 |
標頭 | newdev.h (包括 Newdev.h) |
連結庫 | Newdev.lib |