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 を含む) |