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 值,该值指定创建的函数实例是系统范围内可见还是仅对当前用户可见。

注意 函数实例存储在 HKEY_LOCAL_MACHINE 中,而不考虑 enumSystemVisibility 值。 用户必须具有管理员访问权限才能添加函数实例。
 

[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 方法。
 
新函数实例是能够在系统范围内可见还是仅对用户可见取决于提供程序。 注册表提供程序最初将其默认函数实例可见性设置为系统范围。

若要使用注册表提供程序 (管理员或 Power User 访问) 添加或删除函数实例,需要具有更改 HKEY_LOCAL_MACHINE\SYSTEM 注册表项的访问权限。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 functiondiscoveryapi.h
DLL FunDisc.dll

请参阅

IFunctionDiscovery