用于测试 WMI 驱动程序支持的常规方法

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_REGINFOIRP_MN_REGINFO_EX 请求,系统会将这些数据记录到系统事件日志中。 系统还会记录 对 IoWMIWriteEventWmiFireEvent 的无效调用,以发出 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 日志文件