提供程序框架使用工具类
[WMI C++ 类是 WMI 提供程序框架的一部分,现在视为处于最终状态,对于影响这些库的非安全性相关问题,将不会提供进一步的开发、增强或更新。 所有新开发均应使用 MI API。]
提供程序框架库 Framedyd.dll(调试版本)和Framedyn.dll(发布版本)实现多个提供程序帮助程序类。 Framedyn.dll 中的某些函数已从头文件中删除。 若要继续使用这些函数,请在包括 Fwcommon.h 之前将 #define FRAMEWORK_ALLOW_DEPRECATED
添加到代码中。
您可以卸载不再需要的各个提供程序。
若要使用此功能,必须在 MainDll.cpp 中对提供商进行以下三项更改:
- 在调用 CWbemProviderGlue::FrameworkLoginDLL 的函数 DllMain 中,必须添加指向 long 的指针的第二个参数。
- 在调用 CWbemProviderGlue::FrameworkLogoffDLL 的函数 DllCanUnloadNow 中,必须添加指向 long 的指针的第二个参数。
- 在创建 CWbemGlueFactory 实例的函数 DllGetClassObject 中,必须添加指向长指针的参数。
在所有三种情况下,指向长指针的指针必须是相同的指针。
注意
在 Maindll.cpp 中,DllGetClassObject、DllCanUnloadNow、DllRegisterServer、DllUnregisterServer 和 DllMain 例程必须包装在 try/catch 块中。
注意
提供程序调试为 Framedyd.dll 与 Framedyd.lib 建立链接。 Framedyd.dll 位于系统路径中不包含的 Microsoft Windows 软件开发工具包 (SDK) \bin 目录中。 当使用 Windows 管理服务测试提供程序的调试版本时,框架提供程序将无法加载,因为找不到 Framedyd.dll 或其依赖项之一。 因此,必须将 Framedyd.dll 从 Windows SDK \bin 目录复制到 \system32\wbem 目录,或将 Windows SDK \bin 目录添加到系统搜索路径。
下表列出了提供程序框架实用工具类。
实用工具类 | 说明 |
---|---|
CHString | 为 WMI 提供字符串比较和操作函数。 |
CHStringArray | 包含用于创建和操作 CHString 的数组。 |
TRefPointerCollection | 授予对指针的容器类的访问权限。 |
WBEMTime | 辅助各种 Windows 和 ANSI C 运行时格式之间的转换。 |
WBEMTimeSpan | 包含用于计算和保存两个 WBEMTime 对象之间的时间跨度差的帮助程序函数。 |
注意
CHString 和 CHStringArray 类类似于 Microsoft 基础类 (MFC) CString 和 CStringArray。 WMI 版本的存在使得开发人员无需访问 MFC 即可访问字符串操作和比较方法。 WBEMTime 和 WBEMTimeSpan 类也类似于 MFC CTime 和 CTimeSpan 类。 WMI 版本能够将时间存储到纳米秒的准确性,还可以与 BSTR 相互转换。 有关 CString、CStringArray、CTime 和 CTimeSpan 类的详细信息,请参阅 MFC 桌面应用程序文档。
WBEMTime 方法返回的 BSTR 值采用日期和时间格式:“yyymmdDHMMSS.mmmmsUUUU”
WBEMTimeSpan 方法返回的 BSTR 值采用间隔格式:“dddddddHHMMSS.mmmmmm:000”
尽管时间和时间跨度以纳秒为单位在内部存储,但它们不一定以纳秒精度存储。 这是因为可以使用精确到第二个时间(结构 tm 和 time_t)的时间格式构造 WBEMTime 对象。 添加人工小数位数不会增加准确性。