Udostępnij za pośrednictwem


Implementowanie interfejsu High-Performance

Ponieważ usługa WMI ładuje dostawcę o wysokiej wydajności w trybie wewnątrzprocesowym do WMI lub aplikacji klienckiej, musisz zaprojektować swojego dostawcę o wysokiej wydajności jako serwer wewnątrzprocesowy. Ponadto należy zaimplementować metody dostawcy o wysokiej wydajności w interfejsach IWbemHiPerfProvider i IWbemRefresher.

Należy zaimplementować dostawcę o wysokiej wydajności jako serwer wewnątrzprocesowy. Jedną z funkcji, o której należy pamiętać podczas implementowania zabezpieczeń serwera przetwarzania, jest sposób, w jaki dostawca identyfikuje własną lokalizację. Po załadowaniu procesu do usługi WMI usługa WMI tworzy wystąpienie dostawcy przy użyciu identyfikatora CLSID. Gdy proces zostanie załadowany do aplikacji klienckiej, aplikacja kliencka instancjonuje dostawcę przy użyciu właściwości ClientLoadableCLSID. Dając różne wartości CLSID i ClientLoadableCLSID, pozwalasz dostawcy określić, czy jest ładowany jako proces wewnętrzny do WMI czy do aplikacji klienckiej. Jeśli znajduje się w procesie WMI, dostawca powinien wykonać wszelkie niezbędne personifikacji klienta przy użyciu ClientLoadableCLSID. Jeśli znajduje się w procesie klienta, dostawca przejmuje token dostępu wątku, na którym jest wywoływany. Aby uzyskać więcej informacji na temat implementowania serwera w procesie, zobacz dokumentację Component Object Model (COM).

Jako serwer przetwarzania dostawca o wysokiej wydajności używa obiektu odświeżającego, aby dane były aktualne dla klienta zdalnego. W poniższej tabeli wymieniono metody, które należy zaimplementować dla dostawcy o wysokiej wydajności.

Metoda Cecha
IWbemHiPerfProvider::QueryInstances Kwerendy
IWbemHiPerfProvider::GetObjects Pobieranie obiektu
IWbemHiPerfProvider::CreateRefresher Tworzy odświeżacz
IWbemHiPerfProvider::CreateRefreshableObject Tworzy odświeżalny obiekt instancji
IWbemHiPerfProvider::CreateRefreshableEnum Tworzy odświeżalny enumerator
IWbemHiPerfProvider::StopRefreshing Zatrzymuje odświeżanie enumeratora lub obiektu instancji
IWbemRefresher::Odśwież Tworzy odświeżacz

 

Convertowanie dostawcy instancji na dostawcę High-Performance