共用方式為


偵錯 SCSI 迷你埠驅動程式的擴充功能

當您偵錯 SCSI 迷你埠驅動程式時,您可能會發現下列偵錯工具擴充功能很有用。 一般偵錯工具擴充功能會先列出,後面接著 SCSI 迷你埠偵錯特有的擴充功能。

!devobj
!devobj延伸模組會顯示DEVICE_OBJECT的詳細資訊。 如果 [目前的 Irp ] 欄位為非 Null,這可能是 SCSI 驅動程式等待地圖暫存器所造成。

以下是範例:

0: kd> !devobj 8633da70
Device object (8633da70) is for:
 adpu160m1 \Driver\adpu160m DriverObject 8633eeb8
Current Irp 860ef008 RefCount 0 Type 00000004 Flags 00000050
Dacl e129871c DevExt 8633db28 DevObjExt 8633dfd0
ExtensionFlags (0000000000)
AttachedTo (Lower) 863b2978 \Driver\PCI
Device queue is not busy. 

!errlog
!errlog延伸模組會顯示 I/O 系統錯誤記錄檔中任何擱置專案的內容。

!物件
!object延伸模組會顯示系統物件的相關資訊。 此擴充功能會顯示所有 SCSI 裝置。

例如:

0: kd> !object \device\scsi
Object: e12a2520  Type: (863d12c8) Directory
    ObjectHeader: e12a2508
    HandleCount: 0  PointerCount: 9
    Directory Object: e1001100  Name: Scsi

    Hash Address  Type          Name
    ---- -------  ----          ----
     04  86352040 Device        adpu160m1Port3Path0Target6Lun0
     11  86353040 Device        adpu160m1Port3Path0Target1Lun0
     13  86334a70 Device        lp6nds351
     22  862e6040 Device        adpu160m1Port3Path0Target0Lun0
     24  8633da70 Device        adpu160m1
     25  86376040 Device        adpu160m2
     34  862e5040 Device        adpu160m1Port3Path0Target2Lun0 

!Pcr
!pc延伸模組會顯示處理器上的處理器控制區域 () 的詳細資訊。 此資訊包括 DPC 佇列中的專案,這非常有用。 當您偵錯停止的驅動程式或逾時時。

!minipkd.help
!minipkd.help延伸模組會顯示所有 Minipkd.dll 延伸模組命令的清單。

如果出現類似下列的錯誤訊息,表示符號路徑不正確,而且未指向正確的 Scsiport.sys 符號版本。

minipkd error (0) <path> ... \minipkd\minipkd.c @ line 435

. (設定符號路徑) 命令可用來顯示目前的路徑,以及變更路徑。 .reload (Reload Module) 命令會從目前路徑重載符號。

!minipkd.adapter Adapter
!minipkd.adapter延伸模組會顯示指定配接器的詳細資訊。 查看!minipkd.adapters顯示器中的DevExt欄位,即可找到配接器。

!minipkd.adapters
!minipkd.adapters擴充功能會顯示所有與 Windows 識別的 SCSI 埠驅動程式搭配運作的介面卡,以及與每個介面卡相關聯的個別裝置。

以下是範例:

0: kd> !minipkd.adapters
Adapter \Driver\lp6nds35     DO 86334a70         DevExt 86334b28
Adapter \Driver\adpu160m     DO 8633da70         DevExt 8633db28
 LUN 862e60f8 @(0,0,0) c ev     pnp(00/ff) pow(0,0) DevObj 862e6040
 LUN 863530f8 @(0,1,0) c ev p d pnp(00/ff) pow(0,0) DevObj 86353040
 LUN 862e50f8 @(0,2,0) c ev     pnp(00/ff) pow(0,0) DevObj 862e5040
 LUN 863520f8 @(0,6,0)   ev     pnp(00/ff) pow(0,0) DevObj 86352040
Adapter \Driver\adpu160m     DO 86376040         DevExt 863760f8 

類似下列的錯誤訊息指出符號路徑不正確,且未指向正確的 Scsiport.sys 符號版本,或 Windows 未識別任何使用 SCSI 埠驅動程式的介面卡:

minipkd error (0) <path> ... \minipkd\minipkd.c @ line 435

