Escribir un proveedor de clases

Un proveedor de clases administra una clase o serie de clases para WMI. Un proveedor de clases puede ser de inserción o de extracción; es decir, puede almacenar sus propios datos o permitir que WMI almacene datos por él en el Servicio de administración de Windows. Aunque un proveedor de clases esté instalado en una máquina específica, puede cambiar las definiciones de clase para toda la empresa. Por lo tanto, la mayoría de los desarrolladores no suelen crear proveedores de clases.

Antes de crear un proveedor de clases, compruebe que las clases admitidas realmente deben generarse dinámicamente. En la mayoría de los casos, la lista de clases cambia lentamente y es limitada. Si este es el caso, no debería tener que crear un proveedor de clases. En su lugar, puede colocar las definiciones de clase en el repositorio de WMI mediante la API de WMI o un archivo MOF.

El procedimiento siguiente describe cómo implementar un proveedor de clases.

Para implementar un proveedor de clases

  1. Determine si el proveedor es un proveedor de inserción o de extracción.

    Un proveedor de extracción proporciona datos dinámicamente como respuesta a una solicitud de aplicación, mientras que los proveedores de inserción almacenan sus datos una sola vez en el repositorio de WMI. Para obtener más información, consulte Determinar el estado de inserción o extracción.

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

    Los proveedores de clases se registran con WMI mediante la creación de una instancia __Win32Provider y una instancia __ClassProviderRegistration. Para obtener más información, consulte Registrar un proveedor de clases.

  3. Implemente la interfaz IWbemProviderInit para el proveedor.

    WMI usa IWbemProviderInit para cargar e inicializar un proveedor. Si está diseñando un proveedor de inserción, IWbemProviderInit es la única interfaz que implementará. Para obtener más información, consulte Inicializar un proveedor.

    Nota:

    Es muy recomendable que los proveedores de clases usen el modelo de multithreading "Ambos".

     

  4. Agregue cualquier código adicional que necesite el proveedor.

    Al diseñar el proveedor, lo más probable es que tenga que llamar a interfaces de WMI. Para más información, consulte Llamar a un método y Mantener los niveles de seguridad en un proveedor.

    Al recuperar información de un cliente, es posible que tenga que acceder a los niveles de seguridad de ese cliente. Para obtener más información, consulte Suplantar un cliente.

  5. Implemente la interfaz IWbemServices para el proveedor.

    IWbemServices es la interfaz principal de un proveedor de clases de extracción. Para obtener más información, consulte Implementar la interfaz principal para un proveedor de clases.

  6. Reemplace el proveedor existente por el nuevo código.

    No es necesario realizar este paso si no hay un proveedor existente para copiar encima. Para más información, consulte Actualizar un proveedor.