aboutsummaryrefslogtreecommitdiff
path: root/NucLedController/WMISystemManagement.cs
blob: bd3b9cd6981168f567f8aac46998d13b10e2158e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Management;

namespace NucLedController
{
    public sealed class WMISystemManagement
    {
        private static readonly string OBJECT_SEARCHER_SCOPE = "\\root\\WMI";
        private static readonly string OBJECT_SEARCHER_QUERY_STRING = "SELECT * FROM CISD_WMI";
        private static readonly string SET_LED_METHOD_NAME = "SetState";

        private static readonly WMISystemManagement INSTANCE = new WMISystemManagement();

        private EnumerationOptions enumerationOptions;
        private ManagementObjectSearcher objectSearcher;

        private WMISystemManagement()
        {
            enumerationOptions = new EnumerationOptions();
            enumerationOptions.ReturnImmediately = false;
            objectSearcher = new ManagementObjectSearcher(OBJECT_SEARCHER_SCOPE, OBJECT_SEARCHER_QUERY_STRING, enumerationOptions);
        }

        public static WMISystemManagement Instance
        {
            get { return INSTANCE; }
        }

        public void WriteData(byte[] data)
        {

            foreach (ManagementObject queryObj in objectSearcher.Get())
            {
                queryObj.InvokeMethod(SET_LED_METHOD_NAME, new object[] { BitConverter.ToInt32(data, 0) });
                queryObj.Dispose();
            }

        }

    }
}