Как определить, находится ли жесткий диск в режиме PIO или DMA, с помощью командной строки или программно?

Как определить, находится ли жесткий диск в режиме PIO или DMA, с помощью командной строки или программно?

Я работаю в компании, у которой есть много машин по всему миру, находящихся в собственности клиентов, от которых нам нужно получать непрерывную диагностику. Одна из проблем заключается в том, что иногда жесткие диски машин переходят в режим PIO, но, конечно, все, что видит клиент, — это огромное замедление системы.

Я ищу способ определить, перешел ли жесткий диск SATA в режим PIO с помощью наших диагностических инструментов. Это может быть либо инструмент, либо команда, которую мы можем запустить и сохранить вывод для последующего объединения в дамп, который мы получаем по электронной почте от клиента, либо программно через Windows API.

Это должно быть максимально автоматическим. Я пробовал использовать 'devcon.exe' (диспетчер устройств командной строки), но не нашел, как вывести эту информацию, даже если я получаю информацию о контроллерах жестких дисков.

Есть идеи?

решение1

(Здесь используется PowerShell в Windows 7, но вы сможете делать то же самое в Windows XP после установки PowerShell.)

Получение объекта WMI, связанного с определенным устройством IDE (на этом уровне как PATA, так и SATA рассматриваются как IDE):

$ide = new-object "system.management.managementobject" 'Win32_IDEController.DeviceID="PCIIDE\\IDECHANNEL\\4&5ECF4F&0&0"'

(В этом случае я использовал devmegmt.mscдля получения «Пути к экземпляру устройства» для канала SATA с подключенным диском, но это можно сделать и запросив.)

Но этоWin32_IDEControllerobject не имеет ничего о настройке PIO/DMA. Поиск по ассоциациям WMI также ничего не показывает (до пары уровней).

Похоже, в WMI нет ничего, что отражало бы содержимое вкладки «Дополнительные параметры» диспетчера устройств в WMI.

Однако, используя последний элемент из пути выше ( 4&5ECF4F&0&0), я могу в реестре:

HKLM:\SYSTEM\CurrentControlSet\Enum\PCIIDE\IDEChannel\4&5ecf4f&0&0\Device Parameters\Target0

значения (в частности DeviceType), которые отличаются для привода PATA DVD-RW в режиме PIO здесь. Но я не могу быстро найти определение для этих значений.

решение2

Может бытьэтотпоможет вам создать VBScript для решения вашей проблемы, а также даст объяснение того, как DMA возвращается к PIO с возможными решениями.

А также вы можете немного проверитьКоманды Windows WMIC , например "wmic dmachannel получить / значение" для извлечения вашей информации и помещения ее в команду "shell" для вашего кода и для возможной автоматизации вашего API Windows.

Связанный контент