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.
Usługa WMI udostępnia dane dotyczące obiektów zarządzanych przez system Windows za pośrednictwem dostawców usługi WMI . Dostawca pobiera dane ze składnika systemu, takiego jak proces lub instrumentowana aplikacja, taka jak SNMP lub IIS, i przekazuje te dane za pośrednictwem usługi WMI do aplikacji do zarządzania. Na przykład gdy aplikacja lub skrypt żąda przetwarzania informacji przy użyciu klasy Win32_Process usługi WMI, dane są uzyskiwane dynamicznie za pośrednictwem wstępnie zainstalowanego dostawcy.
W tym temacie omówiono następujące sekcje:
- tworzenie modelu dla zarządzanego obiektu
- implementowanie modelu dla zarządzanego obiektu
- określanie typu dostawcy w celu zaimplementowania
- określanie modelu hostingu (implementacji) dla dostawcy
- Wdrażanie usługodawcy
- Rejestracja dostawcy w WMI i w systemie
- testowanie dostawcy
- Tematy pokrewne
Tworzenie modelu dla obiektu możliwego do zarządzania
Przed opracowaniem dostawcy utwórz model danych, aby reprezentować zarządzany obiekt, który ma być uwidoczniony za pośrednictwem usługi WMI. Planujesz, które obiekty danych będzie uwidaczniać dostawca. Jeśli na przykład planujesz zarządzać rozdzielczością ekranu tła pulpitu, musisz zdecydować, jak modelować pulpit w pliku Managed Object Format (MOF).
Aby utworzyć przydatny model:
- Określanie rzeczywistych scenariuszy i modelowanie informacji, które klient może chcieć odczytać i zaktualizować (na przykład zmienić obraz tła) dla każdego zarządzanego obiektu. To są twoje właściwości klasy.
- Określ, jakiego rodzaju akcje może chcieć wykonać klient z każdym zarządzanym obiektem. Są to twoje metody.
Implementowanie modelu dla obiektu możliwego do zarządzania
Aby zaimplementować model do zarządzania obiektami, utwórz plik MOF zawierający klasę WMI reprezentującą każdy obiekt. Aby uzyskać więcej informacji na temat tworzenia pliku MOF do definiowania klas WMI, zobacz Projektowanie klas formatu obiektów zarządzanych (MOF). Rejestracja dostawcy i jego klas jest zwykle zawarta w pliku MOF, chociaż istnieje możliwość użycia interfejsu API COM do tworzenia klas i metod. Aby uzyskać więcej informacji, zobacz Tworzenie dostawcy WMI.
Notatka
Aby upewnić się, że wszystkie definicje klas WMI dla obiektów zarządzanych zostaną przywrócone do repozytorium usługi WMI, jeśli wystąpi błąd w usłudze WMI i nastąpi jej ponowne uruchomienie, użyj instrukcji preprocesora #pragma autorecover w pliku Managed Object Format (MOF).
Po utworzeniu pliku MOF skompiluj go przy użyciu narzędzia Mofcomp.exe. Spowoduje to powiadomienie o błędach w pliku MOF i dodanie klasy WMI zdefiniowanej w pliku MOF do repozytorium WMI, aby klasa mogła być używana przez dostawcę.
Określanie typu dostawcy do zaimplementowania
Usługa WMI obsługuje pewną liczbę typów dostawców, która określa charakter dostarczanych informacji i operacji obsługiwanych przez dostawców.
Typy dostawców to:
- dostawca instancji
- dostawca metody
- dostawca właściwości
- Dostawca zajęć
- dostawca zdarzeń
- dostawca odbiorców zdarzeń
- dostawca skojarzeń
Zdecydowana większość dostawców to dostawcy instancji i dostawcy metod. Dostawca wystąpienia jest najczęściej używanym dostawcą i dostarcza wystąpienia danej klasy. Dostawca metody implementuje metody jednej lub kilku klas. Aby uzyskać więcej informacji na temat typów dostawców, zobacz Tworzenie dostawcy WMI.
Określanie modelu hostingu (implementacji) dostawcy
Dostawcy WMI to pliki binarne implementowane jako obiekty COM. Oznacza to, że każdy dostawca ma plik DLL, który można wykonać w określonym procesie i kontekście zabezpieczeń. To, co WMI nazywa modelem hostingu . Usługa WMI oferuje różne sposoby hostowania dostawców, ale najczęstszym podejściem jest użycie modelu dostawcy powiązanego (działającego w ramach procesu WMI) w kontekście zabezpieczeń NetworkServiceHost. Dostawca usługi WMI może być klasyfikowany jako powiązany lub rozłączony.
Termin powiązany lub odłączony dostawca określa, w którym procesie hosta działa dostawca w odniesieniu do procesu WMIPRVSE.EXE zapewnianego przez WMI. Najlepszym rozwiązaniem jest ustalenie, czy dane zarządzania udostępniane przez dostawcę i interfejs API lub aplikacja, na których polega, są zawsze dostępne w systemie, czy nie. Jeśli interfejs API lub aplikacja, na którym polega dostawca, jest zawsze dostępny (uruchomiony w systemie), dostawca powinien być dostawcą powiązanym, jeśli nie, musi być dostawcą odłączonym. Aby uzyskać więcej informacji na temat modeli hostingu, zobacz Provider Hosting and Security.
Aby uzyskać więcej informacji na temat tworzenia połączonego dostawcy, zobacz Dostarczanie danych do usługi WMI przez napisanie dostawcy, a aby uzyskać informacje na temat integracji dostawcy odłączonego z aplikacją, zobacz Integracja dostawcy w aplikacji.
Dostawcy, którzy są ze sobą powiązani, mogą być opisywani jako wewnętrzne (in-process, in-proc) lub zewnętrzne (out-of-process, out-of-proc). Gdy powiązany dostawca jest dostawcą wewnętrznego procesu, działa w ramach udostępnionego procesu hostingu WMI WMIPRVSE.EXE i jest implementowany jako serwer wewnętrznego procesu modelu COM (.dll). Gdy dostawca jest dostawcą out-of-proc, jest uruchamiany przez usługę WMI na żądanie klienta lub zdarzenia, ale działa jako oddzielony proces i jest implementowany jako plik wykonywalny (.exe).
Implementacja dostawcy usług
Dostawcę można zaimplementować w następujący sposób:
Korzystanie z Kreatora ATL w programie Visual Studio.
Kreator ATL generuje kod dostawcy, który implementuje powiązanego dostawcę. Korzystając z Kreatora ATL, możesz określić, że chcesz utworzyć model czasu wykonywania dostawcy in-proc (.dll) lub out-of-proc (.exe).
Definiowanie obiektu COM zawierającego dostawcę.
Kod dostawcy jest napisany w języku C++. Aby uzyskać więcej informacji, zobacz Dostarczanie danych do WMI przez napisanie dostawcy.
Używanie klas w przestrzeni nazw Microsoft.Management.Infrastructure w programie .NET Framework w celu utworzenia dostawcy przy użyciu kodu zarządzanego. (Przestrzeń nazw System.Management.Instrumentation nie jest już obsługiwana).
Ten proces tworzy oddzielonego dostawcę.
Rejestrowanie dostawcy za pomocą usługi WMI i systemu
Przed użyciem dostawcy usług dla konsumenta ważne jest zarejestrowanie go w systemie WMI i podsystemie Windows COM.
Plik MOF może zawierać wiele typów dostawców dla tych samych klas. Ta sama nazwa dostawcy jest zarejestrowana jako przykład instancji lub dostawcy metody. Aby uzyskać więcej informacji, zobacz Rejestrowanie dostawcy.
Testowanie dostawcy
Po zarejestrowaniu kodu dostawcy ważne jest prawidłowe przetestowanie dostawcy przy użyciu dostawcy od różnych odbiorców (na przykład skryptów, kodu zarządzanego platformy .NET i odbiorców języka C++).
Wykonaj następujące zadania, aby przetestować dostawcę:
- Upewnij się, że Twój dostawca ładuje się prawidłowo, śledząc powiadomienia o wydarzeniach MSFT_WmiProvider_OperationEvent. Te zdarzenia informują o wszelkich błędach ładowania dostawcy. Inne klasy rozwiązywania problemów, które mogą być przydatne, to Win32_ProcessStartTrace i Win32_ProcessStopTrace. Aby uzyskać więcej informacji na temat rozwiązywania problemów z dostawcami, zobacz Debugowanie dostawców oraz Konfiguracja dostawców i klasy rozwiązywania problemów.
- Jeśli dostawca jest dostawcą instancji lub metody, upewnij się, że testujesz każdą funkcję dostawcy pojedynczo, aby uniknąć nieporozumień związanych z logiką w kodzie.
- Dla dostawcy instancji utwórz aplikację kliencką lub skrypt, który wywołuje każdy interfejs dostawcy (wyliczenie, pobieranie, ustawianie i usuwanie). Nawet jeśli dostawca nie powinien implementować niczego, powinien zwrócić komunikat "nieobsługiwany". Wartości zwracane są już zdefiniowane w kody powrotne usługi WMI.
- Aby upewnić się, że żądany kontekst zabezpieczeń działa zgodnie z planem, należy wywołać operacje obsługiwane przez dostawcę z kontekstu zabezpieczeń nieadministratora. Dostawca musi obsługiwać personifikację. Jeśli użytkownik nie ma poprawnych poświadczeń zabezpieczeń próbuje zaktualizować dane lub wykonać operację wykonującą metodę, dostawca powinien odmówić dostępu z odpowiednim komunikatem o błędzie.
- Aby uzyskać więcej informacji na temat zabezpieczeń dostawcy, zobacz Zabezpieczanie dostawcy.
Tematy pokrewne