次の方法で共有


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
enumSystemVisibilitypszCategory、または pszCategoryIdentity の値が無効です。
E_OUTOFMEMORY
メソッドは、この操作を実行するために必要なメモリを割り当てることができません。
E_ACCESSDENIED
ユーザーは、要求されたアクションを実行するためのアクセス許可が不十分です。
E_FAIL
プロバイダーでは、 AddInstance メソッドを使用した関数インスタンスの直接追加はサポートされていません。
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
0x80070002
pszCategory または pszSubCategory の値が不明です。
STRSAFE_E_INVALID_PARAMETER
無効なパラメーターが指定されました。 pszSubCategory 文字列の長さがMAX_PATHを超えると、このエラーが返されます。

解説

このメソッドは、指定したカテゴリとサブカテゴリの新しい関数インスタンスを一時的に作成します。 カテゴリを実装するプロバイダーは、 IFunctionDiscoveryProviderFactory::CreateInstance メソッドを使用して、新しく作成された関数インスタンスに関連付けられているメタデータを保持します。

関連付けられたプロパティ ストアに値がない場合、関数インスタンスはレジストリに書き込まれません。 プロパティ ストアの値をチェックするには、IFunctionInstance::OpenPropertyStore メソッドを使用します。

指定したカテゴリとサブカテゴリの関数インスタンスが既に存在する場合は、既存のレジストリ エントリが上書きされます。 AddInstance メソッドは、S_OKを返します。 Function Discovery 変更通知プロセスは、enumQueryUpdateActionQUA_CHANGEに設定して、呼び出し元のアプリケーションの IFunctionDiscoveryNotification::OnUpdate メソッドを呼び出します。

メモIFunctionDiscoveryNotification::OnUpdate メソッドは、現在のプロバイダーではサポートされていません。
 
新しい関数インスタンスがシステム全体で表示できるか、ユーザーにのみ表示できるかは、プロバイダーによって異なります。 レジストリ プロバイダーは、最初に既定の関数インスタンスの可視性をシステム全体に設定します。

レジストリ プロバイダー (管理者または Power User アクセス) を使用して関数インスタンスを追加または削除するには、レジストリ キー HKEY_LOCAL_MACHINE\SYSTEM 変更するためのアクセス許可が必要です。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー functiondiscoveryapi.h
[DLL] FunDisc.dll

関連項目

IFunctionDiscovery