Provider::EnumerateInstances 方法 (provider.h)

[Provider 类是 WMI 提供程序框架的一部分,现在视为处于最终状态,对于影响这些库的非安全性相关问题,将不会提供进一步的开发、增强或更新。 所有新开发均应使用 MI API。]

WMI 调用 EnumerateInstances 方法以检索框架提供程序的 类的所有实例。

语法

HRESULT EnumerateInstances(
  MethodContext *pMethodContext,
  long          lFlags
);

参数

pMethodContext

指向此调用的上下文对象的指针。 此值包含客户端指定的任何 IWbemContext 属性。 此外,此指针必须用作对 WMI 的任何调用的参数。

lFlags

标志的位掩码,其中包含有关 EnumerateInstances 操作的信息 。 这是客户端在 IWbemServices::CreateInstanceEnum 方法中指定的值。

以下标志由 (处理,并通过 WMI 筛选出) :

  • WBEM_FLAG_DEEP
  • WBEM_FLAG_SHALLOW
  • WBEM_FLAG_RETURN_IMMEDIATELY
  • WBEM_FLAG_FORWARD_ONLY
  • WBEM_FLAG_BIDIRECTIONAL
  • WBEM_FLAG_USE_AMENDED_QUALIFIERS

返回值

此方法的默认框架提供程序实现将 WBEM_E_PROVIDER_NOT_CAPABLE 返回到调用方法。 IWbemServices::CreateInstanceEnum 方法列出了最常见的返回值,但可以选择返回任何 COM 返回代码。

注解

EnumerateInstances 通过将零个 CInstance 实例实例化并将返回值设置为WBEM_S_NO_ERROR来返回零实例不是错误

当客户端应用程序调用 IWbemServices::CreateInstanceEnum 时,WMI 通常会调用 EnumerateInstances,尽管 WMI 在其他情况下也可能调用 EnumerateInstances。 下面是重写 EnumerateInstances 的常用方法:

  1. 使用 Provider::CreateNewInstance 创建类的空实例。
  2. 使用 CInstance 类的 Set 方法填充空实例的属性,例如 CInstance::SetByteCInstance::SetStringArray
  3. 使用 CInstance::Commit 将实例发送回客户端。
如果要生成仅方法提供程序并且没有任何实例,或者如果枚举类的实例会返回太多实例,则可以决定支持仅检索特定实例的查询。

要求

要求
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 provider.h (包括 FwCommon.h)
Library FrameDyn.lib
DLL FrameDynOS.dll;FrameDyn.dll