IWbemHiPerfProvider::CreateRefreshableObject メソッド (wbemprov.h)
IWbemHiPerfProvider::CreateRefreshableObject メソッドは、更新可能なインスタンス オブジェクトを要求します。 WMI Refresher は、IWbemConfigureRefresher::AddObjectByPath インターフェイスまたは IWbemConfigureRefresher::AddObjectByTemplate インターフェイスへのクライアント要求に応答して、IWbemHiPerfProvider::CreateRefreshableObject を呼び出します。 プロバイダーは、指定されたテンプレート オブジェクトからキーを読み取り、pRefresher の refresh メソッドが呼び出されるたびに更新される ppRefreshable パラメーターに オブジェクトを提供します。 プロバイダーは、 IWbemHiPerfProvider::CreateRefresher の以前の呼び出しから取得した、更新可能なオブジェクトを指定されたリフレッシャーに関連付けます。
構文
HRESULT CreateRefreshableObject(
[in] IWbemServices *pNamespace,
[in] IWbemObjectAccess *pTemplate,
[in] IWbemRefresher *pRefresher,
[in] long lFlags,
[in] IWbemContext *pContext,
[out] IWbemObjectAccess **ppRefreshable,
[out] long *plId
);
パラメーター
[in] pNamespace
IWbemServices ポインターを Windows Management に戻します。このポインターは、プロバイダーによって行われた要求にサービスを提供できます。 ポインターの実行中にポインターが WMI にコールバックする必要がある場合、プロバイダーはその上で AddRef を呼び出します。
[in] pTemplate
テンプレートを含む IWbemObjectAccess オブジェクトへのポインター。
[in] pRefresher
IWbemHiPerfProvider::CreateRefresher を呼び出して取得したリフレッシャーを含む IWbemRefresher オブジェクトへのポインター。
[in] lFlags
予約済み。 このパラメーターは、0 にする必要があります。
[in] pContext
通常 は NULL です。それ以外の場合は、1 つ以上の動的クラス プロバイダーに必要な IWbemContext オブジェクトへのポインター。 コンテキスト オブジェクトの値は、特定のプロバイダー ドキュメントで指定する必要があります。 このパラメーターの詳細については、「 WMI への呼び出しの作成」を参照してください。
[out] ppRefreshable
更新可能なオブジェクトを含む IWbemObjectAccess オブジェクトへの参照を保持するポインター。
[out] plId
この更新可能なオブジェクトを一意に識別するプロバイダーによって返される整数へのポインター。
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。 次の一覧は、 HRESULT 内に含まれる値の一覧です。
注釈
指定されたインスタンス テンプレートには、キー プロパティが入力されたオブジェクトが含まれます。返されるオブジェクトは、一意の更新可能なオブジェクトである必要があります。 更新操作中を除き、プロバイダーは更新可能なオブジェクトに触れてはなりません。 リフレッシャーを所有するオブジェクトがオブジェクトを復元しない限り、プロバイダーは返されたオブジェクトにアクセスできません。 指定されたインスタンス テンプレートのキー プロパティが入力されます。プロバイダーは、インスタンス パスも検証する必要があります。
例
次のコード例では、 CreateRefreshableObject を実装する方法について説明します。
HRESULT CMyHiPerfProvider::CreateRefreshableObject(
/* [in] */IWbemServices *pNamespace,
/* [in] */IWbemObjectAccess *pTemplate,
/* [in] */IWbemRefresher *pRefresher,
/* [in] */long lFlags,
/* [in] */IWbemContext *pCtx,
/* [out] */IWbemObjectAccess **ppRefreshable,
/* [out] */ long *plId
)
{
// Use a private interface defined
// to talk with the refresher. You must define
// the IMyRefresher interface.
IMyRefresher* pMyRefr = NULL;
HRESULT hres = pRefresher->QueryInterface(
IID_IMyRefresher,
(void**) &pMyRefr );
if ( SUCCEEDED( hres ) )
{
// Check for a valid instance.
// You must implement the ValidateInst function.
if ( ValidateInst( pTemplate ) )
{
IWbemClassObject* pTemplateObj = NULL;
IWbemClassObject* pCloneObj = NULL;
IWbemObjectAccess* pCloneAcc = NULL;
// Clone the object, then get an
// IWbemObjectAccess pointer.
pTemplate->QueryInterface(
IID_IWbemClassObject,
(void**) &pTemplateObj );
pTemplateObj->Clone( &pCloneObj );
pCloneObj->QueryInterface(
IID_IWbemObjectAccess,
(void**) &pCloneAcc );
// Generate a unique identifier.
// For example, use:
/**plId = InterlockedIncrement( &m_lLastId );*/
// Add the object to an array of
// objects to refresh.
//For example, use:
/*pMyRefr->AddInstance( *plId, pCloneAcc );*/
// Maintains AddRef from QI
*ppRefreshable = pCloneAcc;
pTemplateObj->Release();
pCloneObj->Release();
}
else
{
hres = WBEM_E_NOT_FOUND;
}
pMyRefr->Release();
}
return hres;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | wbemprov.h (Wbemidl.h を含む) |
Library | Wbemuuid.lib |
[DLL] | Wmiprvsd.dll |
こちらもご覧ください
インスタンス プロバイダーをハイパフォーマンス プロバイダーに変換する