Skip to content

Commit d7b7d30

Browse files
committed
Merge commit '418e9ec85f2878b09782ba0d64a0bd841ea880cb'
# Conflicts: # OpenHardwareMonitorLib/Hardware/Memory/MemoryGroup.cs # OpenHardwareMonitorLib/Hardware/Storage/NVMeSmart.cs
2 parents 217b003 + 418e9ec commit d7b7d30

3 files changed

Lines changed: 23 additions & 46 deletions

File tree

OpenHardwareMonitorLib/Hardware/Memory/MemoryGroup.cs

Lines changed: 13 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ internal class MemoryGroup : IGroup, IHardwareChanged
2121

2222
private CancellationTokenSource _cancellationTokenSource;
2323
private Exception _lastException;
24-
private bool _opened = false;
24+
private bool _disposed = false;
2525

2626
public MemoryGroup(ISettings settings)
2727
{
@@ -44,8 +44,6 @@ public MemoryGroup(ISettings settings)
4444
{
4545
StartRetryTask(settings);
4646
}
47-
48-
_opened = true;
4947
}
5048

5149
public event HardwareEventHandler HardwareAdded;
@@ -77,17 +75,17 @@ public string GetReport()
7775

7876
public void Close()
7977
{
78+
_cancellationTokenSource?.Cancel();
79+
_cancellationTokenSource?.Dispose();
80+
_cancellationTokenSource = null;
81+
8082
lock (_lock)
8183
{
82-
_opened = false;
8384
foreach (Hardware ram in _hardware)
8485
ram.Close();
8586

86-
_hardware.Clear();
87-
88-
_cancellationTokenSource?.Cancel();
89-
_cancellationTokenSource?.Dispose();
90-
_cancellationTokenSource = null;
87+
_hardware = [];
88+
_disposed = true;
9189
}
9290
}
9391

@@ -97,9 +95,9 @@ private bool TryAddDimms(ISettings settings)
9795
{
9896
lock (_lock)
9997
{
100-
if (!_opened)
98+
if (_disposed)
10199
{
102-
return true;
100+
return false;
103101
}
104102

105103
if (DetectThermalSensors(out List<SPDAccessor> accessors))
@@ -132,24 +130,7 @@ private void StartRetryTask(ISettings settings)
132130

133131
if (TryAddDimms(settings))
134132
{
135-
lock (_lock)
136-
{
137-
if (!_opened)
138-
{
139-
return;
140-
}
141-
142-
foreach (Hardware hardware in _hardware.OfType<DimmMemory>())
143-
{
144-
HardwareAdded?.Invoke(hardware);
145-
}
146-
147-
_cancellationTokenSource.Dispose();
148-
_cancellationTokenSource = null;
149-
150-
break;
151-
}
152-
133+
break;
153134
}
154135
}
155136
}, _cancellationTokenSource.Token);
@@ -189,8 +170,6 @@ private static bool DetectThermalSensors(out List<SPDAccessor> accessors)
189170

190171
private void AddDimms(List<SPDAccessor> accessors, ISettings settings)
191172
{
192-
List<Hardware> newHardwareList = [.. _hardware];
193-
194173
foreach (SPDAccessor ram in accessors)
195174
{
196175
//Default value
@@ -201,9 +180,9 @@ private void AddDimms(List<SPDAccessor> accessors, ISettings settings)
201180
name = $"{ram.GetModuleManufacturerString()} - {ram.ModulePartNumber()} (#{ram.Index})";
202181

203182
DimmMemory memory = new(ram, name, new Identifier($"memory/dimm/{ram.Index}"), settings);
204-
newHardwareList.Add(memory);
205-
}
206183

207-
_hardware = newHardwareList;
184+
_hardware.Add(memory);
185+
HardwareAdded?.Invoke(memory);
186+
}
208187
}
209188
}

OpenHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public bool IdentifyController(SafeHandle hDevice, out Kernel32.NVME_IDENTIFY_CO
3131
buffers.Spt.TargetId = 0;
3232
buffers.Spt.Lun = 0;
3333
buffers.Spt.SenseInfoLength = 24;
34-
buffers.Spt.DataIn = 1;
3534
buffers.Spt.DataTransferLength = (uint)buffers.DataBuf.Length;
3635
buffers.Spt.TimeOutValue = 2;
3736
buffers.Spt.DataBufferOffset = Marshal.OffsetOf(typeof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS), nameof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS.DataBuf));
@@ -62,7 +61,6 @@ public bool IdentifyController(SafeHandle hDevice, out Kernel32.NVME_IDENTIFY_CO
6261
buffers.Spt.Lun = 0;
6362
buffers.Spt.SenseInfoLength = 24;
6463
buffers.Spt.DataTransferLength = (uint)buffers.DataBuf.Length;
65-
buffers.Spt.DataIn = 1;
6664
buffers.Spt.TimeOutValue = 2;
6765
buffers.Spt.DataBufferOffset = Marshal.OffsetOf<Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS>(nameof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS.DataBuf));
6866
buffers.Spt.SenseInfoOffset = (uint)Marshal.OffsetOf<Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS>(nameof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS.SenseBuf));

OpenHardwareMonitorLib/Hardware/Storage/NVMeSmart.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@ internal NVMeSmart(StorageInfo storageInfo)
1616
NVMeDrive = null;
1717
string name = storageInfo.Name;
1818

19+
// Test Windows generic driver protocol.
20+
if (NVMeDrive == null)
21+
{
22+
_handle = NVMeWindows.IdentifyDevice(storageInfo);
23+
if (_handle != null)
24+
{
25+
NVMeDrive = new NVMeWindows();
26+
}
27+
}
28+
1929
// Test Samsung protocol.
2030
if (NVMeDrive == null && name.IndexOf("Samsung", StringComparison.OrdinalIgnoreCase) > -1)
2131
{
@@ -49,16 +59,6 @@ internal NVMeSmart(StorageInfo storageInfo)
4959
NVMeDrive = new NVMeIntelRst();
5060
}
5161
}
52-
53-
// Test Windows generic driver protocol.
54-
if (NVMeDrive == null)
55-
{
56-
_handle = NVMeWindows.IdentifyDevice(storageInfo);
57-
if (_handle != null)
58-
{
59-
NVMeDrive = new NVMeWindows();
60-
}
61-
}
6262
}
6363

6464
public bool IsValid

0 commit comments

Comments
 (0)