Registro de un proveedor de eventos

Para crear un proveedor de eventos WMI, debe registrar la instancia de __Win32Provider que representa al proveedor mediante una instancia de __EventProviderRegistration. Como objeto COM, el proveedor debe registrarse con el sistema operativo y WMI. En el procedimiento siguiente se supone que ya ha implementado el proceso de registro tal y como se describe en Registro de un proveedor.

En el procedimiento siguiente se describe cómo registrar un proveedor de eventos.

Para registrar un proveedor de eventos

  1. Cree una instancia de la clase __Win32Provider que describa el proveedor.

  2. Cree una instancia de la clase __EventProviderRegistration que describa el conjunto de características del proveedor.

    La clase __EventProviderRegistration hereda muchas propiedades de la __ObjectProviderRegistration clase primaria. Las propiedades locales de la clase __EventProviderRegistration son la ruta de acceso del objeto al proveedor y una lista de consultas que describen los eventos que admite el proveedor. Para obtener más información, vea Consulta de WMI.

  3. Cargue la implementación de las clases __Win32Provider y __EventProviderRegistration en el repositorio WMI.

    WMI usa la definición de clase para registrar y acceder al proveedor de eventos. Para obtener más información, vea Registrar un proveedor.

En el ejemplo de código siguiente se describe una implementación de una clase __Win32Provider y una clase __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 primera consulta indica que el proveedor genera todas las notificaciones de eventos para la clase de eventos extrinsic FaxEvent. Dado que usa el operador ISA, la segunda consulta implica que el proveedor genera notificaciones para todos los eventos de creación de instancias para la clase Win32_LogicalDisk y todas sus subclases.

Cuando un proveedor se registra para proporcionar un evento intrínseco, el evento debe aplicarse a todas las instancias de una clase. Es decir, no se puede escribir una consulta para proporcionar eventos de creación de instancias solo para algunas de las unidades de disco que pertenecen a la clase Win32_LogicalDisk .