1

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

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

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

Есть идеи?

2 ответа2

0

(Это использует 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_IDEController не имеет ничего общего с настройкой PIO/DMA. Охота вокруг ассоциаций WMI также ничего не показывает (до пары уровней).

Кажется, в WMI нет ничего, что отражало бы содержимое вкладки "Дополнительные параметры" диспетчера устройств в WMI.

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

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

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

0

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

А также вы можете немного проверить команды wmic Window , например, « wmic dmachannel get / value », чтобы получить вашу информацию и поместить ее в команду "shell" для вашего кода и для возможной автоматизации вашего Windows API.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .