(wbemcli.h) IWbemServices 介面

用戶端和提供者會使用 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::D eleteInstance

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::P utClass

IWbemServices::P utClass 方法會建立新的類別或更新現有的類別。 pObject 參數指定的類別必須已以所有必要的屬性值正確初始化。
IWbemServices::P utClassAsync

IWbemServices::P utClassAsync 方法會建立新的類別,或更新現有的類別。
IWbemServices::P utInstance

IWbemServices::P utInstance 方法會建立或更新現有類別的實例。 執行個體是寫入到 WMI 存放庫。
IWbemServices::P utInstanceAsync

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