private void FillSensors() { for (uint index = 0; index < _sharedMemory.dwNumReadingElements; ++index) { uint i = index; _HWiNFO_ELEMENT element = GetHWInfoElement(i); _sensors[(int)element.dwSensorIndex].Sensors.Add(new HWInfoSensor(() => GetHWInfoElement(i))); } }
public List <JsonObj> ReadSensors() { for (uint index = 0; index < HWiNFOMemory.dwNumReadingElements; ++index) { using (MemoryMappedViewStream viewStream = mmf.CreateViewStream(HWiNFOMemory.dwOffsetOfReadingSection + index * HWiNFOMemory.dwSizeOfReadingElement, HWiNFOMemory.dwSizeOfReadingElement, MemoryMappedFileAccess.Read)) { byte[] buffer = new byte[(int)HWiNFOMemory.dwSizeOfReadingElement]; viewStream.Read(buffer, 0, (int)HWiNFOMemory.dwSizeOfReadingElement); GCHandle gcHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned); _HWiNFO_ELEMENT structure = (_HWiNFO_ELEMENT)Marshal.PtrToStructure(gcHandle.AddrOfPinnedObject(), typeof(_HWiNFO_ELEMENT)); gcHandle.Free(); data[(int)structure.dwSensorIndex].sensors.Add(structure); } } return(saveDataToFile()); }