Escribir un proveedor de eventos

Un proveedor de eventos es un objeto COM que proporciona a WMI notificaciones de eventos intrínsecos y extrínsecos. Un evento intrínseco informa de un cambio de datos interno en WMI, mientras que un evento extrínseco informa de un evento definido por el usuario no descrito por un evento intrínseco. Por ejemplo, un evento en respuesta a los cambios, la creación o la eliminación de la clase _ DiscoLógico de Win32 clasificaría como un evento intrínseco. Un evento que se genera en función de algo distinto de la modificación, creación o eliminación de un objeto WMI existente es un evento extrínseco. Independientemente de la clase admitida, puede implementar todos los proveedores de eventos de la misma manera.

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

Para implementar un proveedor de eventos

  1. Diseñe y registre el proveedor de clases con WMI.

    Los proveedores de clases se registran en WMI mediante la creación de una instancia de _ _ Win32Provider y una clase _ _ EventProviderRegistration . Para obtener más información, vea registrar un proveedor de eventos.

  2. Implemente la interfaz IWbemProviderInit para el proveedor.

    La interfaz IWbemProviderInit es una interfaz común que WMI usa para cargar e inicializar todos los proveedores. Para obtener más información, vea inicializar un proveedor.

  3. Implemente IWbemEventProvider como la interfaz principal para el proveedor.

    La interfaz IWbemEventProvider utiliza el método ProviderEvents para proporcionar eventos a WMI. Para obtener más información, vea implementar la interfaz principal para un proveedor de eventos.

    Nota

    Los proveedores de eventos deben usar el modelo de multithreading "both".

  4. Opcionalmente, también puede implementar la interfaz IWbemEventProviderQuerySink para aumentar el rendimiento del proveedor de eventos.

    La interfaz IWbemEventProviderQuerySink permite al proveedor optimizar las consultas antes de enviar una respuesta a WMI, y es muy útil para un proveedor que proporciona eventos de varios tipos y que necesita realizar tantas optimizaciones internas como sea posible. Para obtener más información, consulte optimización de un proveedor de eventos.

  5. Implemente la interfaz IWbemEventProviderSecurity para limitar a los consumidores a determinados identificadores de seguridad (SID) o implemente IWbemEventSink:: SetSinkSecurity para proteger el receptor. El proveedor también puede establecer la propiedad del _ descriptor de seguridad en la clase de eventos para proteger los eventos individuales en el código MOF. Para obtener más información, consulte protección de eventos WMI.

  6. Agregue el código adicional necesario para el proveedor.

    Al diseñar el proveedor, lo más probable es que necesite llamar a interfaces de WMI. Para obtener más información, consulte llamar a un método.

    Al recuperar información de un cliente, es posible que necesite tener acceso a los niveles de seguridad de ese cliente. Para obtener más información, vea Suplantar a un cliente.

  7. Reemplace el proveedor preexistente con el código nuevo.

    No es necesario que realice este paso si no tiene un proveedor preexistente en el que realizar la copia. Para obtener más información, consulte actualización de un proveedor.

Una aplicación cliente puede solicitar un evento registrándose a sí mismo con WMI como consumidor de eventos. Para obtener más información, consulte recibir un evento WMI.