CIM イベントは、ライフサイクルまたはプロセスとして分類できます。「ライフサイクルイベント」は、データの変更に対応して発生する組み込みの CIM イベントであり、その内部で、クラスの作成、変更、削除、クラスインスタンスの作成、変更削除、読み取り、またはメソッド呼び出しが行われます。「プロセスイベント」は、ライフサイクルイベントに含まれないユーザー定義のイベントです。
イベントプロバイダは、CIM Object Manager により作成された要求に応答してインジケーションを生成します。CIM Object Manager は予約要求を分析し、 EventProvider や CIMIndicationProvider インタフェース、あるいはその両方を使用してプロバイダと通信し、適切なインジケーションの生成を要求します。プロバイダがインジケーションを生成すると、CIM Object Manager は CIM_IndicationHandler インスタンスにより指定された宛先にインジケーションを配信します。これらのインスタンスは、予約者により作成されます。
イベントプロバイダは、インスタンスプロバイダと同じ方法で検出されます。インスタンスのライフサイクルインジケーション (CIM_InstIndication のサブクラス) に属する予約の場合、CIM Object Manager が予約の有効範囲内のクラスを判別すると、これらのクラスのインスタンスプロバイダに対し通信を行います。プロセスインジケーションの場合、CIM Object Manager は Provider 修飾子を使用して、適切なプロバイダと通信を行います。
CIM Object Manager および CIM Object Manager Repository は、次の条件下でインジケーションを処理します。
プロバイダがインジケーションをサポートしないか、CIM Object Manager にポーリングを指示した場合、CIM Object Manager は、CIM_InstMethodCall、 CIM_InstModification、CIM_InstDeletion、および CIM_InstCreation イベントを処理する
CIM Object Manager Repository は、プロバイダを保持しないクラスインジケーションおよびライフサイクルインジケーションをすべて処理する。これらのクラスには、CIM_ClassCreation、CIM_ClassDeletion、 CIM_ClassModification、CIM_InstCreation、 CIM_InstModification、CIM_InstDeletion、および CIM_InstRead が含まれる
上記の場合、プロバイダはインジケーションを生成しないか、EventProvider インタフェースを実装します。また、プロバイダは、イベントの生成機能を CIM Object Manager に委託することもできます。CIM Object Manager は、プロバイダに対して enumerateInstances を呼び出して、以前の状態のスナップショットを現在の状態と比較し、インスタンスが作成、変更、または削除されたかどうかを判断します。
ポーリングを使用すると大幅なオーバーヘッドが発生するため、ほとんどの場合、プロバイダが独自のインジケーションを処理する必要があります。インジケーションを生成する場合、プロバイダ自体がポーリングを行う必要があります。このとき、プロバイダはタスクを CIM Object Manager に委託できます。
プロバイダが EventProvider インタフェースを実装する場合、CIM Object Manager はインタフェース内のメソッドを呼び出し、その応答に応じて操作を実行します。特定のプロバイダが予約要求に参加する必要があると CIM Object Manager が判断すると、次の順序でメソッドが呼び出されます。
mustPoll - CIM_InstCreation、CIM_InstDeletion、および CIM_InstModification に対応して CIM Object Manager により呼び出され、CIM Object Manager によるポーリングをプロバイダが望んでいるかどうかを判断します。プロバイダが EventProvider インタフェースを実装していない場合、CIM Object Manager はデフォルトでポーリングを実行するとみなします。
authorizeFilter - プロバイダが Authorizable インタフェースを実装する場合、CIM Object Manager によりこのメソッドが呼び出され、予約が承認されるかどうかを判断します。プロバイダは、インジケーションハンドラの所有者のユーザー ID (インジケーションを受信するユーザー)、または予約を作成したユーザーに基づいて、決定を行います。
プロバイダが Authorizable インタフェースを実装しない場合、CIM Object Manager は、名前空間に対してデフォルトの読み取り承認検査を実行します。
プロバイダが EventProvider インタフェースを実装せず、CIM Object Manager がポーリングを試みる場合、プロバイダに対する enumerateInstances が正常終了すると、承認が正しく行われます。
activateFilter - 承認が正しく行われ、プロバイダがポーリングを要求しない場合に、CIM Object Manager により呼び出されます。
deActivateFilter - 予約が予約者または CIM Object Manager により削除される場合 (宛先ハンドラが正常に機能しない場合など) に呼び出されます 。