判斷推送或提取狀態

您可以將類別提供者模型化為推送或提取提供者,以指定提供者預期如何與 WMI 互動。 提取提供者會從 WMI 接收要求,並藉由動態產生資料或從本機快取擷取它來滿足要求。 提取提供者也必須實作大量的介面。

提取提供者會動態產生類別定義。 一般而言,提取提供者所管理的資料經常變更,要求提供者動態產生類別,或在應用程式發出要求時從本機快取擷取類別。 提取提供者必須實作自己的資料擷取、快取和事件通知機制。 因為大部分的提供者都是提取提供者,所以此檔案中的檔假設您要建置提取提供者,除非另有明確說明。

相反地,WMI 會使用 WMI 存放庫中的資料來處理推送提供者的所有應用程式要求。 推送提供者也會使用較少的介面方法,因此更容易實作。 推送提供者會使用 WMI 存放庫做為受控物件資訊的儲存區域,並只在初始化期間更新該資訊。 例如,Microsoft Windows 軟體發展工具組 (SDK) 的 WMI 區段中所包含的 WDM 類別提供者會模型化為推送提供者。

藉由使用 WMI 存放庫作為儲存區域,推送提供者會透過提取提供者獲得下列優點:

  • 提供者不需要實作本機快取來儲存資料。
  • 提供者不需要支援資料擷取;相反地,提供者可以依賴 WMI 來提供擷取支援。
  • 當應用程式要求提供者提供的資料時,WMI 會滿足該要求。
  • 提供者也可以依賴 WMI 來支援事件通知。

不過,因為推送提供者只會在初始化期間更新,所以類別的任何變更都可能不會反映在 WMI 存放庫中一段時間。 因此,推送提供者模型最適合變更少量或完全靜態的類別。