Implementace primárního rozhraní pro zprostředkovatele třídy
Existují dva způsoby, jak implementovat zprostředkovatele třídy: implementovat rozhraní jako push poskytovatel, nebo jako pull poskytovatel.
V tomto tématu jsou popsány následující části:
- Implementace primárního rozhraní pro poskytovatele push tříd
- implementace primárního rozhraní pro poskytovatele třídy vyžádané replikace
Implementace primárního rozhraní pro poskytovatele push třídy
Vzhledem k tomu, že všichni poskytovatelé implementují IWbemProviderInit pro inicializaci a alespoň jedno jiné rozhraní jako jejich primární rozhraní, push poskytovatel implementuje pouze IWbemProviderInit.
Ujistěte se, že vaše implementace provádí následující úlohy:
- Načte příslušná data třídy.
- Umístí data do úložiště rozhraní WMI.
- Odstraní zastaralá data.
Po dokončení iniciačního procesu služba WMI zpracovává všechny aplikační požadavky na třídy přidružené k poskytovateli push bez další interakce s poskytovatelem. Poté poskytovatel push oznámení funguje jako klient rozhraní WMI, nikoli jako poskytovatel. Pro více informací o implementaci IWbemProviderInitsi prohlédněte téma Inicializace zprostředkovatele.
Poznámka
Při volání rozhraní WMI pro vytvoření, aktualizaci nebo odebrání dat v poskytovateli push oznámení nastavte parametr lFlags tak, aby ve všech voláních metod IWbemServices zahrnoval příznak WBEM_FLAG_OWNER_UPDATE.
Implementace primárního rozhraní pro poskytovatele třídy na žádost
Poskytovatel třídy pull by měl implementovat IWbemServices jako primární rozhraní. Rozhraní IWbemServices podporuje načítání dat, aktualizaci dat, odebrání dat, výčet a zpracování dotazů. Vzhledem k tomu, že IWbemServices je také používán aplikacemi a poskytovateli k vyžádání služeb rozhraní WMI, IWbemServices obsahuje mnoho metod, které jsou pro poskytovatele třídy irelevantní. Vaše implementace musí podporovat načítání a výčty tříd prostřednictvím GetObjectAsync a CreateClassEnumAsync metod. Následující tabulka uvádí další asynchronní IWbemServices metody, které můžete implementovat pro poskytovatele třídy.
Metoda | Funkce |
---|---|
PutInstanceAsync | Modifikace |
DeleteClassAsync | Smazání |
Poznámka
Vzhledem k tomu, že zpětné volání do jímky nemusí být vráceno na stejné úrovni ověřování jako klient vyžaduje, doporučujeme místo asynchronní komunikace použít polosynchronní. Další informace naleznete v tématu Volání metody.
Poskytovatel vaší třídy by měl dodat zástupnou implementaci, která vrátí WBEM_E_PROVIDER_NOT_CAPABLE pro všechny ostatní metody IWbemServices, které nepodporují vaši funkční sadu. Rozhraní WMI konkrétně nepodporuje zpracování dotazů pro poskytovatele tříd. Poskytovatel třídy musí z implementace IWbemServices::ExecQueryAsyncvrátit WBEM_E_PROVIDER_NOT_CAPABLE, nastavit QuerySupportLevels registrační vlastnost na NULLnebo obojí.
Rozhraní, která implementuje poskytovatel tříd, jsou velmi podobná rozhraním pro zprostředkovatele instance a poskytovatele metody. Ve skutečnosti může jeden poskytovatel fungovat jako všechny tři typy zprostředkovatelů implementací všech metod a správnou registrací.