Dela via


Implementera det primära gränssnittet för en klassprovider

Det finns två sätt att implementera en klassprovider: implementera gränssnittet som en push-provider eller som en pull-provider.

Följande avsnitt beskrivs i det här avsnittet:

Implementera det primära gränssnittet för en push-klassleverantör

Medan alla leverantörer implementerar IWbemProviderInit för initiering och minst ett annat gränssnitt som primärt gränssnitt, implementerar en push-provider endast IWbemProviderInit.

Se till att implementeringen utför följande uppgifter:

  • Hämtar lämpliga klassdata.
  • Placerar data i WMI-lagringsplatsen.
  • Tar bort föråldrade data.

När du har slutfört initieringsprocessen hanterar WMI alla programbegäranden för klasser som tillhör push-providern utan någon ytterligare providerinteraktion. Därefter fungerar push-providern effektivt som en klient för WMI i stället för en provider. Mer information om hur du implementerar IWbemProviderInitfinns i Initiera en provider.

Not

När du anropar WMI för att skapa, uppdatera eller ta bort data i en push-provider anger du parametern lFlags för att inkludera flaggan WBEM_FLAG_OWNER_UPDATE i alla anrop till IWbemServices metoder.

 

Implementera det primära gränssnittet för en pull-klassprovider

En klass-pull-leverantör bör implementera IWbemServices som det primära gränssnittet. Gränssnittet IWbemServices stöder datahämtning, datauppdatering, borttagning av data, uppräkning och frågebearbetning. Men eftersom IWbemServices också används av program och leverantörer för att begära tjänster av WMI, innehåller IWbemServices många metoder som är irrelevanta för en klassprovider. Implementeringen måste ha stöd för klasshämtning och uppräkning via metoderna GetObjectAsync respektive CreateClassEnumAsync metoder. I följande tabell visas de ytterligare asynkrona IWbemServices metoder som du kan implementera för en klassprovider.

Metod Funktion
PutInstanceAsync Ändring
DeleteClassAsync Borttagning

 

Anteckning

Eftersom återanropet till slutsystemet kanske inte returneras på samma autentiseringsnivå som klienten kräver, rekommenderar vi att du använder semisynkron i stället för asynkron kommunikation. Mer information finns i Anropa en metod.

 

Klassprovidern bör ange en stub-implementering som returnerar WBEM_E_PROVIDER_NOT_CAPABLE för alla andra IWbemServices metoder som inte stöder din funktionsuppsättning. Mer specifikt stöder WMI inte frågebearbetning för klassprovidrar. Därför måste en klassleverantör returnera WBEM_E_PROVIDER_NOT_CAPABLE från implementeringen av IWbemServices::ExecQueryAsync, ange registreringsegenskapen QuerySupportLevels till NULL, eller båda.

De gränssnitt som en klassprovider implementerar liknar gränssnitten för en instansprovider och en metodprovider. Faktum är att en enskild leverantör kan fungera som alla tre typerna av provider genom att implementera alla metoder och registrera sig korrekt.