Debugging Tools for Windows

!drivers

在Windows XP之前的操作系统中,!drivers 扩展命令显示目标机上所有已加载驱动的列表,以及它们的内存使用的摘要信息。

在Windows XP和之后版本的Windows中,!drivers扩展命令已经废除。使用lm命令来显示已加载驱动和其他的模块。命令lm t n显示的信息和旧的!drivers扩展非常类似。但是,它不会像!drivers一样显示驱动程序的内存使用情况,只显示驱动的开始和结束地址、映像名和时间戳。!vm!memusage扩展命令可以用来显示内存统计信息。

语法

!drivers [Flags

参数

Flags
可以是下面这些值的任意组合。(默认值为0x0。)
Bit 0 (0x1)
显示常驻(resident)内存和备用(standby)内存的信息。
Bit 1 (0x2)
如果设置了该位而第二位 (0x4)未设置,则显示的信息中包括常驻、备用和已锁定内存,以及 加载器入口地址(loader entry address)。如果设置了位2 ,则会显示驱动程序映像更长更详细的信息列表。包括文件头的信息以及节信息。
Bit 2 (0x4)
显示驱动映像的更长更详细的信息列表。包括每个节的信息。如果设置了bit 1 (0x2),则还包括头信息。

DLL

Windows 2000 Kdextx86.dll
Windows XP和之后 不可用

注释

该命令显示的说明如下表:

含义
Base 设备驱动代码的16进制起始地址。当造成崩溃的代码的内存地址落在某个驱动的基地址以及列表中下一个驱动的基地址之间时,它一般就是造成错误的驱动。例如,Ncrc810.sys的基地址是0x80654000。则该地址和0x8065a000之间的任何地址都是属于改驱动的。
Code Size 驱动代码的大小,以KB为单位,包括16进制和10进制。
Data Size 分配给驱动的数据的总大小,以KB为单位,包括16进制和10进制。
Locked (仅当使用标志0x2 时) 被驱动程序锁定的内存总数。
Resident (仅当使用0x1 或0x2时) 驱动实际驻留在物理内存中的内存大小。
Standby (仅当使用0x1 或0x2时) 备用的驱动内存大小。
Loader Entry (仅当使用标志0x2 时) 加载器入口点(loader entry)的地址。
Driver Name 驱动文件名。
Creation Time 驱动的链接日期。不要将它和可以被外部工具改变的驱动的文件时间混淆。链接日期是由编译器在驱动或可执行文件编译时设置的。它和文件时间可能比较接近,但不会总是一样的。

下面是一个被删节的该命令的示例:

kd> !drivers
Loaded System Driver Summary
Base     Code Size      Data Size      Driver Name  Creation Time
80080000 f76c0 (989 kb) 1f100 (124 kb) ntoskrnl.exe Fri May 26 15:13:00
80400000 d980  ( 54 kb) 4040  ( 16 kb) hal.dll      Tue May 16 16:50:34
80654000 3f00  ( 15 kb) 1060   ( 4 kb) ncrc810.sys  Fri May 05 20:07:04
8065a000 a460  ( 41 kb) 1e80   ( 7 kb) SCSIPORT.SYS Fri May 05 20:08:05

附加信息

查看Plug and Play调试获得该扩展命令的应用。关于驱动程序和它们的内存使用的信息,查看Windows Driver Kit (WDK) 文档,以及Mark Russinovich 和David Solomon编写的Microsoft Windows Internal

Build machine: CAPEBUILD