Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Istnieją dwa sposoby implementacji dostawcy klasy: jako dostawca typu push, poprzez implementację interfejsu, lub jako dostawca typu pull.
W tym temacie omówiono następujące sekcje:
- Implementacja podstawowego interfejsu dla dostawcy klas typu push
- Implementacja Interfejsu Głównego dla dostawcy klas Pull
Implementowanie głównego interfejsu dla dostawcy klasy push
Podczas gdy wszyscy dostawcy implementują IWbemProviderInit na potrzeby inicjowania i co najmniej jeden inny interfejs jako swój główny interfejs, dostawca typu "push" implementuje tylko IWbemProviderInit.
Upewnij się, że implementacja wykonuje następujące zadania:
- Pobiera odpowiednie dane klasy.
- Umieszcza dane w repozytorium WMI.
- Usuwa przestarzałe dane.
Po zakończeniu procesu inicjowania WMI obsługuje wszystkie żądania aplikacji dotyczące klas należących do dostawcy typu push bez dalszej interakcji z dostawcą. Następnie dostawca usług wypychających działa jako klient usługi WMI zamiast dostawcy. Aby uzyskać więcej informacji na temat implementowania IWbemProviderInit, zobacz Inicjalizacja dostawcy.
Uwaga
Podczas wywoływania WMI w celu utworzenia, zaktualizowania lub usunięcia danych w dostawcy typu push, ustaw parametr lFlags, aby uwzględnić flagę WBEM_FLAG_OWNER_UPDATE we wszystkich wywołaniach metod IWbemServices.
Implementowanie podstawowego interfejsu dla dostawcy klas pull
Dostawca ściągania klas powinien zaimplementować IWbemServices jako podstawowy interfejs. Interfejs IWbemServices obsługuje pobieranie danych, aktualizowanie danych, usuwanie danych, wyliczanie i przetwarzanie zapytań. Jednak ponieważ IWbemServices jest również używana przez aplikacje i dostawców do żądania usług WMI, IWbemServices zawiera wiele metod, które nie są istotne dla dostawcy klas. Implementacja musi obsługiwać pobieranie i wyliczanie klas za pośrednictwem odpowiednio metod GetObjectAsync i CreateClassEnumAsync. W poniższej tabeli wymieniono dodatkowe metody asynchroniczne IWbemServices, które można zaimplementować dla dostawcy klas.
| Metoda | Cecha |
|---|---|
| PutInstanceAsync | Modyfikacja |
| DeleteClassAsync | Usunięcie |
Notatka
Ponieważ wywołanie zwrotne do ujścia może nie być zwracane na takim poziomie uwierzytelniania, jakiego wymaga klient, zaleca się użycie komunikacji semisynchronicznej zamiast asynchronicznej. Aby uzyskać więcej informacji, zobacz Wywoływanie metody.
Dostawca klas powinien podać implementację wycinków, która zwraca WBEM_E_PROVIDER_NOT_CAPABLE dla wszystkich innych IWbemServices metod, które nie obsługują zestawu funkcji. W szczególności usługa WMI nie obsługuje przetwarzania zapytań dla klas dostawców. W związku z tym dostawca klas musi zwrócić WBEM_E_PROVIDER_NOT_CAPABLE z implementacji IWbemServices::ExecQueryAsync, ustawić właściwość rejestracji QuerySupportLevels na wartość NULLlub oba.
Interfejsy implementowane przez dostawcę klas są bardzo podobne do interfejsów dostawcy wystąpień i dostawcy metod. W rzeczywistości jeden dostawca może działać jako wszystkie trzy typy dostawcy, implementując wszystkie metody i rejestrując się prawidłowo.