次の方法で共有


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
!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
The !pcr 拡張機能は、プロセッサ上のプロセッサ制御領域 (PCR) に関する詳細情報を表示します。 この情報には DPC キュー内の項目が含まれているため役立ちます。 停止したドライバーまたはタイムアウトをデバッグしている場合。

!minipkd.help
!minipkd.help 拡張機能は、すべての Minipkd.dll 拡張コマンドの一覧が表示されます。

次のようなエラー メッセージが表示された場合は、シンボル パスが正しくなく、正しいバージョンの Scsiport.sys シンボルを指していないことを示しています。

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

.sympath (シンボル パスの設定) コマンドを使用して現在のパスを表示し、パスを変更できます。 .reload (モジュールの再読み込み) コマンドは、現在のパスからシンボルを再度読み込みます。

!minipkd.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 | デバイス}
!minipkd.lun 拡張機能は、指定された論理ユニット拡張 (LUN) に関する詳細情報を表示します。 LUN は、そのアドレス (アドレスは !minipkd.adapters 表示の LUN フィールドで確認できます) またはその物理デバイス オブジェクト (!minipkd.adapters 表示の DevObj フィールドで確認できます) で指定できます。

!minipkd.portconfig PortConfig
!minipkd.portconfig 拡張機能は、指定された PORT_CONFIGURATION_DATA に関する詳細情報を表示します。 PortConfig は、!minipkd.adapter 表示の Port Config Info フィールドで確認できます。

!minipkd.req {アダプター | デバイス}
!minipkd.req 拡張機能は、指定されたアダプターまたは LUN デバイス上で現在アクティブなすべてのリクエストに関する情報を表示します。

!minipkd.srb SRB
!minipkd.srb 拡張機能は、指定された SCSI 要求ブロック (SRB) に関する詳細情報を表示します。 SRB はアドレスで指定されます。 現在アクティブなすべてのリクエストのアドレスは、!minipkd.req コマンドからの出力の SRB フィールドで確認できます。

!scsikd.classext [デバイス [レベル]]
!scsikd.classext 拡張機能は、指定されたクラスのプラグ アンド プレイ (PnP) デバイスに関する詳細情報、またはすべての該当デバイスの一覧を表示します。 デバイスとは、クラスの PnP デバイスのデバイス オブジェクトやデバイス拡張機能です。 もしデバイスを省略すると、すべてのクラスの 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 追跡ブロックに関する詳細情報を表示します。