cc682/NetRoc
http://netroc682.spaces.live.com/
!gbl
!gbl 扩展显示目标机的ACPI BIOS 根系统描述表(ACPI BIOS Root System Description (RSDT) table)的头信息。
语法
!gbl [-v]
参数
-v
详细输出。显示表中的详细信息。
DLL
|
Windows NT 4.0
|
不可用
|
|
Windows 2000
|
不可用
|
|
Windows XP和之后
|
Kdexts.dll
|
附加信息
关于ACPI和ACPI表的更多信息,查看其他ACPI调试扩展以及
ACPI Specification站点。也可以查看Microsoft Windows SDK文档、Windows Driver Kit (WDK)文档、以及Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals。
!gentable
!gentable 扩展显示某个RTL_GENERIC_TABLE 。
语法
Windows 2000中的语法
!gentable Address
Windows XP和之后的语法
!gentable Address [Flag]
参数
Address
指定RTL_GENERIC_TABLE的地址。
Flag
(Windows XP 和之后) 指定表的来源。如果Flag 是1,则使用AVL表,如果Flag 为0或者省略,则使用non-AVL 表。在Windows 2000中,总是使用non-AVL表。
DLL
|
Windows NT 4.0
|
不可用
|
|
Windows 2000
|
Kdextx86.dll
|
|
Windows XP和之后
|
Kdexts.dll
|
!hidppd
!hidppd 扩展显示HIDP_PREPARSED_DATA 结构的内容。
语法
!hidppd Address
参数
Address
指定HIDP_PREPARSED_DATA 结构的16进制地址。
DLL
|
Windows NT 4.0
|
不可用
|
|
Windows 2000
|
Kdextx86.dll
|
|
Windows XP和之后
|
Kdexts.dll
|
附加信息
关于human input devices (HID)的信息,查看Windows Driver Kit (WDK) 文档。
!ib, !id, !iw
!ib、 !id、和 !iw 命令已经废除。使用ib, id, iw (Input from Port)命令替代。
!icpleak
!icpleak 扩展在系统中查找队列中条目个数最大的I/O completion对象。
语法
!icpleak [HandleFlag]
参数
HandleFlag
如果设置了该标志,则还会显示拥有该最大的队列条目个数的对象句柄的所有进程。
DLL
|
Windows NT 4.0
|
不可用
|
|
Windows 2000
|
不可用
|
|
Windows XP和之后
|
Kdexts.dll
|
注释
该扩展在I/O completion池存在泄漏的情况下很有用。I/O completion pool 泄露在进程调用PostQueuedCompletionStatus 分配I/O completion packet,但是又没有调用GetQueuedCompletionStatus 来释放,或者进程将completion entries排队到某个端口,但是又没有任何线程会取出这些entries时就会发生。通过运行!poolused 扩展并且检查ICP pool tag的值来发现泄露。如果有使用ICP tag的池(pool),那么就可能发生了泄露。
该扩展只有在系统维护了类型列表(type lists)时才能工作。如果设置了HandleFlag并且系统中有很多进程,则可能需要运行很长时间。
可以按下CTRL+BREAK (WinDbg中) 或者CTRL+C (KD中)来中止命令。
附加信息
关于I/O完成端口( I/O completion port)的信息,查看Mark Russinovich 和David Solomon编写的 Microsoft Windows Internals。
!idt
!idt 扩展显示指定的中断分配表(interrupt dispatch table (IDT))中的中断服务例程(interrupt service routine (ISR))。
语法
!idt IDT
!idt [-a]
!idt -?
参数
IDT
指定要显示的IDT。
-a
没有指定IDT 时,会以简短的格式显示目标机上所有处理器的IDT。如果指定了-a ,则显示所有IDT的ISR。
-?
在调试器命令窗口中显示该命令的帮助文本。
DLL
|
Windows NT 4.0
|
不可用
|
|
Windows 2000
|
不可用
|
|
Windows XP和之后
|
Kdexts.dll
|
该扩展命令只能对x64或者x86目标机使用。
注释
下面是该扩展命令的示例:
0: kd> !idt
Dumping IDT:
37:806ba78c hal!PicSpuriousService37
3d:806bbc90 hal!HalpApcInterrupt
41:806bbb04 hal!HalpDispatchInterrupt
50:806ba864 hal!HalpApicRebootService
63:8641376c VIDEOPRT!pVideoPortInterrupt (KINTERRUPT 86413730)
73:862aa044 portcls!CInterruptSyncServiceRoutine (KINTERRUPT 862aa008)
82:86594314 atapi!IdePortInterrupt (KINTERRUPT 865942d8)
83:86591bec SCSIPORT!ScsiPortInterrupt (KINTERRUPT 86591bb0)
92:862b53dc serial!SerialCIsrSw (KINTERRUPT 862b53a0)
93:86435844 i8042prt!I8042KeyboardInterruptService (KINTERRUPT 86435808)
a3:863b366c i8042prt!I8042MouseInterruptService (KINTERRUPT 863b3630)
a4:8636bbec USBPORT!USBPORT_InterruptService (KINTERRUPT 8636bbb0)
b1:86585bec ACPI!ACPIInterruptServiceRoutine (KINTERRUPT 86585bb0)
b2:863c0524 serial!SerialCIsrSw (KINTERRUPT 863c04e8)
b4:86391a54 NDIS!ndisMIsr (KINTERRUPT 86391a18)
USBPORT!USBPORT_InterruptService (KINTERRUPT 863ae890)
c1:806ba9d0 hal!HalpBroadcastCallService
d1:806b9dd4 hal!HalpClockInterrupt
e1:806baf30 hal!HalpIpiHandler
e3:806baca8 hal!HalpLocalApicErrorService
fd:806bb460 hal!HalpProfileInterrupt
附加信息
关于ISR和IDT的信息,查看Windows Driver Kit (WDK) 文档,以及Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals。
关于如何显示Itanium目标机上的中断向量表(interrupt vector table),查看!ivt。
!ih
!ih 显示指定处理器上的中断历史纪录。
语法
!ih Processor
参数
Processor
指定某个处理器。如果省略Processor ,则使用当前处理器。
DLL
|
Windows NT 4.0
|
不可用
|
|
Windows 2000
|
不可用
|
|
Windows XP和之后
|
Kdexts.dll
|
该命令只能对Itanium目标机使用。
注释
该扩展在不涉及程序计数器符号(program counter symbols)的情况下显示中断历史纪录。要使用程序计数器符号来显示中断历史纪录,使用!ihs扩展。在引导入口选项中添加/configflag=32来启用中断历史纪录。
下面是该命令输出的示例:
kd> !ih
Total # of interruptions = 2093185
Vector IIP IPSR ExtraField
VHPT FAULT e0000000830d3190 1010092a6018 IFA= 6fc00a0200c
VHPT FAULT e0000000830d33d0 1010092a6018 IFA= 1ffffe00001de2d0
VHPT FAULT e0000000830d33d0 1010092a6018 IFA= 1ffffe01befff338
VHPT FAULT e0000000830d3190 1010092a6018 IFA= 6fc00a0200c
VHPT FAULT e0000000830d33d0 1010092a6018 IFA= 1ffffe00001d9188
VHPT FAULT e0000000830d3880 1010092a6018 IFA= 1ffffe01befff250
VHPT FAULT e0000000830d3fb0 1010092a6018 IFA= e0000165f82dc1c0
VHPT FAULT e000000083063390 1010092a6018 IFA= e0000000fffe0018
THREAD SWITCH e000000085896040 e00000008588c040 OSP= e0000165f82dbd40
VHPT FAULT e00000008329b130 1210092a6018 IFA= e0000165f7edaf30
VHPT FAULT e0000165f7eda640 1210092a6018 IFA= e0000165fff968a9
PROCESS SWITCH e0000000818bbe10 e000000085896040 OSP= e0000165f8281de0
VHPT FAULT e00000008307cfc0 1010092a2018 IFA= e00000008189fe50
EXTERNAL INTERRUPT e0000000830623b0 1010092a6018 IVR= d0
VHPT FAULT e00000008314e310 1010092a2018 IFA= e0000165f88203f0
VHPT FAULT e000000083580760 1010092a2018 IFA= e0000000f00ff3fd
PROCESS SWITCH e00000008558c990 e0000000818bbe10 OSP= e00000008189fe20
VHPT FAULT e00000008307cfc0 1010092a2018 IFA= e0000165f02433f0
VHPT FAULT 77cfbda0 1013082a6018 IFA= 77cfbda0
VHPT FAULT 77cfbdb0 1213082a6018 IFA= 6fbfee0ff98
DATA ACCESS BIT 77b8e150 1213082a6018 IFA= 77c16ab8
VHPT FAULT 77ed5d60 1013082a6018 IFA= 6fbfffa6048
DATA ACCESS BIT 77ed5d60 1213082a6018 IFA= 77c229c0
DATA ACCESS BIT 77b8e1b0 1013082a6018 IFA= 77c1c320
USER SYSCALL 77cafa40 10082a6018 Num= 42
VHPT FAULT e00000008344dc20 1010092a6018 IFA= e000010600703784
...
!ihs
!ihs 扩展使用程序计数器符号(program counter symbols)来显示指定处理器的中断历史纪录。
语法
!ihs Processor
参数
Processor
指定某个处理器。如果省略Processor ,则使用当前处理器。
DLL
|
Windows NT 4.0
|
不可用
|
|
Windows 2000
|
不可用
|
|
Windows XP和之后
|
Kdexts.dll
|
该命令只能对Itanium目标机使用。
注释
使用!ih 扩展在不引用程序计数器符号的情况下显示中断历史纪录。在引导入口选项中添加/configflag=32来启用中断历史纪录。
下面是该扩展命令的输出示例:
kd> !ihs
Total # of interruptions = 2093185
Vector IIP IPSR ExtraField IIP Symbol
VHPT FAULT e0000000830d3190 1010092a6018 IFA= 6fc00a0200c nt!MiAgeAndEstimateAvailableInWorkingSet+0x70
VHPT FAULT e0000000830d33d0 1010092a6018 IFA= 1ffffe00001de2d0 nt!MiAgeAndEstimateAvailableInWorkingSet+0x2b0
VHPT FAULT e0000000830d33d0 1010092a6018 IFA= 1ffffe01befff338 nt!MiAgeAndEstimateAvailableInWorkingSet+0x2b0
VHPT FAULT e0000000830d3190 1010092a6018 IFA= 6fc00a0200c nt!MiAgeAndEstimateAvailableInWorkingSet+0x70
VHPT FAULT e0000000830d33d0 1010092a6018 IFA= 1ffffe00001d9188 nt!MiAgeAndEstimateAvailableInWorkingSet+0x2b0
VHPT FAULT e0000000830d3880 1010092a6018 IFA= 1ffffe01befff250 nt!MiAgeAndEstimateAvailableInWorkingSet+0x760
VHPT FAULT e0000000830d3fb0 1010092a6018 IFA= e0000165f82dc1c0 nt!MiCheckAndSetSystemTrimCriteria+0x190
VHPT FAULT e000000083063390 1010092a6018 IFA= e0000000fffe0018 nt!KeQuerySystemTime+0x30
THREAD SWITCH e000000085896040 e00000008588c040 OSP= e0000165f82dbd40
VHPT FAULT e00000008329b130 1210092a6018 IFA= e0000165f7edaf30 nt!IopProcessWorkItem+0x30
VHPT FAULT e0000165f7eda640 1210092a6018 IFA= e0000165fff968a9 netbios!RunTimerForLana+0x60
PROCESS SWITCH e0000000818bbe10 e000000085896040 OSP= e0000165f8281de0
VHPT FAULT e00000008307cfc0 1010092a2018 IFA= e00000008189fe50 nt!SwapFromIdle+0x1e0
EXTERNAL INTERRUPT e0000000830623b0 1010092a6018 IVR= d0 nt!Kil_TopOfIdleLoop
VHPT FAULT e00000008314e310 1010092a2018 IFA= e0000165f88203f0 nt!KdReceivePacket+0x10
VHPT FAULT e000000083580760 1010092a2018 IFA= e0000000f00ff3fd hal!READ_PORT_UCHAR+0x80
PROCESS SWITCH e00000008558c990 e0000000818bbe10 OSP= e00000008189fe20
VHPT FAULT e00000008307cfc0 1010092a2018 IFA= e0000165f02433f0 nt!SwapFromIdle+0x1e0
VHPT FAULT 77cfbda0 1013082a6018 IFA= 77cfbda0 0x0000000077cfbda0
VHPT FAULT 77cfbdb0 1213082a6018 IFA= 6fbfee0ff98 0x0000000077cfbdb0
DATA ACCESS BIT 77b8e150 1213082a6018 IFA= 77c16ab8 0x0000000077b8e150
VHPT FAULT 77ed5d60 1013082a6018 IFA= 6fbfffa6048 0x0000000077ed5d60
DATA ACCESS BIT 77ed5d60 1213082a6018 IFA= 77c229c0 0x0000000077ed5d60
DATA ACCESS BIT 77b8e1b0 1013082a6018 IFA= 77c1c320 0x0000000077b8e1b0
USER SYSCALL 77cafa40 10082a6018 Num= 42 0x0000000077cafa40
VHPT FAULT e00000008344dc20 1010092a6018 IFA= e000010600703784 nt!ExpLookupHandleTableEntry+0x20
...
!ioresdes
!ioresdes 扩展显示指定地址处的IO_RESOURCE_DESCRIPTOR结构。
语法
!ioresdes Address
参数
Address
指定IO_RESOURCE_DESCRIPTOR 结构的16进制地址。
DLL
|
Windows NT 4.0
|
不可用
|
|
Windows 2000
|
Kdextx86.dll
|
|
Windows XP和之后
|
Kdexts.dll
|
附加信息
查看Plug and Play调试获得该扩展命令的应用。关于IO_RESOURCE_DESCRIPTOR结构的信息,查看 Windows Driver Kit (WDK) 文档。
!ioreslist
!ioreslist 扩展显示一个IO_RESOURCE_REQUIREMENTS_LIST结构。
语法
!ioreslist Address
参数
Address
指定IO_RESOURCE_REQUIREMENTS_LIST 结构的16进制地址。
DLL
|
Windows NT 4.0
|
不可用
|
|
Windows 2000
|
Kdextx86.dll
|
|
Windows XP和之后
|
Kdexts.dll
|
注释
下面是该扩展输出的示例:
kd> !ioreslist 0xe122b768
IoResList at 0xe122b768 : Interface 0x5 Bus 0 Slot 0xe
Alternative 0 (Version 1.1)
Preferred Descriptor 0 - Port (0x1) Device Exclusive (0x1)
Flags (0x01) - PORT_IO
0x000100 byte range with alignment 0x000100
1000 - 0x10ff
Alternative Descriptor 1 - Port (0x1) Device Exclusive (0x1)
Flags (0x01) - PORT_IO
0x000100 byte range with alignment 0x000100
0 - 0xffffffff
Descriptor 2 - DevicePrivate (0x81) Device Exclusive (0x1)
Flags (0000) -
Data: : 0x1 0x0 0x0
Preferred Descriptor 3 - Memory (0x3) Device Exclusive (0x1)
Flags (0000) - READ_WRITE
0x001000 byte range with alignment 0x001000
40080000 - 0x40080fff
Alternative Descriptor 4 - Memory (0x3) Device Exclusive (0x1)
Flags (0000) - READ_WRITE
0x001000 byte range with alignment 0x001000
0 - 0xffffffff
Descriptor 5 - DevicePrivate (0x81) Device Exclusive (0x1)
Flags (0000) -
Data: : 0x1 0x1 0x0
Descriptor 6 - Interrupt (0x2) Shared (0x3)
Flags (0000) - LEVEL_SENSITIVE
0xb - 0xb
IO_RESOURCE_REQUIREMENTS_LIST包含这些信息:
有四种类型的资源: I/O、内存、IRQ、DMA。
每个首选设置都有一个"Preferred" 描述符和数个"Alternative"描述符。
资源列表包含下面这些需求:
申请了0x1000 到0x10FF 的范围,但是只要按0x100对齐的话,可以使用从0到0xFFFFFFFF 之间任何0x100 长度的范围,(例如,可以访问0x1100 到0x11FF。)
申请了0x40080000 到0x40080FFF的范围,但是可以使用0到0xFFFFFFFF 之间以0x1000对齐的任何大小为0x1000的范围。
必须使用 IRQ 0xB。
中断和DMA通道是以开始和结束相同的区域的形式。
附加信息
查看Plug and Play 调试获得该扩展命令的应用。IO_RESOURCE_REQUIREMENTS_LIST结构的信息,查看Windows Driver Kit (WDK)文档。