Implementación de la interfaz principal de un proveedor de clases
Hay dos maneras de implementar un proveedor de clases: implementar la interfaz como proveedor de inserción o como proveedor de extracción.
En este tema se describen las secciones siguientes:
- Implementación de la interfaz principal de un proveedor de clases de inserción
- Implementación de la interfaz principal de un proveedor de clases de extracción
Implementación de la interfaz principal de un proveedor de clases de extracción
Mientras que todos los proveedores implementan IWbemProviderInit para la inicialización y al menos otra interfaz como su interfaz principal, un proveedor de inserción implementa solo IWbemProviderInit.
Asegúrese de que la implementación realiza las siguientes tareas:
- Recupera los datos de clase adecuados.
- Coloca los datos en el repositorio de WMI.
- Elimina los datos obsoletos.
Después de completar el proceso de inicialización, WMI controla todas las solicitudes de aplicación de las clases que pertenecen al proveedor de inserción sin ninguna interacción adicional del proveedor. Después, el proveedor de inserción actúa eficazmente como un cliente de WMI en lugar de un proveedor. Para obtener más información sobre cómo implementar IWbemProviderInit, consulte Inicialización de un proveedor.
Nota
Al llamar a WMI para crear, actualizar o quitar datos de un proveedor de inserción, establezca el parámetro lFlags para que incluya la marca WBEM_FLAG_OWNER_UPDATE en todas las llamadas a los métodos IWbemServices.
Implementación de la interfaz principal de un proveedor de clases de extracción
Un proveedor de extracción de clases debe implementar IWbemServices como interfaz principal. La interfaz IWbemServices admite la recuperación, actualización y eliminación de datos, y la enumeración y el procesamiento de consultas. No obstante, dado que también lo usan las aplicaciones y los proveedores para solicitar servicios de WMI, IWbemServices contiene muchos métodos que son irrelevantes para un proveedor de clases. La implementación debe admitir la recuperación y enumeración de clases mediante los métodos GetObjectAsync y CreateClassEnumAsync respectivamente. En la tabla siguiente se enumeran los métodos IWbemServices asincrónicos adicionales que puede implementar para un proveedor de clases.
Método | Característica |
---|---|
PutInstanceAsync | Modificación |
DeleteClassAsync | Eliminación |
Nota
Dado que es posible que la devolución de llamada al receptor no se devuelva en el mismo nivel de autenticación que requiere el cliente, se recomienda usar la comunicación semisincrónica, en lugar de la asincrónica. Para obtener más información, consulte Llamada a un método.
El proveedor de clases debe proporcionar una implementación de código auxiliar que devuelva WBEM_E_PROVIDER_NOT_CAPABLE para todos los demás métodos IWbemServices que no admitan el conjunto de características. En concreto, WMI no admite el procesamiento de consultas para proveedores de clases. Por lo tanto, un proveedor de clases debe devolver WBEM_E_PROVIDER_NOT_CAPABLE de su implementación de IWbemServices::ExecQueryAsync, establecer su propiedad de registro QuerySupportLevels en NULL o ambas.
Las interfaces que implementa un proveedor de clases son muy similares a las interfaces de un proveedor de instancias y un proveedor de métodos. De hecho, un único proveedor puede actuar como los tres tipos de proveedor mediante la implementación de todos los métodos y un registro adecuado.