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 メソッドは、イベント通知を停止するために CancelAsyncCall が呼び出されるまで、指定された応答ハンドラーにイベントが提供されることを除き、IWbemServices::ExecNotificationQuery と同じタスクを実行します。
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 Management によってエクスポートされる通知ハンドラーを取得できます。

注釈

IWbemServices インターフェイスを実装するプロバイダーは、実装する各メソッドの文書化されたセマンティクスに従う必要があります。プロバイダーは、指定されたエラー リターン コードをサポートする必要があります。 WMI は、すべてのメソッドを実装します。通常、各プロバイダーはインターフェイスで使用可能な機能の小さなサブセットを実装します。 プロバイダーは、実装していないメソッドのWBEM_E_PROVIDER_NOT_CAPABLEを返す必要があります。

IWbemServices メソッドのすべての送信インターフェイス ポインターは、インターフェイス メソッドを呼び出す前に NULL に初期化する必要があります。 たとえば、 IWbemServices::GetObject メソッドを呼び出すと 、IWbemServices::GetObject メソッド呼び出しの前に NULL に事前初期化する必要がある IWbemClassObject インターフェイス ポインターが返されます。

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 にデータを提供する