イベント コンシューマー プロバイダーの作成

イベント コンシューマー プロバイダーとは、どの永続的イベント コンシューマーが特定のイベントを処理するかを決定する、永続的コンシューマー アーキテクチャのコンポーネントです。 WMI から適切にイベントをルーティングするために、イベント コンシューマー プロバイダーを永続的なイベント コンシューマーと共に作成する必要があります。

イベント コンシューマー プロバイダーは、イベント プロバイダーをコンシューマー クラスの一覧とリンクします。 これらのコンシューマー クラスのインスタンスが、そのプロバイダーからイベントを受け取ります。 WMI はどのコンシューマー プロバイダーにイベントが配信されるかを、コンシューマー プロバイダー __Win32Provider インスタンスを論理コンシューマー クラスに関連付ける __EventConsumerProviderRegistration インスタンスに基づいて、特定します。 ユーザーは、永続的なサブスクリプションの一部として、コンシューマー クラスのインスタンスを作成します。 イベントが発生したときにイベント プロバイダーが実行されていない場合、WMI はイベントを配信する必要があるときにプロバイダーを起動します。

次の手順では、イベント コンシューマー プロバイダーを実装する方法について説明します。

イベント コンシューマー プロバイダーを実装するには

  1. コンシューマー クラスをマネージド オブジェクト フォーマット (MOF) で設計し、WMI に登録します。 詳細については、Managed Object Format (MOF) クラスの設計に関するページを参照してください。

    クラス プロバイダーは、__Win32Provider インスタンスと __EventConsumerProviderRegistration クラスを作成して WMI に登録します。 詳細については、「イベント コンシューマー プロバイダーの登録」を参照してください。

  2. IWbemProviderInit インターフェイスをプロバイダーに実装します。

    WMI では IWbemProviderInit を使用してプロバイダーを読み込んで初期化します。 詳細については、「プロバイダーの初期化」を参照してください。

    注意

    イベント コンシューマー プロバイダーがマルチスレッド モデル "両方" を使用することを強くお勧めします。

     

  3. IWbemEventConsumerProvider インターフェイスをプロバイダーに実装します。

    IWbemEventConsumerProvider インターフェイスは、イベント コンシューマー プロバイダーのプライマリ インターフェイスです。

  4. WMI からイベント メッセージを受け取る 1 つ以上の物理コンシューマーを指定します。

    物理コンシューマーとは、永続的イベント コンシューマーを表す COM オブジェクトです。 すべての物理コンシューマーが IWbemUnboundObjectSink インターフェイスを実装しなければなりません。 詳細については、「物理コンシューマーの実装」を参照してください。