Debugging Tools for Windows

!arbiter

!arbiter 扩展显示当前的system resource arbiter和arbitrated range。

语法

!arbiter [Flags

参数

Flags
指定要显示哪种类型的arbiter。如果省略,则显示所有arbiter。这些位可以自由组合。
Bit 0 (0x1)
I/O arbiters.
Bit 1 (0x2)
Memory arbiters.
Bit 2 (0x4)
IRQ arbiters.
Bit 3 (0x8)
DMA arbiters.
Bit 4 (0x10)
Bus number arbiters.

DLL

Windows 2000 Kdextx86.dll
Windows XP和之后 Kdexts.dll

注释

对每个arbiter,!arbiter会显示系统资源每个已分配的范围,一些可选标志、附加到该范围的PDO(即该范围的所有者)、以及该所有者得服务名(如果已知的话)。

标志的意义如下:

标志 意义
S 区域被共享
C 区域有冲突(conflict)
B 区域是boot-allocated的
D 区域是driver-exclusive的
A 区域别名(alias)
P Range positive decode

下面是一个例子:

kd> !arbiter 4

DEVNODE 80e203b8 (HTREE\ROOT\0)
  Interrupt Arbiter "" at 80167140
    Allocated ranges:
      0000000000000000 - 0000000000000000   B   80e1d3d8 
      0000000000000001 - 0000000000000001   B   80e1d3d8 
      .....
      00000000000001a2 - 00000000000001a2    
        00000000000001a2 - 00000000000001a2  CB   80e1d3d8 
        00000000000001a2 - 00000000000001a2  CB   80e52538  (Serial)
      00000000000001a3 - 00000000000001a3       80e52778  (i8042prt)
      00000000000001b3 - 00000000000001b3       80e1b618  (i8042prt)
    Possible allocation:
      < none >

这个例子中, 倒数第二行显示了资源范围(只由0x1A3组成)、0x80E52778的PDO、服务为i8042prt.sys。这一行没有列出标志。

现在可以对PDO地址使用!devobj来找到设备扩展(device extension)和设备节点(device node)的地址:

kd> !devobj 80e52778
Device object (80e52778) is for:
 00000034 \Driver\PnpManager DriverObject 80e20610
Current Irp 00000000 RefCount 1 Type 00000004 Flags 00001040
DevExt 80e52830 DevObjExt 80e52838 DevNode 80e52628 
ExtensionFlags (0000000000)  
AttachedDevice (Upper) 80d78b28 \Driver\i8042prt
Device queue is not busy.

附加信息

查看Plug and Play调试获得该扩展命令的应用。

Build machine: CAPEBUILD