IWbemHiPerfProvider::CreateRefreshableEnum メソッド (wbemprov.h)
IWbemHiPerfProvider::CreateRefreshableEnum メソッドは、新しい更新可能な列挙を作成します。 WMI Refresher は、 IWbemConfigureRefresher::AddEnum へのクライアント要求に応答してこのメソッドを呼び出します。 プロバイダーは、指定された IWbemHiPerfEnum オブジェクトを指定されたリフレッシャーに関連付けます。 指定されたリフレッシャーの Refresh メソッドを呼び出すたびに、プロバイダーは、列挙子に wszClass パラメーターにリストされているクラスのすべてのインスタンスのセットが含まれていること、およびこれらのインスタンスに更新された情報が含まれていることを確認します。 これを行う方法の 1 つは、更新可能な列挙子の配列をリフレッシャーに保持することです。
構文
HRESULT CreateRefreshableEnum(
[in] IWbemServices *pNamespace,
[in] LPCWSTR wszClass,
[in] IWbemRefresher *pRefresher,
[in] long lFlags,
[in] IWbemContext *pContext,
[in] IWbemHiPerfEnum *pHiPerfEnum,
[out] long *plId
);
パラメーター
[in] pNamespace
IWbemServices ポインターを Windows Management に戻します。これにより、プロバイダーによって行われた要求を処理できます。 pNamespace が実行中に Windows Management にコールバックする必要がある場合、プロバイダーはこのポインターで AddRef を呼び出します。
[in] wszClass
pHiPerfEnum パラメーターでインスタンスが更新される、クラスの名前を含む 16 ビット Unicode 文字の定数、null で終わる文字列。
[in] pRefresher
IWbemHiPerfProvider::CreateRefresher を呼び出して取得したリフレッシャーを含む IWbemRefresher オブジェクトへのポインター。
[in] lFlags
予約済み。 このパラメーターは 0 (ゼロ) である必要があります。
[in] pContext
通常 は NULL です。それ以外の場合は、1 つ以上の動的クラス プロバイダーに必要な IWbemContext オブジェクトへのポインター。 コンテキスト オブジェクトの値は、特定のプロバイダーのドキュメントで指定する必要があります。 このパラメーターの詳細については、「 WMI への呼び出しの作成」を参照してください。
[in] pHiPerfEnum
高パフォーマンス列挙を含む IWbemHiPerfEnum オブジェクトへのポインター。
[out] plId
更新可能な列挙を一意に識別するプロバイダーによって返される整数へのポインター。
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。 次の一覧は、 HRESULT に含まれる値の一覧です。
注釈
更新操作中を除き、プロバイダーは更新可能な列挙子を変更しないでください。 列挙は浅いので、列挙子に配置されるすべてのインスタンスは wszClass で指定されたクラスである必要があります。
WMI が所有者の IWbemRefresher::Refresh メソッドを呼び出さない限り、プロバイダーは列挙子にアクセスできません。 更新可能なオブジェクトと同様に、列挙子を所有するオブジェクトが列挙子を更新しない限り、プロバイダーは列挙子を更新しないでください。
例
次のコード例では、 CreateRefreshableEnum を実装する方法について説明します。
HRESULT CHiPerfProvider::CreateRefreshableEnum(
/* [in] */IWbemServices *pNamespace,
/* [in] */LPCWSTR wszClass,
/* [in] */IWbemRefresher *pRefresher,
/* [in] */long lFlags,
/* [in] */IWbemContext *pCtx,
/* [in] */IWbemHiPerfEnum *pEnum,
/* [out] */ long *plId
)
{
// Use a private interface defined
// to talk with the refresher.
IMyRefresher* pMyRefr = NULL;
HRESULT hres = pRefresher->QueryInterface(
IID_IMyRefresher,
(void**) &pMyRefr );
if ( SUCCEEDED( hres ) )
{
LPLONG plLastId;
// Generates a unique identifier
*plId = InterlockedIncrement( &plLastId );
// Use an internal method to add the
// enumerator to an array.
pMyRefr->AddEnum( wszClass, *plId, pEnum );
pMyRefr->Release();
}
return hres;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | wbemprov.h (Wbemidl.h を含む) |
Library | Wbemuuid.lib |
[DLL] | Wmiprvsd.dll |
こちらもご覧ください
インスタンス プロバイダーをハイパフォーマンス プロバイダーに変換する