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 追跡ブロックに関する詳細情報を表示します。