!arbiter

!arbiter 扩展显示当前的系统资源仲裁程序和仲裁范围。

    !arbiter [Flags] 

参数

标志
指定显示哪类仲裁程序。 如果省略,将显示所有仲裁程序。 这些位可以自由组合。

位 0 (0x1)
显示 I/O 仲裁程序。

位 1 (0x2)
显示内存仲裁程序。

位 2 (0x4)
显示 IRQ 仲裁程序。

位 3 (0x8)
显示 DMA 仲裁程序。

位 4 (0x10)
显示总线编号仲裁程序。

位 8 (0x100)
不显示别名。

DLL

Kdexts.dll

其他信息

有关此扩展命令的应用,请参阅即插即用调试

注解

对于每个仲裁程序,!arbiter 显示每个分配的系统资源范围、一些可选标志、附加到该范围的 PDO(换句话说,范围所有者)和此所有者的服务名称(如果已知)。

这些标志具有以下含义:

标记 含义

S

范围是共享的

C

冲突范围

B

范围是启动分配的

D

范围是驱动程序排他性的

A

范围别名

P

范围正解码

以下是示例:

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 的服务。 此行上未列出任何标志。

现在,可以将 !devobj 与此 PDO 地址结合使用,以查找设备扩展和设备节点地址:

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.