共用方式為


優化事件提供者

事件提供者可能會投入大量時間來建立事件。 如果沒有用戶端應用程式使用已建立的事件,提供者就會浪費系統資源。 此外,WMI 會花費相當大量的資源剖析,並將複雜的查詢傳送給適當的提供者。 若要避免浪費系統資源並改善事件提供者的效能,您可以實作 IWbemEventProviderQuerySink 介面。 IWbemEventProviderQuerySink 會使用 NewQueryCancelQuery 方法監視用戶端應用程式向 WMI 註冊的查詢。 藉由監視已註冊的用戶端查詢,您的提供者可以判斷是否必須傳送任何訊息給 WMI。

當用戶端取用者註冊包含該事件提供者所支援之事件的參考的事件篩選查詢時,WMI 會在事件提供者上呼叫 NewQuery 。 因此,可以設定負責 EmailClass 類別實例修改事件的事件提供者,只針對 寄件者產生通知。 當提供者收到要求 主旨 屬性變更通知的查詢時,提供者就可以開始產生這些通知。 在此案例中,不需要 WMI 才能捨棄報告 收件者 變更的通知。

同樣地,當用戶端取用者取消註冊包含事件提供者所支援事件參考的事件篩選查詢時,WMI 會在事件提供者上呼叫 CancelQueryCancelQuery的目的是讓事件提供者更新應傳送的事件清單。

注意

如果您的提供者同時支援 IWbemEventProviderIWbemEventProviderQuerySink,請確定您的 IUnknown::QueryInterface 方法實作會傳回這兩個介面的指標。