private IEnumerable <HWInfoSensorSource> ReadSensorSources() { for (uint index = 0; index < _sharedMemory.dwNumSensorElements; ++index) { using (MemoryMappedViewStream viewStream = _memoryMappedFile.CreateViewStream(_sharedMemory.dwOffsetOfSensorSection + index * _sharedMemory.dwSizeOfSensorElement, _sharedMemory.dwSizeOfSensorElement, MemoryMappedFileAccess.Read)) { byte[] buffer = new byte[(int)_sharedMemory.dwSizeOfSensorElement]; viewStream.Read(buffer, 0, (int)_sharedMemory.dwSizeOfSensorElement); GCHandle gcHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned); _HWiNFO_SENSOR structure = (_HWiNFO_SENSOR)Marshal.PtrToStructure(gcHandle.AddrOfPinnedObject(), typeof(_HWiNFO_SENSOR)); gcHandle.Free(); yield return(new HWInfoSensorSource(structure)); } } }
public void ReadSensorNames() { for (uint index = 0; index < HWiNFOMemory.dwNumSensorElements; ++index) { using (MemoryMappedViewStream viewStream = mmf.CreateViewStream(HWiNFOMemory.dwOffsetOfSensorSection + index * HWiNFOMemory.dwSizeOfSensorElement, HWiNFOMemory.dwSizeOfSensorElement, MemoryMappedFileAccess.Read)) { byte[] buffer = new byte[(int)HWiNFOMemory.dwSizeOfSensorElement]; viewStream.Read(buffer, 0, (int)HWiNFOMemory.dwSizeOfSensorElement); GCHandle gcHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned); _HWiNFO_SENSOR structure = (_HWiNFO_SENSOR)Marshal.PtrToStructure(gcHandle.AddrOfPinnedObject(), typeof(_HWiNFO_SENSOR)); gcHandle.Free(); JsonObj obj = new JsonObj { szSensorNameOrig = structure.szSensorNameOrig, szSensorNameUser = structure.szSensorNameUser, sensors = new List <_HWiNFO_ELEMENT>() }; data.Add(obj); } } ReadSensors(); }
public HWInfoSensorSource(_HWiNFO_SENSOR _sensor) => Sensor = _sensor;