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