SP_DEVINSTALL_PARAMS_W結構 (setupapi.h)
SP_DEVINSTALL_PARAMS結構包含與特定裝置資訊專案相關聯的裝置安裝參數,或與裝置資訊集全域相關聯的裝置安裝參數。
語法
typedef struct _SP_DEVINSTALL_PARAMS_W {
DWORD cbSize;
DWORD Flags;
DWORD FlagsEx;
HWND hwndParent;
PSP_FILE_CALLBACK InstallMsgHandler;
PVOID InstallMsgHandlerContext;
HSPFILEQ FileQueue;
ULONG_PTR ClassInstallReserved;
DWORD Reserved;
WCHAR DriverPath[MAX_PATH];
} SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS_W;
成員
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 ,或它是整個安裝類別在類別安裝程式 INF 中標示為 NoInstallClass 或 NoUseClass 之裝置的驅動程式,則驅動程式為「排除選取」。 PnP 裝置的驅動程式通常是「從選取中排除」;不應該手動安裝 PnP 裝置。 若要建置 PnP 裝置的驅動程式檔案清單, SetupDiBuildDriverInfoList 的呼叫端必須設定此旗標。
DI_FLAGSEX_ALWAYSWRITEIDS
如果設定且DI_NOWRITE_IDS旗標清楚,請一律將硬體和相容的標識碼寫入開發節點的裝置屬性。 此旗標應該只針對根列舉裝置設定。
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。
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]
SetupDiBuildDriverInfoList 函式會使用此路徑。
備註
注意
setupapi.h 標頭會將SP_DEVINSTALL_PARAMS定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
標頭 | setupapi.h (包括 Setupapi.h) |