撰寫事件提供者
事件提供者是一個 COM 物件,可提供 WMI 內建和外部事件的通知。 內建事件會向 WMI 報告內部資料變更,而外部事件則報告內部事件未描述的使用者定義事件。 例如,回應變更、建立或刪除 Win32_LogicalDisk 類別的事件會分類為內建事件。 根據修改、建立或刪除現有 WMI 物件以外的專案所產生的事件是外在事件。 不論支援類別為何,您都可以以相同方式實作所有事件提供者。
下列程式描述如何實作事件提供者。
實作事件提供者
使用 WMI 設計出並註冊您的類別提供程式。
類別提供者會藉由建立 __Win32Provider 實例和 __EventProviderRegistration 類別,向WMI 註冊。 如需詳細資訊,請參閱 註冊事件提供者。
為您的提供者實作 IWbemProviderInit 介面。
IWbemProviderInit 介面是 WMI 用來載入和初始化所有提供者的通用介面。 如需詳細資訊,請參閱 供應商初始設定。
實作 IWbemEventProvider 作為提供者的主要介面。
IWbemEventProvider 介面會使用 ProviderEvents 方法,將事件提供給 WMI。 如需詳細資訊,請參閱 實作事件提供者的主要介面。
注意
事件提供者必須使用多線程模型 「Both」。
或者,您也可以實作 IWbemEventProviderQuerySink 介面,以提高事件提供者的效能。
IWbemEventProviderQuerySink 介面可讓提供者在傳送回應至 WMI 之前優化查詢,而且對於提供多個類型事件且需要盡可能執行許多內部優化之事件的提供者而言最有用。 如需詳細資訊,請參閱 優化事件提供者。
實作 IWbemEventProviderSecurity 介面,將取用者限制為特定安全性標識符(SID),或實作 IWbemEventSink::SetSinkSecurity 來保護接收器本身。 提供者也可以設定事件類別中的 SECURITY_DESCRIPTOR 屬性,以保護MOF程式代碼中的個別事件。 如需詳細資訊,請參閱 保護 WMI 事件。
新增提供者所需的任何額外程式碼。
設計提供者時,您最可能需要呼叫 WMI 介面。 如需詳細資訊,請參閱 呼叫 方法。
擷取客戶端的資訊時,您可能需要存取該客戶端的安全性層級。 如需詳細資訊,請參閱 模擬用戶端。
以新的程式碼取代預先存在的提供者。
如果您沒有預先存在的提供者可複製,則不需要執行此步驟。 如需詳細資訊,請參閱 更新提供者。
用戶端應用程式可以藉由向 WMI 註冊為事件取用者來要求事件。 如需詳細資訊,請參閱 接收 WMI 事件。