判斷推送或拉取狀態
您可以將類別提供者模型化為推送或提取提供者,以指定提供者預期與 WMI 互動的方式。 提取提供者會從 WMI 接收要求,並透過動態產生數據或從本機快取擷取來滿足要求。 提取提供者也必須實作大量的介面。
提取提供者會動態產生類別定義。 一般而言,提取提供者所管理的數據經常變更,要求提供者動態產生類別,或每當應用程式發出要求時,從本機快取擷取類別。 提取提供者必須實作自己的數據擷取、快取和事件通知機制。 由於大部分提供者都是提取提供者,因此此檔案中的文件假設您正在建置提取提供者,除非另有明確說明。
相反地,WMI 會使用 WMI 存放庫中的數據來處理推送提供者的所有應用程式要求。 推送提供者也會使用較少的介面方法,因此更容易實作。 推送提供者會使用WMI存放庫做為儲存區域,以取得Managed對象的相關信息,並且只在初始化期間更新該資訊。 例如,Microsoft Windows 軟體開發工具套件 (SDK) 的 WMI 區段中所包含的 WDM 類別提供者會模型化為推送提供者。
藉由使用 WMI 存放庫作為儲存區域,推送提供者會透過提取提供者獲得下列優點:
- 提供者不需要實作本機快取來儲存數據。
- 提供者不需要支持數據擷取;相反地,提供者可以依賴 WMI 來提供擷取支援。
- 當應用程式要求提供者提供的數據時,WMI 會滿足該要求。
- 提供者也可以依賴 WMI 來支援事件通知。
不過,由於推送提供者只會在初始化期間更新,因此一段時間后,類別的任何變更可能不會反映在WMI存放庫中。 因此,推送提供者模型最適合用於變動不大的類別或完全靜態的類別。