Implementación de la interfaz de alto rendimiento
Dado que WMI carga un proveedor de alto rendimiento en proceso en WMI o en una aplicación cliente, debe diseñar el proveedor de alto rendimiento como servidor en proceso. Además, debe implementar los métodos de proveedor de alto rendimiento en las interfaces IWbemHiPerfProvider e IWbemRefresher.
Debe implementar un proveedor de alto rendimiento como servidor en proceso. Una característica que debe tener en cuenta al implementar la seguridad de un servidor en proceso es cómo identifica el proveedor su propia ubicación. Cuando se carga en proceso en WMI, WMI crea una instancia del proveedor mediante un CLSID. Cuando se carga en proceso en una aplicación cliente, la aplicación cliente crea una instancia del proveedor con la propiedad ClientLoadableCLSID. Al proporcionar valores diferentes a CLSID y ClientLoadableCLSID, se permite al proveedor determinar si se carga en proceso en WMI o en una aplicación cliente. Si se encuentra en un proceso de WMI, el proveedor debe realizar cualquier suplantación de cliente necesaria mediante ClientLoadableCLSID. Si se encuentra en un proceso de cliente, el proveedor hereda el token de acceso del subproceso en el que se llama. Para obtener más información sobre la implementación de un servidor en proceso, consulte la documentación del modelo de objetos componentes (COM).
Como servidor en proceso, un proveedor de alto rendimiento usa un objeto refresher para mantener los datos actualizados para el cliente remoto. En la tabla siguiente se enumeran los métodos que debe implementar para un proveedor de alto rendimiento.
Método | Característica |
---|---|
IWbemHiPerfProvider::QueryInstances | Consultas |
IWbemHiPerfProvider::GetObjects | Recuperación de objetos |
IWbemHiPerfProvider::CreateRefresher | Crea un actualizador |
IWbemHiPerfProvider::CreateRefreshableObject | Crea un objeto de instancia actualizable |
IWbemHiPerfProvider::CreateRefreshableEnum | Crea un enumerador actualizable |
IWbemHiPerfProvider::StopRefreshing | Detiene la actualización de un enumerador o un objeto de instancia |
IWbemRefresher::Refresh | Crea un actualizador |
Temas relacionados