共用方式為


實作類別提供者的主要介面

有兩種方式可以實作類別提供者:將介面實作為推送提供者或提取提供者。

本主題將討論下列各節:

實作 Push 類別提供者的主要介面

雖然所有提供者都會實作 IWbemProviderInit 進行初始化,而至少一個其他介面作為其主要介面,但推送提供者只會實作 IWbemProviderInit

請確定您的實作會執行下列工作:

  • 擷取適當的類別資料。
  • 將資料放在 WMI 存放庫中。
  • 刪除過時的資料。

完成初始化程式之後,WMI 會處理屬於推送提供者之類別的所有應用程式要求,而不需要任何進一步的提供者互動。 之後,推送提供者會有效地作為 WMI 的用戶端,而不是提供者。 如需實作 IWbemProviderInit的詳細資訊,請參閱 初始化提供者

注意

呼叫 WMI 以在推送提供者中建立、更新或移除資料時,請將lFlags參數設定為在所有IWbemServices方法呼叫中包含WBEM_FLAG_OWNER_UPDATE旗標。

 

實作提取類別提供者的主要介面

類別提取提供者應該實作 IWbemServices 作為主要介面。 IWbemServices介面支援資料擷取、資料更新、資料移除、列舉和查詢處理。 不過,因為應用程式和提供者也會使用 IWbemServices 來要求 WMI 的服務, 所以 IWbemServices 包含許多與類別提供者無關的方法。 您的實作必須分別透過 GetObjectAsyncCreateClassEnumAsync 方法來支援類別擷取和列舉。 下表列出您可以為類別提供者實作的其他非同步 IWbemServices 方法。

方法 功能
PutInstanceAsync 修改
DeleteClassAsync 刪除

 

注意

由於對接收的回呼可能不會在用戶端所需的相同驗證層級傳回,因此建議您使用半同步而非非同步通訊。 如需詳細資訊,請參閱 呼叫方法

 

您的類別提供者應該提供存根實作,以針對不支援功能集的其他所有IWbemServices方法傳回WBEM_E_PROVIDER_NOT_CAPABLE。 具體而言,WMI 不支援類別提供者的查詢處理。 因此,類別提供者必須從IWbemServices::ExecQueryAsync的實作傳回WBEM_E_PROVIDER_NOT_CAPABLE、將其QuerySupportLevels註冊屬性設定為Null或兩者。

類別提供者實作的介面與執行個體提供者和方法提供者的介面非常類似。 事實上,單一提供者可以實作所有方法並正確註冊,作為這三種類型的提供者。