저는 전 세계적으로 고객이 보유하고 있는 지속적인 진단이 필요한 많은 기계를 보유하고 있는 회사에서 일하고 있습니다. 문제 중 하나는 때때로 컴퓨터의 하드 드라이브가 PIO 모드로 전환되는 것이지만 고객이 보는 것은 엄청난 시스템 속도 저하뿐입니다.
저는 진단 도구를 통해 SATA 하드 드라이브가 PIO 모드로 떨어졌는지 감지하는 방법을 찾고 있습니다. 이는 나중에 고객이 이메일로 보낸 덤프에 번들로 묶기 위해 출력을 실행하고 저장할 수 있는 도구 또는 명령일 수도 있고 Windows API를 통해 프로그래밍 방식으로 사용할 수도 있습니다.
가능한 한 자동으로 이루어져야 합니다. 'devcon.exe'(명령줄 장치 관리자)를 사용해 보았지만 하드 드라이브 컨트롤러에 대한 정보를 얻고 있는데도 해당 정보를 출력할 수 있는 방법을 찾지 못했습니다.
어떤 아이디어가 있나요?
답변1
(Windows 7에서는 PowerShell을 사용하고 있지만 PowerShell을 설치한 후에는 Windows XP에서도 동일한 작업을 수행할 수 있습니다.)
특정 IDE 장치와 연관된 WMI 개체 가져오기(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
여기에서는 PIO 모드 PATA DVD-RW 드라이브에 대해 다른 값(주로 )이 표시됩니다. 그러나 이러한 값에 대한 정의를 빨리 찾을 수 없습니다.