2011-09-13 2 views
1

디스크 (WMI)를 해제하고 싶습니다. 지금까지 다음 코드를 가지고 있습니다 :WMI 디스크를 꺼짐

ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\cimv2"); 
    ObjectQuery query = new ObjectQuery("SELECT * FROM CIM_DiskDrive"); 

    //create object searcher 
    ManagementObjectSearcher searcher = 
          new ManagementObjectSearcher(scope, query); 
    ManagementObjectCollection queryCollection = searcher.Get(); 

    //enumerate the collection. 
    foreach (ManagementObject m in queryCollection) 
    { 
     Console.WriteLine("in set power state for: " + m.Path); 
     ManagementOperationObserver obs = new ManagementOperationObserver(); 
     obs.Progress += new ProgressEventHandler(obs_Progress); 
     obs.Completed += new CompletedEventHandler(obs_Completed); 
     m.InvokeMethod(obs, "SetPowerState", new object[]{"7"}); 
    } 

그러나 디스크 활동이 계속 발생합니다. 무슨 일이 벌어지고 있는지에 대한 아이디어는 높이 평가 될 것입니다.

+0

P. 콘솔 쓰기 라인 명령 (두 개의 드라이브, PhysicalDrive0 및 PhysicalDrive1)에서 디스크를 볼 수 있습니다. – hamoub

답변

2

SetPowerState는 WMI에 의해 구현되지 않습니다

http://msdn.microsoft.com/en-us/library/aa387254(v=VS.85).aspx

CompletedEventArgs.Status도 MethodNotImplemented는 이런 경우가 우리에게 말하고 돌아갑니다 검사합니다. 이 메서드를 사용하려면 자체 공급자를 구현해야합니다.