实现高性能接口

由于 WMI 将进程中的高性能提供程序加载到 WMI 或客户端应用程序,因此您必须将高性能提供程序设计为进程内服务器。 此外,必须在 IWbemHiPerfProviderIWbemRefresher 接口中实现高性能提供程序方法。

您应该将高性能提供程序作为进程内服务器实现。 在实施进程内服务器安全时,你应该注意的一个特点是提供商如何识别自己的位置。 在进程内加载到 WMI 时,WMI 会使用 CLSID 对提供程序进行实例化。 在处理过程中加载到客户端应用程序时,客户端应用程序使用 ClientLoadableCLSID 属性对提供程序进行实例化。 通过为 CLSID 和 ClientLoadableCLSID 提供不同的值,允许提供程序确定它是在进程内加载到 WMI 还是客户端应用程序。 如果位于 WMI 进程中,提供程序应使用 ClientLoadableCLSID 执行任何必要的客户端模拟。 如果位于客户端进程中,提供程序将继承调用它的线程的访问令牌。 有关实现进程内服务器的详细信息,请参阅组件对象模型 (COM) 文档。

作为进程内服务器,高性能提供程序使用刷新对象来使远程客户端的数据保持最新状态。 下表列出了必须为高性能提供程序实现的方法。

方法 功能
IWbemHiPerfProvider::QueryInstances 查询
IWbemHiPerfProvider::GetObjects 对象检索
IWbemHiPerfProvider::CreateRefresher 创建刷新程序
IWbemHiPerfProvider::CreateRefreshableObject 创建可刷新的实例对象
IWbemHiPerfProvider::CreateRefreshableEnum 创建可刷新的枚举器
IWbemHiPerfProvider::StopRefreshing 停止刷新枚举器或实例对象
IWbemRefresher::Refresh 创建刷新程序

 

使实例提供程序成为高性能提供程序