Implementieren der Hochleistungsschnittstelle
Da WMI einen leistungsfähigen Anbieter in einem Prozess in WMI oder einer Clientanwendung lädt, müssen Sie Ihren Hochleistungsanbieter als In-Process-Server entwerfen. Darüber hinaus müssen Sie die Hochleistungsanbietermethoden in den Schnittstellen IWbemHiPerfProvider und IWbemRefresher implementieren.
Sie müssen einen Hochleistungsanbieter als In-Process-Server implementieren. Ein Feature, das Sie bei der Implementierung der Sicherheit eines In-Process-Servers berücksichtigen sollten, ist, wie der Anbieter seinen eigenen Standort identifiziert. Beim prozessinternen Laden in WMI instanziiert WMI den Anbieter mithilfe einer CLSID. Beim prozessinternen Laden in eine Clientanwendung instanziiert die Clientanwendung den Anbieter mit der ClientLoadableCLSID-Eigenschaft. Indem Sie einer CLSID und ClientLoadableCLSID unterschiedliche Werte geben, können Sie dem Anbieter ermöglichen, ermitteln, ob das Laden in WMI oder in eine Clientanwendung erfolgt. Wenn der Ladevorgang in einem WMI-Prozess stattfindet, sollte der Anbieter alle erforderlichen Clientidentitätswechsel mithilfe von ClientLoadableCLSID ausführen. Bei einem Clientprozess, übernimmt der Anbieter das Zugriffstoken des Threads, für den er aufgerufen wird. Weitere Informationen zum Implementieren eines In-Process-Servers finden Sie in der Component Object Model (COM)-Dokumentation.
Als In-Process-Server verwendet ein Hochleistungsanbieter ein Aktualisierungsobjekt, um Daten für den Remoteclient aktuell zu halten. In der folgenden Tabelle sind Methoden aufgeführt, die Sie für einen Hochleistungsanbieter implementieren müssen.
Methode | Funktion |
---|---|
IWbemHiPerfProvider::QueryInstances | Abfragen |
IWbemHiPerfProvider::GetObjects | Objektabruf |
IWbemHiPerfProvider::CreateRefresher | Erstellt eine Aktualisierungsfunktion |
IWbemHiPerfProvider::CreateRefreshableObject | Erstellt ein aktualisierbares Instanzobjekt |
IWbemHiPerfProvider::CreateRefreshableEnum | Erstellt einen aktualisierbaren Enumerator |
IWbemHiPerfProvider::StopRefreshing | Beendet das Aktualisieren eines Enumerator- oder Instanzobjekts |
IWbemRefresher::Refresh | Erstellt eine Aktualisierungsfunktion |
Zugehörige Themen