1

I want to turn off disks (WMI). So far, I have the following code:

    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"});
    }

however, disk activity keeps on happening. Any ideas on what is going on will be appreciated.

Michael Foukarakis
  • 39,737
  • 6
  • 87
  • 123
hamoub
  • 75
  • 1
  • 10
  • P.S. I can see the disks in the console write line command (two drives, PhysicalDrive0 and PhysicalDrive1) – hamoub Sep 13 '11 at 07:24

1 Answers1

2

SetPowerState is not implemented by WMI:

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

checking CompletedEventArgs.Status will also return MethodNotImplemented telling us that this is the case. If you want to use that method you must implement your own provider.

Sascha Hennig
  • 2,556
  • 1
  • 19
  • 22