如果 !minipkd.help 擴充功能命令成功傳回說明資訊,SCSI 埠符號是正確的。

!minipkd.exports 配接器
!minipkd.exports延伸模組會顯示指定配接器的迷你埠匯出位址。

!minipkd.lun {LUN |Device}
!minipkd.lun延伸模組會顯示指定邏輯單元擴充功能 (LUN) 的詳細資訊。 LUN 可以透過其位址 (指定,方法是查看!minipkd.adapters中的LUN欄位) 或其實體裝置物件 (可在!minipkd.adaptersDevObj欄位中找到) 。

!minipkd.portconfig PortConfig
!minipkd.portconfig延伸模組會顯示指定PORT_CONFIGURATION_DATA的詳細資訊。 您可以在!minipkd.adapter顯示器的 [埠設定資訊] 欄位中找到PortConfig

!minipkd.req {Adapter |Device}
!minipkd.req延伸模組會顯示指定之介面卡或 LUN 裝置上所有目前作用中要求的相關資訊。

!minipkd.srb SRB
!minipkd.srb延伸模組會顯示指定 SCSI 要求區塊的詳細資訊, (SRB) 。 SRB 是由位址指定。 所有目前作用中要求的位址都可以在!minipkd.req命令輸出的SRB欄位中找到。

!scsikd.classext [裝置 [層級]]
!scsikd.classext延伸模組會顯示指定類別的詳細資訊,隨插即用 (PnP) 裝置或所有這類裝置的清單。 Device是 PnP 裝置類別的裝置物件或裝置延伸模組。 如果省略 Device ,則會顯示所有類別 PnP 延伸模組的清單。

以下是範例:

0: kd> !scsikd.classext 

 ' !scsikd.classext 8633e3f0 '   (             ) "IBM     " / "DDYS-T09170M    " / "S93E" / "        XBY45906"
 ' !scsikd.classext 86347b48 '   (paging device) "IBM     " / "DDYS-T09170M    " / "S80D" / "        VDA60491"
  ' !scsikd.classext 86347360 '   (             ) "UNISYS  " / "003451ST34573WC " / "5786" / "HN0220750000181300L6"
  ' !scsikd.classext 861d1898 '   (             ) "" / "MATSHITA CD-ROM CR-177" / "7T03" / ""

 usage: !classext <class fdo> <level [0-2]> 

!scsikd.scsiext 裝置
!scsikd.scsiext擴充功能會顯示指定之 SCSI 埠擴充功能的詳細資訊。 裝置可以是介面卡或 LUN 的裝置物件或裝置延伸模組。

這裡有一些範例:

0: kd> !scsikd.scsiext 86353040
Common Extension:
   < ..omitted.. >
Logical Unit Extension:
  Address (3, 0, 1, 0) Claimed  Enumerated Visible
  LuFlags (0x00000000):
  Retry 0x00          Key 0x008889ff
  Lock 0x00000000  Pause 0x00000000   CurrentLock: 0x00000000
  HwLuExt 0x862e6f00  Adapter 0x8633db28  Timeout 0x0000000a
  NextLun 0x00000000  ReadyLun 0x00000000
  Pending 0x00000000  Busy 0x00000000     Untagged 0x00000000
  < ..omitted.. >
Request list @0x86353200:
      Tick count is 2526
      SrbData 8615d700  Srb 8611f4fc  Irp 8611f2b8   Key 60197  <1s
      SrbData 85e72868  Srb 86100c3c Irp 861009f8   Key e29dc7  <1s

0: kd> !scsikd.scsiext 8633da70 
Common Extension:
   < ..omitted.. >
Adapter Extension:
  Port 3     IsPnp VirtualSlot HasInterrupt
  LowerPdo 0x84f9fb68   HwDevExt 0x84634004   Active Requests 0x00000000
  MaxBus 0x03   MaxTarget 0x40   MaxLun 0x08
  Port Flags (0x00001000): PD_DISCONNECT_RUNNING
  NonCacheExt 0x850d4000  IoBase 0xd80f0000   Int 0x23  < ..omitted.. > 

!scsikd.srbdata 位址
!scsikd.srbdata延伸模組會顯示指定之SRB_DATA追蹤區塊的詳細資訊。