SP_DEVINSTALL_PARAMS_A 結構 (setupapi.h)
SP_DEVINSTALL_PARAMS 結構包含與特定裝置資訊專案相關聯的裝置安裝參數,或與裝置資訊集全域相關聯的裝置安裝參數。
語法
typedef struct _SP_DEVINSTALL_PARAMS_A {
DWORD cbSize;
DWORD Flags;
DWORD FlagsEx;
HWND hwndParent;
PSP_FILE_CALLBACK InstallMsgHandler;
PVOID InstallMsgHandlerContext;
HSPFILEQ FileQueue;
ULONG_PTR ClassInstallReserved;
DWORD Reserved;
CHAR DriverPath[MAX_PATH];
} SP_DEVINSTALL_PARAMS_A, *PSP_DEVINSTALL_PARAMS_A;
成員
cbSize
SP_DEVINSTALL_PARAMS 結構的大小,以位元組為單位。
Flags
控制安裝和使用者介面作業的旗標。 某些旗標可以在傳送裝置安裝要求之前設定,而其他旗標會在處理某些要求期間自動設定。 旗標 可以是下列值的組合。
旗標值列在群組中:裝置 安裝應用程式和 安裝程式可寫入、唯讀 (僅由OS) 、保留和過時設定。 第一個群組會列出可寫入的旗標:
DI_CLASSINSTALLPARAMS
設定為使用類別安裝參數。 SetupDiSetClassInstallParams 會在呼叫端指定參數時設定此旗標,並在呼叫端指定 NULL 參數指標時清除旗標。
DI_COMPAT_FROM_CLASS
設定 為強制 SetupDiBuildDriverInfoList 從其類別驅動程式清單建置裝置的相容驅動程式清單,而不是 INF 檔案。
DI_DRIVERPAGE_ADDED
如果安裝程式提供取代系統提供驅動程式屬性頁面的頁面,請由類別安裝程式或共同安裝程序設定。 如果設定此旗標,則操作系統不會顯示系統提供的驅動程式頁面。
DI_DONOTCALLCONFIGMG
設定是否不應該呼叫組態管理員,以在執行特定裝置安裝函式期間移除或繼續裝置 (,例如 SetupDiInstallDevice) 。
如果設定此旗標,裝置安裝應用程式、類別安裝程式和共同安裝程式不得呼叫下列函式:
CM_Reenumerate_DevNode CM_Reenumerate_DevNode_Ex CM_Query_And_Remove_SubTree CM_Query_And_Remove_SubTree_Ex CM_Setup_DevNode CM_Setup_DevNode_Ex CM_Set_HW_Prof_Flags CM_Set_HW_Prof_Flags_Ex CM_Enable_DevNode CM_Enable_DevNode_Ex CM_Disable_DevNode CM_Disable_DevNode_Ex
DI_ENUMSINGLEINF
設定安裝程式和其他 裝置安裝元件 是否應該只搜尋SP_DEVINSTALL_PARAMS指定的 INF 檔案。DriverPath。 如果設定此旗標, DriverPath 會包含單一 INF 檔案的路徑,而不是目錄的路徑。
DI_INF_IS_SORTED
設定為 ,表示 [選取裝置] 頁面應該依照它們出現在 INF 檔案中的順序序列出驅動程式,而不是依字母順序排序驅動程式。
DI_INSTALLDISABLED
根據預設,設定裝置是否應該處於停用狀態。 若要辨識,必須先設定此旗標,Windows 才會呼叫 DIF_INSTALLDEVICE 要求的默認處理程式。
DI_NEEDREBOOT
如果是 NT 型作業系統,如果裝置需要在裝置安裝或裝置狀態變更之後重新啟動電腦,就會設定此旗標。 如果安裝程序判斷需要重新啟動,類別安裝程式或共同安裝程式可以隨時在裝置安裝期間設定此旗標。
DI_NEEDRESTART
與DI_NEEDREBOOT相同。
DI_NOBROWSE
設定為在用戶選取 OEM 磁碟路徑時停用流覽。 裝置安裝應用程式會將此旗標設定為限制使用者只從安裝媒體位置進行安裝。
DI_NODI_DEFAULTACTION
如果類別安裝程式傳回ERR_DI_DO_DEFAULT或沒有類別安裝程式, 則設定SetupDiCallClassInstaller 不應該執行任何默認動作。
DI_NOFILECOPY
設定裝置安裝應用程式和元件,例如 SetupDiInstallDevice 時,應該略過檔案複製。
DI_NOVCP
設定為停用新複製佇列的建立。 在 SP_DEVINSTALL_PARAMS 中使用呼叫端提供的複製佇列。FileQueue。
DI_NOWRITE_IDS
設定 為防止 SetupDiInstallDevice 將 INF 指定的 硬體 識別碼和 相容的 標識碼寫入裝置節點的裝置屬性, (devnode) 。 此旗標應該只針對根列舉裝置進行設定。
此旗標會覆寫DI_FLAGSEX_ALWAYSWRITEIDS旗標。
DI_PROPERTIES_CHANGE
如果裝置的屬性已變更,裝置管理員 設定,這需要更新安裝程式的使用者介面。
DI_QUIETINSTALL
設定裝置安裝程式功能是否必須為無訊息,並盡可能使用預設選項。 如果設定此旗標,類別安裝程式和共同安裝程式不得顯示任何UI。
DI_RESOURCEPAGE_ADDED
如果安裝程式提供取代系統提供資源屬性頁面的頁面,請由類別安裝程式或共同安裝程序設定。 如果設定此旗標,操作系統就不會顯示系統提供的資源頁面。
DI_SHOWOEM
設定為允許支援 OEM 磁碟。 如果設定此旗標,操作系統會在 [選取裝置] 頁面上顯示 [具有磁碟] 按鈕。 根據預設,系統會在系統提供的精靈中設定此旗標。
DI_USECI_SELECTSTRINGS
如果類別安裝程式或共同安裝程式提供的字串應該在 SetupDiSelectDevice 期間使用,請設定 。
下列旗標為唯讀 (僅由OS) 設定:
DI_DIDCLASS
設定 SetupDiBuildDriverInfoList 是否已建置此裝置類別的驅動程式清單。 如果已經建置此清單,它就會包含所有驅動程序資訊,而且一律會設定此旗標。 SetupDiDestroyDriverInfoList 會在刪除類別的驅動程式清單時清除此旗標。
此旗標是唯讀的。 只有作業系統會設定此旗標。
DI_DIDCOMPAT
設定 SetupDiBuildDriverInfoList 是否已為此裝置建置相容的驅動程序清單。 如果已經建置此清單,它就會包含所有驅動程序資訊,而且一律會設定此旗標。 SetupDiDestroyDriverInfoList 會在刪除相容的驅動程式清單時清除此旗標。
這個旗標只會在與特定裝置資訊專案相關聯的裝置安裝參數中設定,而不是在整體設定裝置資訊的參數中設定。
此旗標是唯讀的。 只有作業系統會設定此旗標。
DI_MULTMFGS
如果裝置安裝類別的驅動程式清單包含多個製造商所提供的驅動程式,則由SetupDiBuildDriverInfoList 設定。
此旗標是唯讀的。 只有作業系統會設定此旗標。
下列旗標是保留的:
DI_AUTOASSIGNRES
DI_DISABLED
DI_FORCECOPY
DI_GENERALPAGE_ADDED
DI_OVERRIDE_INFFLAGS
DI_SHOWALL
DI_SHOWCLASS
DI_SHOWCOMPAT
下列旗標已過時:
DI_NOSELECTICONS
DI_PROPS_NOCHANGEUSAGE
FlagsEx
提供安裝和使用者介面作業控制權的其他旗標。 某些旗標可以在呼叫裝置安裝程式函式之前設定,而其他旗標會在處理某些函式期間自動設定。 FlagsEx 可以是下列值的組合。
旗標值會列在群組中:裝置安裝應用程式和安裝程式可寫入、唯讀 (僅由OS) 、保留和過時設定。
第一個群組會列出可寫入的旗標:
DI_FLAGSEX_ALLOWEXCLUDEDDRVS
如果設定,請包含標示為「從選取中排除」的驅動程式。
例如,如果設定此旗標, SetupDiSelectDevice 會顯示具有 [從選取中排除] 狀態的驅動程式,而 SetupDiBuildDriverInfoList 會在要求的驅動程式清單中包含 [從選取驅動程式排除]。
如果驅動程式在 INF 檔案中標示為 ExcludeFromSelect ,或是整個安裝程式類別標示為 NoInstallClass 或 NoUseClass 之裝置的驅動程式,則驅動程式為「從選取排除」。 PnP 裝置的驅動程式通常是「從選取中排除」;不應該手動安裝 PnP 裝置。 若要建置 PnP 裝置的驅動程式檔案清單, SetupDiBuildDriverInfoList 的呼叫端必須設定此旗標。
DI_FLAGSEX_ALWAYSWRITEIDS
如果設定且DI_NOWRITE_IDS旗標清楚,請一律將硬體和相容的標識碼寫入 devnode 的裝置屬性。 此旗標應該只針對根列舉裝置進行設定。
DI_FLAGSEX_APPENDDRIVERLIST
如果設定, SetupDiBuildDriverInfoList 會將新的驅動程式清單附加至現有的清單。 搜尋多個位置時,此旗標會相關。
DI_FLAGSEX_DRIVERLIST_FROM_URL
如果設定,請從 INF 建置驅動程式清單, (從 SP_DEVINSTALL_PARAMS 中指定的 URL 擷取) 。DriverPath。 如果 DriverPath 是空字串,請使用 Windows Update 網站。
操作系統目前不支援 URL。 使用此旗標來指示 SetupDiBuildDriverInfoList 搜尋 Windows Update 網站。
如果已設定DI_QUIETINSTALL,請勿設定此旗標。
DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS
如果已設定,建置驅動程式清單時請勿包含舊的因特網驅動程式。 每當您建置裝置的潛在驅動程式清單時,都應該設定此旗標。 如果您剛收到目前為裝置安裝的驅動程式清單,您可以清除此旗標。
DI_FLAGSEX_FILTERCLASSES
如果設定, SetupDiBuildClassInfoList 將會檢查類別包含篩選。 這表示如果裝置的類別標示為 NoInstallClass,裝置將不會包含在類別清單中。
DI_FLAGSEX_FILTERSIMILARDRIVERS
(Windows XP 和更新版本。) 如果設定, SetupDiBuildDriverInfoList 會在建置類別驅動程式清單時包含“similar” 驅動程式。 「類似」驅動程式是其中一個硬體標識碼或 INF 檔案中的相容識別碼部分 (或完全) 符合其中一個硬體識別碼或硬體相容標識碼的驅動程式。
DI_FLAGSEX_FINISHINSTALL_ACTION
(Windows Vista 和更新版本。) 如需詳細資訊,請參閱 將裝置標示為具有 Finish-Install 動作來執行 。
DI_FLAGSEX_INET_DRIVER
如果已設定,則從因特網取得驅動程式。 Windows 不會使用裝置的 INF 來安裝未來的裝置,因為 Windows 無法保證它可以再次從因特網擷取驅動程式檔案。
DI_FLAGSEX_INSTALLEDDRIVER
(Windows XP 和更新版本.) 如果設定, SetupDiBuildDriverInfoList 只會在建立類別驅動程式或裝置相容驅動程式清單時只包含目前安裝的驅動程式。
DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE
(Windows XP 和更新版本.) 如果設定,建立類別驅動程式清單時, SetupDiBuildDriverInfoList 將不會合併來自相同 INF 且具有相同驅動程式描述和排名的驅動程式清單中的節點。
DI_FLAGSEX_NO_DRVREG_MODIFY
請勿處理裝置硬體和軟體 (驅動程式) 金鑰的 AddReg 和 DelReg 專案。 也就是說,INF 檔案 DDInstall 和 DDInstall 中的 AddReg 和 DelReg 專案。HW 區段。
DI_FLAGSEX_POWERPAGE_ADDED
如果設定,安裝程式會為電源屬性對話框新增自己的頁面。 操作系統不會顯示系統提供的電源屬性頁面。 只有在裝置支援電源管理時,此旗標才相關。
DI_FLAGSEX_PROPCHANGE_PENDING
如果設定,使用者對一或多個裝置屬性表進行變更。 屬性頁提供者通常會設定此旗標。
當使用者關閉裝置屬性表時,裝置管理員 會檢查DI_FLAGSEX_PROPCHANGE_PENDING旗標。 如果已設定,裝置管理員 清除此旗標、設定DI_PROPERTIES_CHANGE旗標,並將DIF_PROPERTYCHANGE要求傳送給安裝程式,以通知它們已變更專案。
DI_FLAGSEX_RECURSIVESEARCH
(Windows Vista 和更新版本.) 如果設定,當 SetupDiBuildDriverInfoList 在 DriverPath 值中指定的路徑中搜尋 INF 時,搜尋將會遞歸。
DI_FLAGSEX_SEARCH_PUBLISHED_INFS
(Windows Vista 和更新版本.) 如果已設定,則 當 SetupDiBuildDriverInfoList 用於搜尋沒有指定 INF 路徑或搜尋路徑的 INF 時,這會將搜尋限制為僅匯入驅動程式存放區的 INF。
DI_FLAGSEX_SETFAILEDINSTALL
如果安裝失敗,請設定 。 如果設定此旗標, SetupDiInstallDevice 函式只會在裝置的 ConfigFlags 登錄值中設定 FAILEDINSTALL 旗標。 如果已設定DI_FLAGSEX_SETFAILEDINSTALL,共同安裝程式必須傳回NO_ERROR以回應DIF_INSTALLDEVICE,而類別安裝程序必須傳回NO_ERROR或ERROR_DI_DO_DEFAULT。
DI_FLAGSEX_USECLASSFORCOMPAT
在建置相容驅動程式清單時,篩選裝置設定類別上的 INF 檔案。 如果已知裝置的安裝類別,設定此旗標可減少在搜尋未預先編譯的 INF 檔案時,建置相容驅動程式清單所需的時間。 如果已設定DI_COMPAT_FROM_CLASS,則會忽略此旗標。
下列旗標是唯讀的;只有作業系統會設定這些旗標:
DI_FLAGSEX_CI_FAILED
如果類別安裝程式無法載入或啟動,請由作業系統設定。 此旗標是唯讀的。
DI_FLAGSEX_DIDCOMPATINFO
Windows 已建置與裝置相容的 驅動程序節點 清單。 此旗標是唯讀的。
DI_FLAGSEX_DIDINFOLIST
Windows 已建置驅動程式節點清單,其中包含指定之安裝類別 INF 檔案中列出的所有驅動程式。 如果指定的安裝類別是 NULL ,因為 HDEVINFO 集合或裝置沒有相關聯的類別,則清單會包含所有可用 INF 檔案中的所有驅動程序節點。 此旗標是唯讀的。
DI_FLAGSEX_IN_SYSTEM_SETUP
如果設定,則會在初始系統設定期間進行安裝。 此旗標是唯讀的。
下列旗標是保留的,不應使用:
DI_FLAGSEX_ALTPLATFORM_DRVSEARCH
DI_FLAGSEX_BACKUPONREPLACE
DI_FLAGSEX_DEVICECHANGE
DI_FLAGSEX_OLDINF_IN_CLASSLIST
DI_FLAGSEX_PREINSTALLBACKUP
DI_FLAGSEX_RESTART_DEVICE_ONLY
DI_FLAGSEX_USEOLDINFSEARCH
下列旗標已過時:
DI_FLAGSEX_AUTOSELECTRANK0
DI_FLAGSEX_NOUIONQUERYREMOVE
hwndParent
視窗句柄,將擁有與這個裝置相關的使用者介面對話方塊。
InstallMsgHandler
在檔案複製期間用來處理事件的回呼。 例如,安裝程式可以使用回呼,在認可檔案佇列時執行特殊處理。
InstallMsgHandlerContext
InstallMsgHandler 回呼所使用的私人數據。
FileQueue
呼叫端提供的檔案佇列句柄,其中應該將檔案作業排入佇列,但未認可。
如果您將檔案佇列與裝置資訊集建立關聯, (SetupDiSetDeviceInstallParams) ,您必須先解除佇列與裝置資訊集的關聯,才能刪除裝置資訊集。 如果您無法解除關聯檔案佇列,Windows 無法在裝置資訊集上遞減其參考計數,而且無法釋放記憶體。
只有在設定DI_NOVCP旗標時,才會使用此佇列,表示應該加入佇列但未認可檔案作業。
ClassInstallReserved
類別安裝程序數據的指標。 共同安裝程式不得使用此欄位。
Reserved
保留的。 僅供內部使用。
DriverPath[MAX_PATH]
安裝程式DiBuildDriverInfoList 函式會使用此路徑。
備註
注意
setupapi.h 標頭會將SP_DEVINSTALL_PARAMS定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
標頭 | setupapi.h (包括 Setupapi.h) |