Eseményszolgáltató optimalizálása
Az eseményszolgáltató sok időt fordíthat az események létrehozására. Ha egyetlen ügyfélalkalmazás sem használja a létrehozott eseményeket, akkor a szolgáltató rendszererőforrásokat veszteget. Emellett a WMI jelentős mennyiségű erőforrást költ elemzésre és összetett lekérdezések küldésére a megfelelő szolgáltatónak. A rendszererőforrások pazarlásának elkerülése és az eseményszolgáltató teljesítményének javítása érdekében implementálhatja az IWbemEventProviderQuerySink felületet. IWbemEventProviderQuerySink a NewQuery és CancelQuery metódusok használatával figyeli az ügyfélalkalmazások által a WMI-ben regisztrált lekérdezéseket. A regisztrált ügyfél-lekérdezések figyelésével a szolgáltató meghatározhatja, hogy mit kell küldenie a WMI-nek.
A WMI meghívja NewQuery egy eseményszolgáltatón, amikor az ügyfélfelhasználó regisztrál egy eseményszűrő lekérdezést, amely az adott eseményszolgáltató által támogatott eseményekre mutató hivatkozásokat tartalmaz. Így a EmailClass osztály példánymódosítási eseményeiért felelős eseményszolgáltató beállítható úgy, hogy csak küldőküldjön értesítéseket. Amikor a szolgáltató értesítést kér a tárgy tulajdonság módosításairól, a szolgáltató elkezdheti generálni ezeket az értesítéseket. Ebben a forgatókönyvben a WMI-nek nem kell elvetnie azokat az értesítéseket, amelyek csak a címzett változásait jelentik.
Hasonlóképpen, a WMI meghívja CancelQuery egy eseményszolgáltatón, amikor egy ügyfélfelhasználó töröl egy eseményszűrő lekérdezést, amely az eseményszolgáltató által támogatott eseményekre mutató hivatkozásokat tartalmaz. A CancelQuery célja, hogy az eseményszolgáltató frissítse a küldendő események listáját.
Jegyzet
Ha a szolgáltató támogatja IWbemEventProvider és IWbemEventProviderQuerySink, győződjön meg arról, hogy a IUnknown::QueryInterface metódus mindkét felületre mutatót ad vissza.