プロバイダーに対してコーディングする必要がある最初のタスクの 1 つは初期化プロセスです。これは、WMI からの情報の送受信、マネージド オブジェクトの制御、およびその他のタスクの実行を可能にする、プロバイダーが実行する必要があるタスクを対象としています。 プロバイダーの種類ごとに、実行する必要がある異なる一連のタスクがあり、それに付随する一意のインターフェイスのセットがあります。
ただし、すべてのプロバイダーは IWbemProviderInit インターフェイスを使用して初期化し、 IWbemProviderInitSink インターフェイスを介して WMI に初期化状態を通知します。
次の手順では、プロバイダーを初期化する方法について説明します。
プロバイダーを初期化するには
プロバイダーの IWbemProviderInit::Initialize を実装します。
クライアントがプロバイダーのサービスを必要とすると WMI が判断すると、WMI は IWbemProviderInit::Initialize メソッドを呼び出してプロバイダーを読み込みます。
プロバイダーの種類に固有のインターフェイスを実装します。
IWbemProviderInitSink::SetStatus を呼び出して、プロバイダーの初期化が完了したことを WMI に通知します。
IWbemProviderInit::Initialize のすべての実装は、初期化状態を WMI に報告するために IWbemProviderInitSink::SetStatus を呼び出す必要があります。 SetStatus メソッドを使用すると、WMI はプロバイダーが要求を受信する準備ができているかどうか、およびプロバイダーが受信する準備ができている要求の種類を判断できます。
次の手順では、初期化が成功したことを報告する方法について説明します。
初期化が成功したことを報告するには
SetStatus の IStatus パラメーターをWBEM_S_INITIALIZEDに設定します。
WBEM_S_INITIALIZEDを返すことによって、プロバイダーは、アプリケーション、WMI、およびその他のプロバイダーからの要求を処理する準備を示します。 WBEM_S_INITIALIZEDを受信すると、WMI はプロバイダーの IWbemProviderInit::QueryInterface メソッドを呼び出します。 このクエリは、プロバイダーのプライマリ インターフェイスへのポインターを取得します。
次の手順では、初期化中にエラーを報告する方法について説明します。
初期化中にエラーを報告するには
SetStatus の IStatus パラメーターを WBEM_E_FAILED に設定します。 WBEM_E_FAILEDを返す WMI ビュー プロバイダーは機能しません。
WMI は、WMI がプロバイダーのプライマリ インターフェイスへのポインターを取得した後、または初期化に失敗した後に 、IWbemProviderInit ポインターを解放します。
関連トピック