共用方式為


實作事件提供者的主要介面

事件提供者必須實作 IWbemEventProvider 介面,才能產生事件通知。 WMI 會呼叫提供者的 IWbemEventProvider::P rovideEvents 方法,並傳入接收物件的指標,這是 IWbemObjectSink 介面的實作。 當事件提供者準備好產生通知時,提供者會呼叫 IWbemObjectSink::Indicate 方法。

事件提供者應該將透過 IWbemEventProvider 產生的通知放在事件物件中。 您應該實作事件物件做為由 Indicate方法之 ppObjArray參數所表示之IWbemClassObject介面陣列中的專案。 因為 IWbemClassObjects 是 COM 物件,所以提供者必須藉由呼叫 IWbemObjectSink::AddRef 方法來遞增接收的參考計數。 必須提供許多通知的事件提供者 (例如,400 個事件) 應該藉由繁衍新的實例或複製現有實例,為每個通知建立唯一的事件物件。 WMI 絕不會保留到超過 指示 呼叫完成的事件物件上,而且在 COM 標準以上和之後沒有 AddRef 的特殊需求。

實作事件提供者時,請考慮下列指導方針:

  • 在維護用戶端呼叫時,請勿進行任何類別變更。

  • 請勿發出任何與事件相關的呼叫,例如修改事件篩選的呼叫。

  • 在重新參考事件之前,處理 Windows 管理服務所發出的任何要求,例如 CancelQuery

    如果您未處理要求,則重新參考事件可能會阻止事件被接受。

  • 絕對不要從提供者內呼叫 IWbemObjectSink::SetStatus