SetupDiSetClassPropertyExW 函式 (setupapi.h)

SetupDiSetClassPropertyEx 函式會為本機或遠端電腦上的裝置安裝類別或裝置介面類別設定裝置屬性。

語法

WINSETUPAPI BOOL SetupDiSetClassPropertyExW(
  [in]           const GUID       *ClassGuid,
  [in]           const DEVPROPKEY *PropertyKey,
  [in]           DEVPROPTYPE      PropertyType,
  [in, optional] const PBYTE      PropertyBuffer,
  [in]           DWORD            PropertyBufferSize,
  [in]           DWORD            Flags,
  [in, optional] PCWSTR           MachineName,
                 PVOID            Reserved
);

參數

[in] ClassGuid

GUID 的指標,識別要設定裝置屬性的裝置安裝類別或裝置介面類別。 如需如何指定類別類型的資訊,請參閱 Flags 參數。

[in] PropertyKey

DEVPROPKEY 結構的指標,表示要設定之裝置類別屬性的裝置屬性索引鍵。

[in] PropertyType

DEVPROPTYPE 型別值,表示類別屬性的屬性數據類型標識碼。 For more information about the property-data-type identifier, see the Remarks section later in this topic.

[in, optional] PropertyBuffer

緩衝區的指標,其中包含類別屬性值。 如果刪除屬性或屬性值,此指標必須設定為 NULL, 而且 PropertyBufferSize 必須設定為零。 For more information about property value requirements, see the Remarks section later in this topic.

[in] PropertyBufferSize

PropertyBuffer 緩衝區的大小,以位元組為單位。 屬性緩衝區大小必須與 PropertyType 所提供的屬性數據類型標識碼一致。 如果 PropertyBuffer 設定為 NULL,PropertyBufferSize 必須設定為零。

[in] Flags

下列其中一個值,指定類別是裝置安裝類別還是裝置介面類別:

DICLASSPROP_INSTALLER

ClassGuid 會指定裝置設定類別。 此旗標無法與DICLASSPROP_INTERFACE搭配使用。

DICLASSPROP_INTERFACE

ClassGuid 指定裝置介面類別。 此旗標無法與DICLASSPROP_INSTALLER搭配使用。

[in, optional] MachineName

NULL 終止 Unicode 字串的指標,其中包含計算機的 UNC 名稱,包括 “\” 前置詞。 此指標可以設定為 NULL。 如果指標為 NULL,SetupDiSetClassPropertyEx 會設定本機電腦上安裝之類別的類別屬性。

警告

從 Windows 8 和 Windows Server 2012 開始,不支援使用此函式來存取遠端計算機,因為此功能已移除。

Reserved

此參數必須設定為 NULL。

傳回值

如果成功,SetupDiSetClassPropertyEx 會傳回 TRUE 。 否則,它會傳回 FALSE,而且可以藉由呼叫 GetLastError 來擷取記錄的錯誤。

下表包含此函式可能會記錄的一些較常見的錯誤碼。

傳回碼 Description
ERROR_INVALID_FLAGS
Flags 的值無效。
ERROR_INVALID_CLASS
ClassGuid 指定的裝置安裝類別無效。 只有在指定DICLASSPROP_INSTALLER旗標時,才會發生此錯誤。
ERROR_INVALID_REFERENCE_STRING
裝置介面參考字串無效。 只有在指定DICLASSPROP_INTERFACE旗標時,才會發生此錯誤。
ERROR_INVALID_REG_PROPERTY
PropertyKey 所提供的屬性索引鍵無效。
ERROR_INVALID_DATA
未指定的內部數據值無效。 如果 ClassGuid 值不是有效的 GUID,或屬性值不符合 PropertyType 所指定的屬性類型,可能會記錄此錯誤。
ERROR_INVALID_USER_BUFFER
用戶緩衝區無效。 其中一個可能性是 PropertyBuffer 是 NULL, 而 PropertyBufferSize 不是零。
ERROR_INVALID_MACHINENAME
MachineName 所指定的計算機名稱無效。
ERROR_NO_SUCH_INTERFACE_CLASS
ClassGuid 指定的裝置介面類別不存在。 只有在指定DICLASSPROP_INTERFACE旗標時,才會發生此錯誤。
ERROR_INSUFFICIENT_BUFFER
傳遞至系統呼叫的內部數據緩衝區太小。
ERROR_NOT_ENOUGH_MEMORY
沒有足夠的系統記憶體可用來完成作業。
ERROR_NOT_FOUND
找不到未指定的專案。 其中一個可能性是要刪除的屬性不存在。
ERROR_ACCESS_DENIED
呼叫端沒有系統管理員許可權。

備註

SetupDiSetClassPropertyEx 是 統一裝置屬性模型的一部分。

SetupAPI 僅支援 SetupDiSetClassPropertyEx 的 Unicode 版本。

SetupDiSetClassPropertyEx 的呼叫端必須是 Administrators 群組的成員,才能設定裝置介面屬性。

SetupDiSetClassPropertyEx 會對 property-data-type 標識符和屬性值強制執行需求。

若要取得代表遠端電腦上裝置類別所設定裝置屬性的裝置屬性,請呼叫 SetupDiGetClassPropertyKeysEx。

若要擷取本機電腦上的裝置類別屬性,請呼叫 SetupDiGetClassProperty, 並擷取遠端電腦上的裝置類別屬性,請呼叫 SetupDiGetClassPropertyEx。

若要在本機計算機上設定裝置類別屬性,請呼叫 SetupDiSetClassProperty。

規格需求

需求 值
最低支援的用戶端 適用於 Windows Vista 和更新版本的 Windows。
目標平台 桌面
標頭 setupapi.h (包括 Setupapi.h)
程式庫 Setupapi.lib

另請參閱

SetupDiGetClassProperty

SetupDiGetClassPropertyEx

SetupDiGetClassPropertyKeysEx

SetupDiSetClassProperty