Att registrera en händelseleverantör
Om du vill skapa en WMI-händelseleverantör måste du registrera den __Win32Provider instans som representerar din leverantör med hjälp av en instans av __EventProviderRegistration. Som ett COM-objekt måste providern registrera sig med operativsystemet och WMI. Följande procedur förutsätter att du redan har implementerat registreringsprocessen enligt beskrivningen i Registrera en provider.
Följande procedur beskriver hur du registrerar en händelseprovider.
Registrera en händelseleverantör
Skapa en instans av klassen __Win32Provider som beskriver providern.
Skapa en instans av klassen __EventProviderRegistration som beskriver providerns funktionsuppsättning.
Klassen __EventProviderRegistration ärver många egenskaper från den __ObjectProviderRegistration överordnade klassen. Egenskaperna som är lokala för klassen __EventProviderRegistration är objektsökvägen till providern och en lista med frågor som beskriver de händelser som providern stöder. Mer information finns i Querying WMI.
Läs in implementeringen av __Win32Provider- och __EventProviderRegistration-klasserna till WMI-lagringsplatsen.
WMI använder din klassdefinition för att registrera och komma åt din händelseprovider. För mer information, se Registrering av en leverantör.
I följande kodexempel beskrivs en implementering av en __Win32Provider-klass och en __EventProviderRegistration-klass.
instance of __Win32Provider as $P
{
ClientLoadableCLSID = NULL;
CLSID = "{AA7828C5-95F9-11d2-BB0D-00C042424242}";
DefaultMachineName = NULL;
ImpersonationLevel = 0;
InitializationReentrancy = 0;
InitializeAsAdminFirst = FALSE;
Name = "FaxEventProvider";
PerLocaleInitialization = FALSE;
PerUserInitialization = FALSE;
Pure = TRUE;
UnloadTimeout = NULL;
};
instance of __EventProviderRegistration
{
Provider = $P;
EventQueryList = {
"SELECT * FROM FaxEvent",
"SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA \"Win32_LogicalDisk\""};
};
Den första frågan anger att providern genererar alla händelsemeddelanden för den extrinsiska händelseklassen FaxEvent. Eftersom den använder ISA-operatorn innebär den andra frågan att providern genererar meddelanden för alla instansskapandehändelser för klassen Win32_LogicalDisk och alla dess underklasser.
När en provider registrerar sig för att tillhandahålla en inbyggd händelse måste händelsen gälla för alla instanser av en klass. En fråga kan med andra ord inte skrivas för att tillhandahålla instansskapandehändelser för endast några av de diskenheter som tillhör klassen Win32_LogicalDisk.