Esempio n. 1
0
        private static void ReadSensors(MemoryMappedFile mmf, _HWiNFO_SHARED_MEM hWiNFOMemory)
        {
            for (var index = 0; index < hWiNFOMemory.NumSensorElements; ++index)
            {
                using (var viewStream = mmf.CreateViewStream(hWiNFOMemory.OffsetOfSensorSection + index * hWiNFOMemory.SizeOfSensorElement, hWiNFOMemory.SizeOfSensorElement, MemoryMappedFileAccess.Read))
                {
                    var buffer = new byte[(int)hWiNFOMemory.SizeOfSensorElement];
                    viewStream.Read(buffer, 0, (int)hWiNFOMemory.SizeOfSensorElement);
                    var gcHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
                    var structure = (_HWiNFO_SENSOR)Marshal.PtrToStructure(gcHandle.AddrOfPinnedObject(), typeof(_HWiNFO_SENSOR));
                    gcHandle.Free();
                    
                    if (!FullSensorData.ContainsKey(index))
                    {
                        var sensor = new SensorObj
                        {
                            SensorId = structure.SensorId,
                            SensorInstance = structure.SensorInstance,
                            SensorNameOrig = structure.SensorNameOrig,
                            SensorNameUser = structure.SensorNameUser,
                            Elements = new Dictionary<string, ElementObj>()
                        };

                        FullSensorData.Add(index,sensor);
                    }
                    
                }
            }
            
            ReadElements(mmf, hWiNFOMemory);
        }
Esempio n. 2
0
 public List <JsonObj> ReadMem()
 {
     HWiNFOMemory = new _HWiNFO_SHARED_MEM();
     try
     {
         mmf      = MemoryMappedFile.OpenExisting(HWiNFO_SHARED_MEM_FILE_NAME, MemoryMappedFileRights.Read);
         accessor = mmf.CreateViewAccessor(0L, Marshal.SizeOf(typeof(_HWiNFO_SHARED_MEM)), MemoryMappedFileAccess.Read);
         accessor.Read(0L, out HWiNFOMemory);
         return(ReadSensorNames());
     }
     catch
     {
         return(new List <JsonObj>());
     }
 }
Esempio n. 3
0
 public void ReadMem()
 {
     HWiNFOMemory = new _HWiNFO_SHARED_MEM();
     try
     {
         mmf      = MemoryMappedFile.OpenExisting(HWiNFO_SHARED_MEM_FILE_NAME, MemoryMappedFileRights.Read);
         accessor = mmf.CreateViewAccessor(0L, Marshal.SizeOf(typeof(_HWiNFO_SHARED_MEM)), MemoryMappedFileAccess.Read);
         accessor.Read(0L, out HWiNFOMemory);
         ReadSensorNames();
     }
     catch (Exception ex)
     {
         Console.WriteLine("An error occured while opening the HWiNFO shared memory! - " + ex.Message);
         Console.WriteLine("Press ENTER to exit program...");
         Console.ReadLine();
         Environment.Exit(1);
     }
 }
Esempio n. 4
0
        public HWInfo()
        {
            try
            {
                _memoryMappedFile = MemoryMappedFile.OpenExisting(HWINFO_SHARED_MEM_FILE_NAME, MemoryMappedFileRights.Read);
                _accessor         = _memoryMappedFile.CreateViewAccessor(0L, Marshal.SizeOf(typeof(_HWiNFO_SHARED_MEM)), MemoryMappedFileAccess.Read);

                _sharedMemory = new _HWiNFO_SHARED_MEM();
                _accessor.Read(0L, out _sharedMemory);

                _sensors.AddRange(ReadSensorSources());

                FillSensors();
            }
            catch (Exception exception)
            {
                Dispose();

                throw exception;
            }
        }
Esempio n. 5
0
        private static void ReadElements(MemoryMappedFile mmf, _HWiNFO_SHARED_MEM hWiNFOMemory)
        {
            for (uint index = 0; index < hWiNFOMemory.NumReadingElements; ++index)
            {
                using (var viewStream = mmf.CreateViewStream(hWiNFOMemory.OffsetOfReadingSection + index * hWiNFOMemory.SizeOfReadingElement, hWiNFOMemory.SizeOfReadingElement, MemoryMappedFileAccess.Read))
                {
                    var buffer = new byte[(int)hWiNFOMemory.SizeOfReadingElement];
                    viewStream.Read(buffer, 0, (int)hWiNFOMemory.SizeOfReadingElement);
                    var gcHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
                    var structure = (_HWiNFO_ELEMENT)Marshal.PtrToStructure(gcHandle.AddrOfPinnedObject(), typeof(_HWiNFO_ELEMENT));
                    gcHandle.Free();

                    var sensor = FullSensorData[(int) structure.SensorIndex];

                    var elementKey = sensor.SensorId + "-" + sensor.SensorInstance + "-" + structure.ElementId;

                    var element = new ElementObj
                    {
                        ElementKey = elementKey,

                        SensorType = structure.SensorType,
                        ElementId = structure.ElementId,
                        LabelOrig = structure.LabelOrig,
                        LabelUser = structure.LabelUser,
                        Unit = structure.Unit,
                        NumericValue = (float)structure.Value,
                        Value = NumberFormat(structure.SensorType, structure.Unit, structure.Value),
                        ValueMin = NumberFormat(structure.SensorType, structure.Unit, structure.ValueMin),
                        ValueMax = NumberFormat(structure.SensorType, structure.Unit, structure.ValueMax),
                        ValueAvg = NumberFormat(structure.SensorType, structure.Unit,structure.ValueAvg)
                    };

                    sensor.Elements[elementKey] = element;
                }
            }
        }