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 sia già stato implementato il processo di registrazione, come descritto in Registrazione di un provider.

La procedura seguente descrive come registrare un provider di eventi.

Per registrare un provider di eventi

  1. Creare un'istanza della classe __Win32Provider che descrive il provider.

  2. 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 oggetto del provider e un elenco di query che descrivono gli eventi supportati dal provider. Per altre informazioni, vedere Query su WMI.

  3. Caricare l'implementazione delle classi __Win32Provider e __EventProviderRegistration nel repository WMI.

    WMI usa la definizione della classe per registrare e accedere al 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 estrina 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 registra per fornire un evento intrinseco, l'evento deve essere applicato a tutte le istanze di una classe. In altre parole, una query non può essere scritta per fornire eventi di creazione di istanze solo per alcune delle unità disco che appartengono alla classe Win32_LogicalDisk .