プロバイダーの初期化
プロバイダーに対してコーディングする必要がある最初のタスクの 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 に設定します。 WMI は、WBEM_E_FAILED を返すプロバイダーを動作不能と見なします。
WMI は、WMI がプロバイダーのプライマリ インターフェイスへのポインターを取得した後、または初期化に失敗した後に、IWbemProviderInit ポインターを解放します。
関連トピック