WMI 客户端工具
可以使用多种工具在驱动程序中测试 WMI 支持。
Wbemtest
操作系统包括 Wbemtest 工具,该工具提供了一个 GUI,可用于查询 WMI 类和类实例、更改属性值、执行方法和接收事件通知。 连接到“root\wmi”命名空间以测试驱动程序的支持。
Wmic
Microsoft Windows XP 和更高版本的操作系统包括 Wmic 工具,该工具提供可用于发出 WMI 相关命令以测试驱动程序的命令 shell。
Wmimofck
wmimofck 命令可用于检查二进制 MOF 文件的语法。 还可以使用 wmimofck -t 命令生成 VBScript 文件。 可以使用此脚本测试驱动程序对 WMI 类实例查询的处理。
wmimofck -w 命令生成网页,这些网页可以测试查询和设置类、执行方法和接收事件。 请注意,网页不支持执行使用复杂参数或返回值 (的方法,例如嵌入类数组) 。 在这种情况下,可以改用 Wbemtest。 有关 Wmimofck 的详细信息 ,请参阅使用 wmimofck.exe 。
还可以使用 WMI 用户模式 API 编写自定义 WMI 客户端应用程序来测试驱动程序的 WMI 支持。
有关此用户模式 API 的详细信息(它允许应用程序提供或使用 WMI 信息),请参阅Microsoft Windows SDK文档中的 Windows Management Instrumentation 信息。
WMI 客户端应用程序执行以下任务来测试驱动程序:
连接到 WMI。
若要连接到 WMI,应用程序可以调用组件对象模型 (COM) 函数 CoCreateInstance 来检索指向 IWbemLocator 接口的指针。 然后,应用程序调用 IWbemLocator::ConnectServer 方法连接到 WMI。 从此调用中,应用程序会收到指向 IWbemServices 接口的 指针。
访问驱动程序中的信息。
为了访问信息和注册事件,应用程序使用 IWbemServices 接口的方法。
WMI IRP 和系统事件日志
严格在内核模式下发生的 WMI 错误将记录到系统事件日志中。 可以使用事件查看器检查系统事件日志。 (有关详细信息 ,请参阅日志记录错误 。)
此类错误的两个main源是对 WMI 请求的不正确答复和对事件通知的错误参数。 例如,如果驱动程序返回格式不正确的 WMIREGINFO 数据结构以响应 IRP_MN_REGINFO 或 IRP_MN_REGINFO_EX 请求,系统会将这些数据记录到系统事件日志中。 系统还会记录 对 IoWMIWriteEvent 和 WmiFireEvent 的无效调用,以发出 WMI 事件通知。
WMI WDM 提供程序日志
WMI WDM 提供程序 (Wmiprov.dll) 处理时发生的 WMI 错误将记录到 WMI WDM 提供程序 Wmiprov.log 的日志文件中。 可以在 %windir%\system32\wbem\logs\wmiprov.log 中找到此文本文件。 此处记录了错误,例如驱动程序的 MOF 资源不正确或缺失。 如果 MOF 资源不正确,文件 %windir%\system32\mofcomp.log 可能包含与错误相关的其他信息。
在早于 Windows Vista 的 Windows 版本中,可以使用 Wmimgmt.msc 应用程序更改所有 WMI 提供程序的日志记录设置。 (在 Windows 98/Me 中,请改用 Wbemcntl。) 可以禁用或重新启用日志记录,更改保存 WMI 日志文件的目录,以及设置此类文件的最大大小。 有关详细信息,请参阅 WMI 日志文件。