提供程序框架使用工具类

[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 中,DllGetClassObjectDllCanUnloadNowDllRegisterServerDllUnregisterServerDllMain 例程必须包装在 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 对象之间的时间跨度差的帮助程序函数。

 

注意

CHStringCHStringArray 类类似于 Microsoft 基础类 (MFC) CStringCStringArray。 WMI 版本的存在使得开发人员无需访问 MFC 即可访问字符串操作和比较方法。 WBEMTime WBEMTimeSpan 类也类似于 MFC CTimeCTimeSpan 类。 WMI 版本能够将时间存储到纳米秒的准确性,还可以与 BSTR 相互转换。 有关 CString、CStringArray、CTime 和 CTimeSpan 类的详细信息,请参阅 MFC 桌面应用程序文档。

 

WBEMTime 方法返回的 BSTR 值采用日期和时间格式:“yyymmdDHMMSS.mmmmsUUUU”

WBEMTimeSpan 方法返回的 BSTR 值采用间隔格式:“dddddddHHMMSS.mmmmmm:000”

尽管时间和时间跨度以纳秒为单位在内部存储,但它们不一定以纳秒精度存储。 这是因为可以使用精确到第二个时间(结构 tmtime_t)的时间格式构造 WBEMTime 对象。 添加人工小数位数不会增加准确性。