IWbemHifProvider::CreateRefreshableEnum 方法 (wbemprov.h)
IWbemHiPerfProvider::CreateRefreshableEnum 方法创建新的可刷新枚举。 WMI 刷新程序调用此方法以响应客户端对 IWbemConfigureRefresher::AddEnum 的请求。 提供程序将提供的 IWbemHiPerfEnum 对象与提供的刷新程序相关联。 每次调用提供的刷新程序的 Refresh 方法时,提供程序都会确保枚举器包含 wszClass 参数中列出的类的所有实例的一组,并且这些实例包含更新的信息。 执行此操作的一种可能方法是在刷新器中保留可刷新枚举器的数组。
语法
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 |
另请参阅
将实例提供程序转换为高性能提供程序