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.msc
obter o "Caminho da instância do dispositivo" para um canal SATA com um disco conectado, mas isso pode ser consultado.)
Mas issoWin32_IDEController
objeto 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.