共用方式為


IFunctionDiscovery::AddInstance 方法 (functiondiscoveryapi.h)

[函式探索可用於需求一節中指定的作業系統。 後續版本可能會變更或無法使用。]

建立或修改函式實例。

語法

HRESULT AddInstance(
  [in]  SystemVisibilityFlags enumSystemVisibility,
  [in]  const WCHAR           *pszCategory,
  [in]  const WCHAR           *pszSubCategory,
  [in]  const WCHAR           *pszCategoryIdentity,
  [out] IFunctionInstance     **ppIFunctionInstance
);

參數

[in] enumSystemVisibility

SystemVisibilityFlags值,指定所建立的函式實例是可見的系統範圍,還是只對目前使用者顯示。

注意 不論 enumSystemVisibility 值為何,函式實例都會儲存在HKEY_LOCAL_MACHINE中。 使用者必須具有系統管理員存取權,才能新增函式實例。
 

[in] pszCategory

已建立之函式實例的類別。 請參閱 類別定義

[in] pszSubCategory

所建立函式實例的子類別。 請參閱 子類別定義。 此字串的最大長度是MAX_PATH。

[in] pszCategoryIdentity

提供者實例識別碼字串。 此字串會從 GetProviderInstanceID傳回。

[out] ppIFunctionInstance

接收函式實例之 IFunctionInstance 介面指標的指標。

傳回值

可能的傳回值包括但不限於下列各項。

傳回碼/值 描述
S_OK
已成功完成命令。
E_INVALIDARG
enumSystemVisibilitypszCategorypszCategoryIdentity的值無效。
E_OUTOFMEMORY
方法無法配置執行這項作業所需的記憶體。
E_ACCESSDENIED
使用者沒有足夠的存取權限可執行要求的動作。
E_FAIL
提供者不支援使用 AddInstance 方法直接新增函式實例。
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
0x80070002
pszCategorypszSubCategory的值未知。
STRSAFE_E_INVALID_PARAMETER
指定了不正確參數。 當 pszSubCategory 字串的長度超過 MAX_PATH 時,就會傳回此錯誤。

備註

這個方法會暫時為指定的類別和子類別建立新的函式實例。 實作類別的提供者會負責使用 IFunctionDiscoveryProviderFactory::CreateInstance 方法保存與新建立之函式實例相關聯的中繼資料。

如果函式實例的關聯屬性存放區沒有任何值,則函式實例不會寫入登錄。 使用 IFunctionInstance::OpenPropertyStore 方法來檢查屬性存放區值。

如果指定的類別和子類別已經存在函式實例,則會覆寫現有的登錄專案。 AddInstance方法會傳回S_OK。 函式探索變更通知程式會叫用呼叫應用程式的 IFunctionDiscoveryNotification::OnUpdate 方法,並將 enumQueryUpdateAction 設定為 QUA_CHANGE

注意 目前提供者不支援 IFunctionDiscoveryNotification::OnUpdate 方法。
 
不論新的函式實例是否能夠全系統可見,還是只提供給使用者,都取決於提供者。 登錄提供者一開始會將其預設函式實例可見度設定為全系統。

需要變更 HKEY_LOCAL_MACHINE\SYSTEM 登錄機碼的存取權限,才能使用登錄提供者新增或移除函式實例, (系統管理員或 Power User 存取) 。

需求

   
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 functiondiscoveryapi.h
Dll FunDisc.dll

另請參閱

IFunctionDiscovery