实现高性能接口

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

应将高性能提供程序实现为进程内服务器。 在实现进程内服务器的安全性时,应注意的一个功能是提供程序如何识别自己的位置。 进程内加载到 WMI 时,WMI 使用 CLSID 实例化提供程序。 进程内加载到客户端应用程序时,客户端应用程序使用 ClientLoadableCLSID 属性实例化提供程序。 通过向 CLSID 和 ClientLoadableCLSID 提供不同的值,提供程序可以确定它是在进程内加载到 WMI 还是加载到客户端应用程序。 如果位于 WMI 进程中,提供程序应使用 ClientLoadableCLSID 执行任何必要的客户端模拟。 如果位于客户端进程中,提供程序将继承调用其线程的访问令牌。 有关实现进程内服务器的详细信息,请参阅 MSDN 的 COM 部分

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

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

 

将实例提供程序转换为高性能提供程序