(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) |