Registrazione di un provider di eventi
Per creare un provider di eventi WMI , è necessario registrare l'istanza di __Win32Provider che rappresenta il provider usando un'istanza di __EventProviderRegistration. Come oggetto COM, il provider deve registrarsi con il sistema operativo e WMI. La procedura seguente presuppone che il processo di registrazione sia già stato implementato come descritto in Registrazione di un provider.
La procedura seguente descrive come registrare un provider di eventi.
Per registrare un provider di eventi
Creare un'istanza della classe __Win32Provider che descrive il provider.
Creare un'istanza della classe __EventProviderRegistration che descrive il set di funzionalità del provider.
La classe __EventProviderRegistration eredita molte proprietà dalla classe padre __ObjectProviderRegistration. Le proprietà locali della classe __EventProviderRegistration sono il percorso dell'oggetto del provider e un elenco di query che descrivono gli eventi supportati dal provider. Per altre informazioni, vedere sulle query di WMI.
Caricare l'implementazione delle classi __Win32Provider e __EventProviderRegistration nel repository WMI.
WMI usa la definizione della classe per registrare e accedere al tuo provider di eventi. Per altre informazioni, vedere Registrazione di un provider.
Nell'esempio di codice seguente viene descritta un'implementazione di una classe __Win32Provider e di una classe __EventProviderRegistration.
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\""};
};
La prima query indica che il provider genera tutte le notifiche degli eventi per la classe di evento estrinsica FaxEvent. Poiché usa l'operatore ISA, la seconda query implica che il provider genera notifiche per tutti gli eventi di creazione di istanze per la classe Win32_LogicalDisk e tutte le relative sottoclassi.
Quando un provider esegue la registrazione per fornire un evento intrinseco, l'evento deve essere applicato a tutte le istanze di una classe. In altre parole, non è possibile scrivere una query per fornire eventi di creazione di istanze solo per alcune unità disco appartenenti alla classe Win32_LogicalDisk.