SetupDiCreateDeviceInfoA 函式 (setupapi.h)
SetupDiCreateDeviceInfo 函式會建立新的裝置資訊元素,並將它新增為指定裝置資訊集的新成員。
語法
WINSETUPAPI BOOL SetupDiCreateDeviceInfoA(
[in] HDEVINFO DeviceInfoSet,
[in] PCSTR DeviceName,
[in] const GUID *ClassGuid,
[in, optional] PCSTR DeviceDescription,
[in, optional] HWND hwndParent,
[in] DWORD CreationFlags,
[out, optional] PSP_DEVINFO_DATA DeviceInfoData
);
參數
[in] DeviceInfoSet
本機計算機的 裝置資訊集 句柄。
[in] DeviceName
NULL 終止字串的指標,提供完整的 裝置實例標識碼(例如,“Root*PNP0500\0000”)或根列舉的 裝置標識符, 不含列舉值前置詞和實例標識符後綴(例如“*PNP0500”)。 只有在 CreationFlags 參數中指定了DICD_GENERATE_ID旗標時,才能使用根列舉的裝置標識碼。
[in] ClassGuid
裝置安裝類別的指標, 裝置的 GUID。 如果不知道裝置的裝置安裝類別,請將 *ClassGuid 設為 GUID_NULL 結構。
[in, optional] DeviceDescription
提供裝置文字描述之 NULL 終止字串的指標。 此指標是選擇性的,而且可以 NULL。
[in, optional] hwndParent
最上層視窗的句柄,用於與安裝裝置相關的任何使用者介面。 此句柄是選擇性的,而且可以 NULL。
[in] CreationFlags
DWORD 類型的變數,可控制裝置資訊元素的建立方式。 可以是下列值的組合:
DICD_GENERATE_ID
如果指定此旗標,DeviceName 只包含根列舉的 裝置標識子,而且系統會使用該標識符來產生新裝置資訊元素的完整 裝置實例標識碼。
呼叫 SetupDiGetDeviceInstanceId,以擷取為此裝置資訊元素產生的裝置實例標識碼。
DICD_INHERIT_CLASSDRVS
如果指定這個旗標,產生的裝置資訊元素會繼承類別驅動程式清單,如果有的話,與裝置資訊集相關聯。 此外,如果有針對裝置資訊集選取的驅動程式,則會針對新的裝置資訊元素選取相同的驅動程式。
[out, optional] DeviceInfoData
接收新裝置資訊元素之 SP_DEVINFO_DATA 結構的指標。 此指標是選擇性的,而且可以 NULL。 如果提供 結構,呼叫端必須在呼叫函式之前,將這個結構的 cbSize 成員設定為 sizeof(SP_DEVINFO_DATA)。 如需詳細資訊,請參閱下列
傳回值
如果函式成功,函式會傳回 TRUE。 否則,它會傳回 FALSE,而且可以藉由呼叫 getLastError 來擷取記錄的錯誤。
言論
此函式的呼叫端必須是 Administrators 群組的成員。
如果這個裝置實例已新增至具有相關聯類別的集合,裝置類別必須相同,否則呼叫會失敗。 在此情況下,GetLastError 的呼叫會傳回ERROR_CLASS_MISMATCH。
如果指定的裝置實例與登錄中的現有裝置實例機碼相同,則呼叫會失敗。 在此情況下,GetLastError 呼叫會傳回ERROR_DEVINST_ALREADY_EXISTS。 只有當未設定DICD_GENERATE_ID旗標時,才會發生這種情況。
如果已成功建立新的裝置資訊元素,但呼叫端提供的 DeviceInfoData 緩衝區無效,則函式會傳回 FALSE。 在此情況下,GetLastError 的呼叫會傳回ERROR_INVALID_USER_BUFFER。 不過,裝置資訊元素已新增為集合的新成員。
DeviceInfoSet 只能包含本機電腦上的元素。
注意
setupapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 SetupDiCreateDeviceInfo 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Microsoft Windows 2000 和更新版本的 Windows 中提供。 |
目標平臺 | 桌面 |
標頭 | setupapi.h (包括 Setupapi.h) |
連結庫 | Setupapi.lib |