IWbemHiPerfProvider::CreateRefreshableEnum メソッド (wbemprov.h)

IWbemHiPerfProvider::CreateRefreshableEnum メソッドは、新しい更新可能な列挙を作成します。 WMI Refresher は、 IWbemConfigureRefresher::AddEnum へのクライアント要求に応答してこのメソッドを呼び出します。 プロバイダーは、指定された IWbemHiPerfEnum オブジェクトを指定されたリフレッシャーに関連付けます。 指定されたリフレッシャーの Refresh メソッドを呼び出すたびに、プロバイダーは、列挙子に wszClass パラメーターにリストされているクラスのすべてのインスタンスのセットが含まれていること、およびこれらのインスタンスに更新された情報が含まれていることを確認します。 これを行う方法の 1 つは、更新可能な列挙子の配列をリフレッシャーに保持することです。

メモ プロバイダーがこのメソッドを実装していない場合は、 WBEM_E_PROVIDER_NOT_CAPABLEを返す必要があります。
 

構文

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

こちらもご覧ください

WMI プロバイダーの開発

IWbemHiPerfProvider

インスタンス プロバイダーをハイパフォーマンス プロバイダーに変換する

パフォーマンス カウンタ プロバイダ

インスタンス プロバイダーの作成