勇芳软件工作室.汉化:  Windows Management Instrumentation > COM API for WMI > Interfaces >

IWbemServices

Previous pageReturn to chapter overviewNext page

客户端和提供商使用IWbemServices接口访问WMI服务。该接口由WMI和WMI提供商实现,是主要的WMI接口。

 

IWbemClassObject *pObj = NULL;

 

//The pWbemSvc pointer is of type IWbemServices*

pWbemSvc->GetObject(L"path", 0, 0, &pObj, 0);

 

方法

 

IWbemServices接口继承了IUnknown接口的方法。

 

此外,IWbemServices定义了以下方法。

 

方法

描述

OpenNamespace

打开特定的子命名空间进行操作。

CancelAsyncCall

取消当前正在执行的异步调用。

QueryObjectSink

允许呼叫者获取通知处理程序接收器。

GetObject

检索一个对象—一个实例或类定义。

GetObjectAsync

异步检索一个对象—一个实例或类定义。

PutClass

创建或更新类定义。

PutClassAsync

异步地创建或更新类定义。

DeleteClass

删除一个类。

DeleteClassAsync

删除一个类,并以异步方式接收确认。

CreateClassEnum

创建一个类枚举器。

CreateClassEnumAsync

创建一个异步执行的类枚举器。

PutInstance

创建或更新特定类的实例。

PutInstanceAsync

异步地创建或更新特定类的实例。

DeleteInstance

删除实例并异步提供确认。

CreateInstanceEnum

创建实例枚举器。

CreateInstanceEnumAsync

创建一个异步执行的实例枚举器。

ExecQuery

执行查询以检索类或实例。

ExecQueryAsync

执行查询以异步检索类或实例。

ExecNotificationQuery

执行查询以接收事件。

ExecNotificationQueryAsync

执行查询以异步接收事件。

ExecMethod

执行一个对象方法。

ExecMethodAsync

异步执行对象方法。

 

备注

 

实现IWbemServices接口的提供商必须遵循他们实现的每种方法的记录语义;提供者必须支持指定的错误返回码。WMI实现所有的方法,通常,每个提供者实现接口上可用功能的一小部分。提供者必须为其不实现的任何方法返回WBEM_E_PROVIDER_NOT_CAPABLE。

 

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

 

示例代码[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))

{

  hRes = pIWbemLocator->ConnectServer(

              L"root\\CIMV2",  // Namespace

              NULL,          // Userid

              NULL,           // PW

              NULL,           // Locale

              0,              // flags

              NULL,           // Authority

              NULL,           // Context

              &pWbemServices

              );

 

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

 

// Use pWbemServices

 

}

 

// Clean up

pWbemServices->Release();

 

要求

 

客户

需要Windows Vista,Windows XP,Windows 2000 Professional,Windows NT Workstation 4.0 SP4及更高版本,Windows Me,Windows 98或Windows 95。

服务器

需要Windows Server 2008,Windows Server 2003,Windows 2000 Server或Windows NT Server 4.0 SP4及更高版本。

在Wbemcli.inc中声明。

DLL

需要Fastprox.dll。

需要Esscli.dll。

需要Framedyn.dll。

需要Ntevt.dll。

需要Stdprov.dll。

需要Viewprov.dll。

需要Wbemcomn.dll。

需要Wbemcore.dll。

需要Wbemess.dll。

需要Wbemsvc.dll。

需要Wmipicmp.dll。

需要Wmidcprv.dll。

需要Wmipjobj.dll。

需要Wmiprvsd.dll。