Como detectar se um disco rígido está em PIO ou DMA na linha de comando ou programaticamente?

Como detectar se um disco rígido está em PIO ou DMA na linha de comando ou programaticamente?

Trabalho para uma empresa que possui muitas máquinas em todo o mundo em poder de clientes, das quais precisamos obter diagnósticos contínuos. Um dos problemas é que ocasionalmente os discos rígidos das máquinas passam para o modo PIO, mas é claro que tudo o que o cliente vê é uma enorme lentidão do sistema.

Estou procurando uma maneira de detectar se um disco rígido SATA caiu para o modo PIO por meio de nossas ferramentas de diagnóstico. Pode ser uma ferramenta ou um comando que podemos executar e armazenar a saída para posterior empacotamento em um dump que recebemos por e-mail do cliente ou programaticamente por meio de uma API do Windows.

Precisa ser o mais automático possível. Tentei usar 'devcon.exe' (gerenciador de dispositivos de linha de comando), mas não descobri como gerar essas informações, mesmo se estiver obtendo informações sobre os controladores do disco rígido.

Alguma ideia?

Responder1

(Isso está usando o PowerShell no Windows 7, mas você poderá fazer as mesmas coisas no Windows XP após instalar o PowerShell.)

Obtendo o objeto WMI associado a um dispositivo IDE específico (PATA e SATA são tratados como IDE neste nível):

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

(Neste caso, eu costumava devmegmt.mscobter o "Caminho da instância do dispositivo" para um canal SATA com um disco conectado, mas isso pode ser consultado.)

Mas issoWin32_IDEControllerobjeto não tem nada sobre a configuração PIO/DMA. A caça às associações WMI também não mostra nada (em alguns níveis).

Não parece haver nada no WMI que reflita o conteúdo da guia "Configurações avançadas" do gerenciador de dispositivos no WMI.

Porém, usando o último elemento do caminho acima ( 4&5ECF4F&0&0) posso no registro em:

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

valores (mais notavelmente DeviceType) que diferem para uma unidade PATA DVD-RW no modo PIO aqui. Mas não consigo encontrar rapidamente uma definição para estes valores.

Responder2

Talvezesseirá ajudá-lo a criar VBScript para resolver seu problema e onde há uma explicação de como o DMA reverte para PIO com possíveis soluções.

E também você pode conferir um poucoComandos wmic da janela , por exemplo "wmic dmachannel obter/valor" para recuperar suas informações e colocá-las em um comando "shell" para seu código e para uma possível automação de sua API do Windows.

informação relacionada