IWbemServices 接口 (wbemcli.h)

客户端和提供程序使用 IWbemServices 接口访问 WMI 服务。 接口由 WMI 和 WMI 提供程序实现,是主 WMI 接口。

    IWbemClassObject *pObj = NULL;

    // The pWbemSvc pointer is of type IWbemServices*
    // BSTR is not compatible with wchar_t, need to allocate.
    BSTR path = SysAllocString(L"path");
    pWbemSvc->GetObject(path, 0, 0, &pObj, 0);
    SysFreeString(path);

继承

IWbemServices 接口继承自 IUnknown 接口。 IWbemServices 还具有以下类型的成员:

方法

IWbemServices 接口具有这些方法。

 
IWbemServices::CancelAsyncCall

IWbemServices::CancelAsyncCall 方法根据最初传递给异步方法的 IWbemObjectSink 指针取消任何当前挂起的异步调用。
IWbemServices::CreateClassEnum

IWbemServices::CreateClassEnum 方法返回满足选择条件的所有类的枚举器。
IWbemServices::CreateClassEnumAsync

IWbemServices::CreateClassEnumAsync 方法返回类提供程序支持的所有类的枚举。
IWbemServices::CreateInstanceEnum

IWbemServices::CreateInstanceEnum 方法创建一个枚举器,该枚举器根据用户指定的选择条件返回指定类的实例。
IWbemServices::CreateInstanceEnumAsync

IWbemServices::CreateInstanceEnumAsync 方法创建一个枚举器,该枚举器根据用户指定的选择条件异步返回指定类的实例。
IWbemServices::D eleteClass

IWbemServices::D eleteClass 方法从当前命名空间中删除指定的类。
IWbemServices::D eleteClassAsync

IWbemServices::D eleteClassAsync 方法从当前命名空间中删除指定的类。
IWbemServices::DeleteInstance

IWbemServices::D eleteInstance 方法删除当前命名空间中现有类的实例。
IWbemServices::D eleteInstanceAsync

IWbemServices::D eleteInstanceAsync 方法异步删除当前命名空间中现有类的实例。 操作的确认或失败通过调用方实现的 IWbemObjectSink 接口报告。
IWbemServices::ExecMethod

执行 CIM 对象导出的方法。
IWbemServices::ExecMethodAsync

异步执行 CIM 对象导出的方法。
IWbemServices::ExecNotificationQuery

IWbemServices::ExecNotificationQuery 方法执行查询以接收事件。 调用会立即返回,用户可以轮询返回的枚举器,以便在事件到达时轮询这些事件。 释放返回的枚举器将取消查询。
IWbemServices::ExecNotificationQueryAsync

IWbemServices::ExecNotificationQueryAsync 方法执行与 IWbemServices::ExecNotificationQuery 相同的任务,只不过事件将提供给指定的响应处理程序,直到调用 CancelAsyncCall 以停止事件通知。
IWbemServices::ExecQuery

IWbemServices::ExecQuery 方法执行查询以检索对象。
IWbemServices::ExecQueryAsync

IWbemServices::ExecQueryAsync 方法执行查询以异步方式检索对象。
IWbemServices::GetObject

IWbemServices::GetObject 方法检索类或实例。 此方法仅从与当前 IWbemServices 对象关联的命名空间检索对象。
IWbemServices::GetObjectAsync

IWbemServices::GetObjectAsync 方法根据其路径检索对象(类定义或实例)。
IWbemServices::OpenNamespace

IWbemServices::OpenNamespace 方法为调用方提供了一个新的 IWbemServices 指针,该指针具有指定的子命名空间作为其操作上下文。
IWbemServices::PutClass

IWbemServices::P utClass 方法创建新类或更新现有类。 pObject 参数指定的类必须已使用所有必需的属性值正确初始化。
IWbemServices::PutClassAsync

IWbemServices::P utClassAsync 方法创建新类或更新现有类。
IWbemServices::PutInstance

IWbemServices::P utInstance 方法创建或更新现有类的实例。 将该实例写入 WMI 存储库。
IWbemServices::PutInstanceAsync

IWbemServices::P utInstanceAsync 方法异步创建或更新现有类的实例。 更新确认或错误报告通过调用方实现的 IWbemObjectSink 接口提供。
IWbemServices::QueryObjectSink

IWbemServices::QueryObjectSink 方法允许调用方获取由 Windows 管理导出的通知处理程序。

注解

实现 IWbemServices 接口的 提供程序必须遵循其实现的每个方法的文档语义;和 提供程序必须支持指定的错误返回代码。 WMI 实现所有方法,通常每个提供程序在接口上实现一小部分可用功能。 提供程序必须为它们未实现的任何方法返回WBEM_E_PROVIDER_NOT_CAPABLE。

在调用接口方法之前,任何 IWbemServices 方法中的所有出站接口指针都应初始化为 NULL 。 例如,调用 IWbemServices::GetObject 方法会返回一个 IWbemClassObject 接口指针,该指针应在调用 IWbemServices::GetObject 方法之前预先初始化为 NULL

示例

有关使用 IWbemServices 的多个 C++ 示例,请参阅 WMI C++ 应用程序示例 部分。

下面的代码示例演示提供程序如何获取 IWbemServices 指针。 代码需要以下 #include 语句和引用才能编译。

#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
IWbemLocator *pIWbemLocator = NULL;

HRESULT hRes = CoCreateInstance (
            CLSID_WbemAdministrativeLocator,
            NULL ,
            CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER , 
            IID_IUnknown ,
            ( void ** ) &pIWbemLocator
            ) ;

IWbemServices *pWbemServices = NULL;

if (SUCCEEDED(hRes))
{
    BSTR namespace = SysAllocString(L"root\\CIMV2");
    hRes = pIWbemLocator->ConnectServer(
                namespace,      // Namespace
                NULL,           // Userid
                NULL,           // PW
                NULL,           // Locale
                0,              // flags
                NULL,           // Authority
                NULL,           // Context
                &pWbemServices
                );
    SysFreeString(namespace);            

    pIWbemLocator->Release(); // Free memory resources.

    // Use pWbemServices

}

// Clean up
pWbemServices->Release();

要求

要求
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 wbemcli.h (包括 Wbemidl.h)

另请参阅

适用于 WMI 的 COM API

创建 WMI 提供程序

操作类和实例信息

通过编写提供程序向 WMI 提供数据