提供程序框架实用工具类

[WMI C++ 类是 WMI 提供程序框架的一部分,现在视为处于最终状态,对于影响这些库的非安全性相关问题,将不会提供进一步的开发、增强或更新。 所有新开发均应使用 MI API。]

提供程序框架库 Framedyd.dll(调试版本)和 Framedyn.dll(发布版本)实现了多个提供程序帮助程序类。 Framedyn.dll 中的某些函数已从头文件中移除。 若要继续使用这些函数,请在包含 Fwcommon.h 之前将 #define FRAMEWORK_ALLOW_DEPRECATED 添加到代码中。

可以卸载不再需要的单个提供程序。

若要使用此功能,必须在 MainDll.cpp 中对提供程序进行以下三项更改:

  • 在调用 CWbemProviderGlue::FrameworkLoginDLL 的函数 DllMain 中,必须添加第二个参数,该参数是指向长整型的指针。
  • 在调用 CWbemProviderGlue::FrameworkLogoffDLL 的函数 DllCanUnloadNow 中,必须添加第二个参数,该参数是指向长整型的指针。
  • 在创建 CWbemGlueFactory 实例的 DllGetClassObject 函数中,必须添加一个参数,该参数是指向长整型的指针。

在所有三种情况下,指向长整型的指针必须是相同的指针。

注意

在 Maindll.cpp 中, DllGetClassObject、DllCanUnloadNow、DllRegisterServer、DllUnregisterServer 和 DllMain 例程必须包装在 try/catch 块中。

 

注意

提供程序调试将生成与 Framedyd.lib 链接,用于Framedyd.dll。 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) CString 和 CStringArray。 存在 WMI 版本,这样开发人员无需访问 MFC 即可访问字符串操作和比较方法。 WBEMTimeWBEMTimeSpan 类也类似于 MFC CTime 和 CTimeSpan 类。 WMI 版本能够存储时间到纳秒的准确度,还可以与 BSTR 进行相互转换。 有关 CString、CStringArray、CTime 和 CTimeSpan 类的详细信息,请参阅 MSDN 上的 Microsoft 基础类

 

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

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

尽管时间和时间跨度以纳秒的形式存储在内部,但它们不一定以纳秒的准确度进行存储。 这是因为 WBEMTime 对象可以使用精确到秒的时间格式(struct tm 和 time_t)来构造。 人为添加小数位数不会提高准确性。