NetRoc's Blog

N-Tech

 

WinDbg 文档翻译----77

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

posted on 2008-07-20 14:27 NetRoc 阅读(767) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。

导航

统计

常用链接

留言簿(7)

随笔档案(99)

文章分类(35)

文章档案(32)

Friends

Mirror

搜索

最新评论

阅读排行榜

评论排行榜