IWbemHifProvider::CreateRefreshableEnum 方法 (wbemprov.h)

IWbemHiPerfProvider::CreateRefreshableEnum 方法创建新的可刷新枚举。 WMI 刷新程序调用此方法以响应客户端对 IWbemConfigureRefresher::AddEnum 的请求。 提供程序将提供的 IWbemHiPerfEnum 对象与提供的刷新程序相关联。 每次调用提供的刷新程序的 Refresh 方法时,提供程序都会确保枚举器包含 wszClass 参数中列出的类的所有实例的一组,并且这些实例包含更新的信息。 执行此操作的一种可能方法是在刷新器中保留可刷新枚举器的数组。

注意 如果提供程序未实现此方法,则必须返回 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 管理,它可以为提供程序发出的任何请求提供服务。 如果 pNamespace 在执行过程中必须回调用 Windows Management,则提供程序会在此指针上调用 AddRef

[in] wszClass

包含类名称的 16 位 Unicode 字符的 常量、以 null 结尾的字符串,其实例在 pHiPerfEnum 参数中刷新。

[in] pRefresher

指向 IWbemRefresher 对象的指针,该对象包含通过调用 IWbemHiPerfProvider::CreateRefresher 获取的刷新器。

[in] lFlags

保留。 此参数必须为 0 (零) 。

[in] pContext

通常 为 NULL;否则,一个或多个动态类提供程序所需的 指向 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

将实例提供程序转换为高性能提供程序

性能计数器提供程序

编写实例提供程序