Sdílet prostřednictvím


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ří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í.