cc682/NetRoc
http://netroc682.spaces.live.com/
!defwrites
!defwrites 扩展显示缓存管理器(cache manager)使用到的内核变量的值。
语法
!defwrites
DLL
Windows NT 4.0
|
不可用
|
Windows 2000
|
Kdextx86.dll
|
Windows XP和之后
|
Kexts.dll
|
注释
当延迟写入("脏页面(dirty pages)")太大时,会造成页面写入减速(throttled)。该扩展命令允许查看是否系统到达了这个点。
下面是一个示例:
kd> !defwrites
*** Cache Write Throttle Analysis ***
CcTotalDirtyPages: 0 ( 0 Kb)
CcDirtyPageThreshold: 1538 ( 6152 Kb)
MmAvailablePages: 2598 ( 10392 Kb)
MmThrottleTop: 250 ( 1000 Kb)
MmThrottleBottom: 30 ( 120 Kb)
MmModifiedPageListHead.Total: 699 ( 2796 Kb)
Write throttles not engaged
这种情况下,没有脏页面。如果CcTotalDirtyPages 到达 1538 (CcDirtyPageThreshold 的值),在脏页面变少之前,写入都会变慢。
附加信息
关于写入延迟(write throttling)的信息,查看Mark Russinovich and David Solomon 编写的Microsoft Windows Internals。
关于其他缓存管理器扩展的信息,使用!cchelp扩展。
!devext
!devext 扩展显示各种总线上的设备的总线相关设备扩展信息(bus-specific device extension information)。
语法
!devext Address TypeCode
参数
Address
指定要显示的设备扩展的16进制地址。
TypeCode
指示拥有要显示的设备扩展的对象类型。类型代码不区分大小写,可能的类型代码如下:
类型代码
|
对象
|
PCI
|
(仅Windows 2000) PCI设备扩展(device extension)
|
ISAPNP
|
ISA PnP设备扩展
|
PCMCIA
|
PCMCIA设备扩展
|
HID
|
HID 设备扩展
|
USBD
|
(仅Windows 2000) USB 总线驱动扩展
|
UHCD
|
(仅Windows 2000) UHCD host controller 扩展
|
OpenHCI
|
(仅Windows 2000) Open HCI host controller 扩展
|
USBHUB
|
(仅Windows 2000) USB hub 扩展
|
MF
|
(仅Windows 2000) MF 设备扩展
|
DLL
Windows NT 4.0
|
不可用
|
Windows 2000
|
Kdextx86.dll
|
Windows XP和之后
|
Kexts.dll
|
注释
!usbhub、 !hidfdo、以及 !hidpdo 扩展命令已经废除,它们的功能被整合到!devext中。
对于!devext不再支持的对象类型,可以使用dt (Display Type) 调试器命令。
下面是一个ISA PnP设备扩展的示例:
kd> !devext e0000165fff32190 ISAPNP
ISA PnP FDO @ 0x00000000, DevExt @ 0xe0000165fff32190, Bus # 196639
Flags (0x854e2530) DF_ACTIVATED, DF_QUERY_STOPPED,
DF_STOPPED, DF_RESTARTED_NOMOVE,
DF_BUS
Unknown flags 0x054e2000
NumberCSNs - -536870912
ReadDataPort - 0x0000000d (mapped)
AddressPort - 0x00000000 (not mapped)
CommandPort - 0x00000000 (not mapped)
DeviceList - 0xe000000085007b50
CardList - 0x00000000
PhysicalBusDevice - 0x00000000
AttachedDevice - 0x00000000
SystemPowerState - Unspecified
DevicePowerState - Unspecified
下面是一个PCI设备的示例:
kd> !devext e0000000858c31b0 PCI
PDO Extension, Bus 0x0, Device 0, Function 0.
DevObj 0xe0000000858c3060 PCI Parent Bus FDO DevExt 0xe0000000858c4960
Device State = PciNotStarted
Vendor ID 8086 (INTEL) Device ID 123D
Class Base/Sub 08/00 (Base System Device/Interrupt Controller)
Programming Interface: 20, Revision: 01, IntPin: 00, Line Raw/Adj 00/00
Enables ((cmd & 7) = 106): BM Capabilities Pointer = <none>
CurrentState: System Working, Device D0
WakeLevel: System Unspecified, Device Unspecified
Requirements: <none>
附加信息
查看 Plug and Play调试获得该扩展命令的应用。关于设备扩展的更多信息,查看Windows Driver Kit (WDK)文档。
!devnode
!devnode 扩展显示设备树中的某个节点的信息。
语法
!devnode Address [Flags] [Service]
!devnode 1
!devnode 2
参数
Address
指定要显示节点的设备扩展的16进制地址。如果为0,则显示主设备树的根(the root of the main device tree)。
Flags
指定输出的显示级别。可以是下面这些位的任意组合:
Bit 0 (0x1)
显示该设备节点的所有孩子。
Bit 1 (0x2)
显示使用的资源 (CM_RESOURCE_LIST)。包含IRP_MN_QUERY_RESOURCES 报告的引导配置(boot configuration ),以及为IRP_MN_START_DEVICE 的AllocatedResources参数中的设备分配的资源。
Bit 2 (0x4)
显示中包含IRP_MN_FILTER_RESOURCE_REQUIREMENTS报告的必须的资源(IO_RESOURCE_REQUIREMENTS_LIST)。
Bit 3 (0x8)
显示中包含为IRP_MN_START_DEVICE 的AllocatedResourcesTranslated 参数中的设备分配的已转换资源(translated resources)的列表。
Bit 4 (0x10)
只显示未启动的设备节点。
Bit 5 (0x20)
只显示有问题的设备节点。(包含标志位DNF_HAS_PROBLEM 或DNF_HAS_PRIVATE_PROBLEM的节点)
Service
指定服务的名字。如果包含,则只显示该服务所驱动的设备节点。(如果Flags 包含位0x1,则显示该服务驱动的设备节点以及所有子节点。)
DLL
Windows NT 4.0
|
不可用
|
Windows 2000
|
Kdextx86.dll
|
Windows XP和之后
|
Kexts.dll
|
注释
!devnode 1 命令显示设备对象的pending removals列表。
!devnode 2 命令列出设备对象的所有pending ejects。
使用!devnode 0 1查看整个设备树。
附加信息
查看Plug and Play调试获得该扩展命令的应用。关于设备树的更多信息,查看Windows Driver Kit (WDK) 文档,以及Mark Russinovich 和David Solomon编写的 Microsoft Windows Internals。
!devobj
!devobj 扩展显示DEVICE_OBJECT 对象的详细信息。
语法
!devobj DeviceObject
参数
DeviceObject
指定设备对象。在Windows NT 4.0中,必须是DEVICE_OBJECT 结构的16进制地址。在Windows 2000和之后的系统中,可以是该结构的16进制地址或者设备名。
DLL
Windows NT 4.0
|
Kdextx86.dll
|
Windows 2000
|
Kdextx86.dll
|
Windows XP和之后
|
Kexts.dll
|
注释
如果DeviceObject 指定设备名,但是没有提供前缀,则假定使用\Device\前缀。注意命令会在使用表达式求职器之前检查DeviceObject 是否是合法的地址或者设备名。
显示的信息中包含对象的设备名、设备的当前IRP的信息、以及设备的队列中挂起的IRP的地址列表。还包含该对象上层的设备对象(作为"AttachedDevice"列出)的信息,以及在该设备下层的信息(在"AttachedTo"中列出)。
可以使用!drvobj 或!devnode 获得设备对象地址。
下面是一个示例:
kd> !devnode
Dumping IopRootDeviceNode (= 0x80e203b8)
DevNode 0x80e203b8 for PDO 0x80e204f8
Parent 0000000000 Sibling 0000000000 Child 0x80e56dc8
InstancePath is "HTREE\ROOT\0"
State = DeviceNodeStarted (0x308)
Previous State = DeviceNodeEnumerateCompletion (0x30d)
StateHistory[04] = DeviceNodeEnumerateCompletion (0x30d)
StateHistory[03] = DeviceNodeStarted (0x308)
StateHistory[02] = DeviceNodeEnumerateCompletion (0x30d)
StateHistory[01] = DeviceNodeStarted (0x308)
StateHistory[00] = DeviceNodeUninitialized (0x301)
StateHistory[19] = Unknown State (0x0)
.....
StateHistory[05] = Unknown State (0x0)
Flags (0x00000131) DNF_MADEUP, DNF_ENUMERATED,
DNF_IDS_QUERIED, DNF_NO_RESOURCE_REQUIRED
DisableableDepends = 11 (from children)
kd> !devobj 80e204f8
Device object (80e204f8) is for:
\Driver\PnpManager DriverObject 80e20610
Current Irp 00000000 RefCount 0 Type 00000004 Flags 00001000
DevExt 80e205b0 DevObjExt 80e205b8 DevNode 80e203b8
ExtensionFlags (0000000000)
Device queue is not busy.
附加信息
查看Plug and Play调试获得该扩展命令的应用。关于设备对象的更多信息,查看Windows Driver Kit (WDK) 文档,以及Mark Russinovich 和David Solomon编写的 Microsoft Windows Internals。
!devstack
!devstack 扩展显示设备对象关联的设备栈的格式化后的信息。
语法
!devstack DeviceObject
参数
DeviceObject
指定设备对象。可以是DEVICE_OBJECT 结构的16进制地址或者设备名。
DLL
Windows NT 4.0
|
不可用
|
Windows 2000
|
Kdextx86.dll
|
Windows XP和之后
|
Kexts.dll
|
注释
如果DeviceObject 指定设备名,但是没有提供前缀,则假定使用\Device\前缀。注意命令会在使用表达式求职器之前检查DeviceObject 是否是合法的地址或者设备名。
下面是示例:
kd> !devstack e000000085007b50
!DevObj !DrvObj !DevExt ObjectName
e0000165fff32040 \Driver\kmixer e0000165fff32190
> e000000085007b50 \Driver\swenum e000000085007ca0 KSENUM#00000005
!DevNode e0000165fff2e010 :
DeviceInst is "SW\{b7eafdc0-a680-11d0-96d8-00aa0051e51d}\{9B365890-165F-11D0-A195-0020AFD156E4}"
ServiceName is "kmixer"
附加信息
关于设备栈的更多信息,查看Windows Driver Kit (WDK) 文档。
!dflink
!dflink 扩展以前序显示链表。
语法
!dflink Address [Count] [Bias]
参数
Address
指定LIST_ENTRY 结构的地址。从这个节点开始进行显示。
Count
指定要显示的链表成员的最大个数。如果省略,默认值为32。
Bias
指定每个指针要忽略的位的掩码。在跟随到下一个位置之前,每个Flink 地址都会进行AND运算(和NOT Bias)。默认值为0(即不忽略任何位)。
DLL
Windows NT 4.0
|
不可用
|
Windows 2000
|
Kdextx86.dll
|
Windows XP和之后
|
Kexts.dll
|
注释
!dflink 扩展通过LIST_ENTRY 结构的Flink 域进行遍历,并显示每个地址的最多4个ULONG。要用其它方向来遍历,使用!dblink。
dl (Display Linked List) 命令比!dblink 和!dflink更加通用。
!diskspace
!diskspace 扩展显示目标机硬盘的可用空间总数。
语法
!diskspace Drive:
参数
Drive
指定磁盘的盘符。Drive之后的冒号 (:) 可选。
DLL
Windows NT 4.0
|
Kext.dll
|
Windows 2000
|
Kext.dll
|
Windows XP和之后
|
Kext.dll
|
注释
示例如下:
kd> !diskspace c:
Checking Free Space for c: ..........
Cluster Size 0 KB
Total Clusters 4192901 KB
Free Clusters 1350795 KB
Total Space 1 GB (2096450 KB)
Free Space 659.567871 MB (675397 KB)
kd> !diskspace f:
Checking Free Space for f:
f: is a CDROM drive. This function is not supported!
!dma
!dma 扩展显示直接内存访问(Direct Memory Access (DMA))子系统的信息,以及驱动程序验证器的DMA Verifier 选项。
语法
!dma
!dma Adapter [Flags]
参数
Adapter
指定要显示的DMA适配器的16进制地址。如果是0,则显示所有的DMA适配器。
Flags
指定显示中包含的信息。可以是下面这些位的任意组合。默认值为0x1。
Bit 0 (0x1)
显示一般的适配器信息。
Bit 1 (0x2)
显示映射记录(map register)信息。(仅当DMA Verification激活时。)
Bit 2 (0x4)
显示公共缓冲区(common buffer)信息。 (仅当DMA Verification激活时。)
Bit 3 (0x8)
显示分散/聚合列表(scatter/gather list)信息。 (仅当DMA Verification激活时。)
Bit 4 (0x10)
显示硬件设备的设备描述(device description)。 (仅当DMA Verification激活时。)
Bit 5 (0x20)
显示等待上下文块(Wait context block)的信息。
DLL
Windows NT 4.0
|
不可用
|
Windows 2000
|
不可用
|
Windows XP和之后
|
Kdexts.dll
|
注释
使用非法参数(例如,!dma 1)会显示简单的帮助文本。
不带参数使用!dma 扩展时,显示所有DMA适配器和它们的地址的简明列表。这可以用来获得在更长的命令形式中使用的适配器地址。
下面是一个如何在驱动程序验证器的DMA Verification 选项打开时使用该扩展的示例:
0:kd> !dma
Dumping all DMA adapters...
Adapter: 82faebd0 Owner: SCSIPORT!ScsiPortGetUncachedExtension
Adapter: 82f88930 Owner: SCSIPORT!ScsiPortGetUncachedExtension
Adapter: 82f06cd0 Owner: NDIS!NdisMAllocateMapRegisters
Master adapter: 80076800
从输出中,可以看到系统中有三个DMA适配器。SCSIPORT 有两个, NDIS拥有第三个。要查看NDIS适配器的详细信息,可以对它的地址使用!dma:
0:kd> !dma 82f06cd0
Adapter: 82f06cd0 Owner: NDIS!NdisMAllocateMapRegisters (0x9fe24351)
MasterAdapter: 00000000
Adapter base Va 00000000
Map register base: 00000000
WCB: 82f2b604
Map registers: 00000000 mapped, 00000000 allocated, 00000002 max
Dma verifier additional information:
DeviceObject: 82f98690
Map registers: 00000840 allocated, 00000000 freed
Scatter-gather lists: 00000000 allocated, 00000000 freed
Common buffers: 00000004 allocated, 00000000 freed
Adapter channels: 00000420 allocated, 00000420 freed
Bytes mapped since last flush: 000000f2
第一块数据是HAL开发者可以用来调试问题的特定数据。对于自己的情况,"Dma verifier additional information"下面才是感兴趣的数据。在这个例子中,可以看到NDIS分配了0x840个映射记录( map registers)。 这是一个很大的数字,特别是因为NDIS指出了它只需要使用最多2个映射记录。该适配器显然没有用到分散/聚合列表(scatter/gather lists),并且释放了(put away)它所有的adapter channel。查看映射寄存记录更详细的信息:
0:kd> !dma 82f06cd0 2
Adapter: 82f06cd0 Owner: NDIS!NdisMAllocateMapRegisters
...
Map register file 82f06c58 (0/2 mapped)
Double buffer mdl: 82f2c188
Map registers:
82f06c80: Not mapped
82f06c8c: Not mapped
Map register file 82f06228 (1/2 mapped)
Double buffer mdl: 82f1b678
Map registers:
82f06250: 00bc bytes mapped to f83c003c
82f0625c: Not mapped
Map register file 82fa5ad8 (1/2 mapped)
Double buffer mdl: 82f1b048
Map registers:
82fa5b00: 0036 bytes mapped to 82d17102
82fa5b0c: Not mapped
...
例中,可以看到特定的映射记录已经被映射了。每个map register file 是驱动分配的一个映射记录。即,它对应于一次AllocateAdapterChannel 调用。当一些驱动在需要时每次创建一个,并且用完之后又释放掉的情况下,NDIS搜集了大量的这种映射记录文件(map register file)。
映射记录文件也是以"MapRegisterBase"为名字返回给设备的地址。注意DMA验证器仅hook每个驱动的前64个映射记录(map register)。剩下的由于空间原因被忽略掉(每个映射记录对应三个物理页面)。
这个例子中,有两个映射记录文件正在被使用。这意味着驱动已经映射了对硬件可见的缓冲区。对第一个来说,有 0xBC个字节映射到了系统虚拟地址 0xF83C003C。
下面是对公共缓冲区的查看:
0:kd> !dma 82f06cd0 4
Adapter: 82f06cd0 Owner: NDIS!NdisMAllocateMapRegisters
...
Common buffer allocated by NDIS!NdisMAllocateSharedMemory:
Length: 1000
Virtual address: 82e77000
Physical address: 2a77000
Common buffer allocated by NDIS!NdisMAllocateSharedMemory:
Length: 12010
Virtual address: 82e817f8
Physical address: 2a817f8
Common buffer allocated by NDIS!NdisMAllocateSharedMemory:
Length: 4300
Virtual address: 82e95680
Physical address: 2a95680
Common buffer allocated by NDIS!NdisMAllocateSharedMemory:
Length: 4800
Virtual address: 82e9d400
Physical address: 2a9d400
这里是比较清楚直接,有四个不同长度的公共缓冲区。物理地址和虚拟地址也显示出来了。
附加信息
关于驱动程序验证器的更多信息,查看Windows Driver Kit (WDK) 文档。关于DMA的信息,查看Windows Driver Kit (WDK) 文档以及Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals。
!dpa
!dpa 扩展显示池(pool)的分配信息。
语法
!dpa Options
!dpa -?
参数
Options
必须是下面这些选项中的一个:
-c
显示当前的池分配统计。
-v
显示当前所有的池分配。
-vs
显示中包含堆栈回溯。
-f
显示失败的池分配。
-r
显示free pool allocations。
-p Ptr
显示所有包含指针Ptr的池分配。
-?
在调试器命令窗口中显示该扩展的简单帮助文本。
DLL
Windows NT 4.0
|
不可用
|
Windows 2000
|
不可用
|
Windows XP和之后
|
Kdexts.dll
|
注释
该扩展药工作,必须在Win32k.sys 中启用了pool instrumentation。
!dpcs
!dpcs 扩展显示指定的处理器上的延迟过程调用(DPC)队列。
语法
!dpcs [Processor]
参数
Processor
指定处理器。如果省略Processor ,则显示所有处理器的DPC队列。
DLL
Windows NT 4.0
|
不可用
|
Windows 2000
|
不可用
|
Windows XP和之后
|
Kdexts.dll
|
附加信息
关于DPC的信息,查看Windows Driver Kit (WDK) 文档,以及Mark Russinovich and David Solomon 编写的Microsoft Windows Internals。
!driveinfo
!driveinfo 扩展显示指定驱动器上的卷信息(volume information)。
语法
!driveinfo Drive[:]
!driveinfo
参数
Drive
指定一个驱动器。驱动器名后面的冒号是可选的。
无参数
在调试器命令窗口中显示简单的帮助文本。
DLL
Windows NT 4.0
|
不可用
|
Windows 2000
|
不可用
|
Windows XP和之后
|
Kdexts.dll
|
注释
该扩展命令显示的驱动器信息是通过查询基础的文件系统获得的,例如:
kd> !driveinfo c:
Drive c:, DriveObject e136cd88
Directory Object: e1001408 Name: C:
Target String is '\Device\HarddiskVolume1'
Drive Letter Index is 3 (C:)
Volume DevObj: 82254a68
Vpb: 822549e0 DeviceObject: 82270718
FileSystem: \FileSystem\Ntfs
Volume has 0x229236 (free) / 0x2ee1a7 (total) clusters of size 0x1000
8850.21 of 12001.7 MB free
!drivers
在Windows XP之前的操作系统中,!drivers 扩展命令显示目标机上所有已加载驱动的列表,以及它们的内存使用的摘要信息。
在Windows XP和之后版本的Windows中,!drivers扩展命令已经废除。使用 lm 命令来显示已加载驱动和其他的模块。命令 lm t n显示的信息和旧的!drivers扩展非常类似。
语法
!drivers [Flags]
参数
Flags
可以是下面这些值得任意组合。(默认值为0x0。)
Bit 0 (0x1)
显示常驻(resident)内存和备用(standby)内存的信息。
Bit 1 (0x2)
在Windows NT 4.0中,显示更长更详细的驱动映像列表的信息。包括头信息。如果设置了位2 (0x4),则还包括节信息。
在Windows 2000中,如果设置了该位而第二位 (0x4)未设置,则显示的信息中包括常驻、备用和已锁定内存,以及 加载器入口地址(loader entry address)。如果设置了位2 ,则功能和Windows NT 4.0中一样。
Bit 2 (0x4)
显示驱动映像的更长更详细的信息列表。包括每个节的信息。如果设置了bit 1 (0x2),则还包括头信息。
DLL
Windows NT 4.0
|
Kdextx86.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。
!drvobj
!drvobj 扩展命令显示DRIVER_OBJECT 的详细信息。
语法
Windows NT 4.0的语法
!drvobj DriverObject
Windows 2000和之后的语法
!drvobj DriverObject [Flags]
参数
DriverObject
指定驱动对象。在Windows NT 4.0中,这必须是 DRIVER_OBJECT 结构的16进制地址。在Windows 2000和之后的系统中,可以是DRIVER_OBJECT的16进制地址或者驱动的名字。
Flags
(Windows 2000和之后) 可以是下面这些位的任意组合。(默认为0x01。)
Bit 0 (0x1)
显示驱动拥有的设备对象。
Bit 1 (0x2)
显示驱动的dispatch例程的入口点。
Bit 2 (0x4)
显示驱动的设备对象的详细信息(需要设置bit 0)。
DLL
Windows NT 4.0
|
Kdextx86.dll
|
Windows 2000
|
Kdextx86.dll
|
Windows XP和之后
|
Kdexts.dll
|
注释
如果DriverObject 指定设备名,但是没有带前缀,则假定使用\Driver\ 前缀。注意该命令在使用表达式求值器前会检查DriverObject是否是合法地址或者设备名。
如果DriverObject 是一个地址,它必须是DRIVER_OBJECT结构的地址。这可以通过检查传递给DriverEntry 函数的参数得到。
该扩展命令会显示指定的驱动程序创建的所有设备对象的立标。还会显示该驱动对象注册的所有fast I/O例程。
下面是一个Symbios Logic 810 SCSI 小端口驱动程序的例子:
kd> bp DriverEntry // breakpoint at DriverEntry
kd> g
symc810!DriverEntry+0x40:
80006a20: b07e0050 stl t2,50(sp)
kd> r a0 //address of DevObj (the first parameter)
a0=809d5550
kd> !drvobj 809d5550 // display the driver object
Driver object is for:
\Driver\symc810
Device Object list:
809d50d0
还可以使用!devobj 809d50d0 来获得设备对象的信息。
附加信息
查看Plug and Play 调试获得该扩展命令的应用。关于驱动对象的信息,查看Windows Driver Kit (WDK)文档,以及Mark Russinovich 和David Solomon 编写的Microsoft Windows Internal。
!dskheap
!dskheap 扩展显示指定会话的桌面堆信息(desktop heap information)。
语法
!dskheap [-v] [-s SessionID]
参数
-v
显示更详细的输出。
-s SessionID
指定会话。如果省略该参数,则显示会话0的桌面堆信息。
DLL
Windows NT 4.0
|
未使用
|
Windows 2000
|
未使用
|
Windows XP和之后
|
Kdexts.dll
|
注释
桌面堆信息是由窗口站(window station) 来维护的。
下面是两个例子:
kd> !dskheap -s 3
Winstation\Desktop Heap Size(KB) Used Rate(%)
------------------------------------------------------------
WinSta0\Screen-saver 3072 0%
WinSta0\Default 3072 0%
WinSta0\Disconnect 64 4%
WinSta0\Winlogon 128 5%
------------------------------------------------------
Total Desktop: ( 6336 KB - 4 desktops)
Session ID: 3
============================================================
kd> !dskheap
Winstation\Desktop Heap Size(KB) Used Rate(%)
------------------------------------------------------------
WinSta0\Default 3072 0%
WinSta0\Disconnect 64 4%
WinSta0\Winlogon 128 9%
Service-0x0-3e7$\Default 512 4%
Service-0x0-3e5$\Default 512 0%
Service-0x0-3e4$\Default 512 1%
SAWinSta\SADesktop 512 0%
------------------------------------------------------
Total Desktop: ( 5312 KB - 7 desktops)
Session ID: 0
============================================================
附加信息
关于桌面或桌面堆的信息,查看Microsoft Windows SDK 文档,以及Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals。