共用方式為


優化事件提供者

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

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

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

注意

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