Поделиться через


Расширения для отладки драйверов минипорта SCSI

При отладке драйверов мини-портов SCSI могут оказаться полезными следующие расширения отладчика. Сначала перечислены общие расширения отладчика, за которыми следуют расширения, относящиеся к отладке мини-портов SCSI.

!devobj
Расширение !devobj отображает подробные сведения о DEVICE_OBJECT. Если поле Current 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 отображает содержимое всех ожидающих записей в журнале ошибок системы ввода-вывода.

!Объекта
Расширение !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 отображает подробные сведения о области управления процессором (PCR) на процессоре. Эти сведения включают элементы в очереди DPC, что может быть полезно. при отладке остановленного драйвера или истечения времени ожидания.

!minipkd.help
Расширение !minipkd.help отображает список всех команд расширения Minipkd.dll.

Если появляется сообщение об ошибке, аналогичное приведенному ниже, оно указывает на неправильный путь к символам и не указывает на правильную версию символов Scsiport.sys.

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

Команда .sympath (Задать путь к символу) может использоваться для отображения текущего пути и изменения пути. Команда .reload (Reload Module) перезагрузит символы из текущего пути.

Адаптер !minipkd.adapter
Расширение !minipkd.adapter отображает подробные сведения об указанном адаптере. Адаптер можно найти, просмотрев поле DevExt на дисплее !minipkd.adapters.

!minipkd.adapters
Расширение !minipkd.adapters отображает все адаптеры, работающие с драйвером порта SCSI, которые были определены Windows, и отдельные устройства, связанные с каждым адаптером.

Вот пример:

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 можно указать либо по его адресу (который можно найти, просмотрев поле LUN на дисплее !minipkd.adapters ) или его физический объект устройства (который можно найти в поле DevObj на дисплее !minipkd.adapters ).

!minipkd.portconfig PortConfig
Расширение !minipkd.portconfig отображает подробные сведения об указанном PORT_CONFIGURATION_DATA. Файл PortConfig можно найти в поле Сведения о конфигурации порта на дисплее !minipkd.adapter.

!minipkd.req {Adapter | Устройство}
Расширение !minipkd.req отображает сведения обо всех текущих активных запросах на указанном адаптере или устройстве LUN.

!minipkd.srb SRB
Расширение !minipkd.srb отображает подробные сведения об указанном блоке запросов SCSI (SRB). SRB указывается адресом. Адреса всех текущих активных запросов можно найти в полях SRB выходных данных команды !minipkd.req .

!scsikd.classext [устройство [уровень]]
Расширение !scsikd.classext отображает подробные сведения об устройстве Plug and Play класса (PnP) или список всех таких устройств. Устройство — это объект устройства или расширение устройства класса 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.