From 78829b97e1e36d5e439d565473554948542c3449 Mon Sep 17 00:00:00 2001 From: sebastian-dev Date: Fri, 29 Aug 2025 10:34:45 +0200 Subject: [PATCH] Fix issues with missing samsung nvme data. (#1818) Reorder read out order in the same way as CrystalDiskInfo --- .../Hardware/Storage/NVMeSamsung.cs | 2 -- .../Hardware/Storage/NVMeSmart.cs | 22 +++++++++---------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/LibreHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs b/LibreHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs index f1b37da..29fb398 100644 --- a/LibreHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs +++ b/LibreHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs @@ -36,7 +36,6 @@ internal class NVMeSamsung : INVMeDrive buffers.Spt.TargetId = 0; buffers.Spt.Lun = 0; buffers.Spt.SenseInfoLength = 24; - buffers.Spt.DataIn = 1; buffers.Spt.DataTransferLength = (uint)buffers.DataBuf.Length; buffers.Spt.TimeOutValue = 2; buffers.Spt.DataBufferOffset = Marshal.OffsetOf(typeof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS), nameof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS.DataBuf)); @@ -67,7 +66,6 @@ internal class NVMeSamsung : INVMeDrive buffers.Spt.Lun = 0; buffers.Spt.SenseInfoLength = 24; buffers.Spt.DataTransferLength = (uint)buffers.DataBuf.Length; - buffers.Spt.DataIn = 1; buffers.Spt.TimeOutValue = 2; buffers.Spt.DataBufferOffset = Marshal.OffsetOf(nameof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS.DataBuf)); buffers.Spt.SenseInfoOffset = (uint)Marshal.OffsetOf(nameof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS.SenseBuf)); diff --git a/LibreHardwareMonitorLib/Hardware/Storage/NVMeSmart.cs b/LibreHardwareMonitorLib/Hardware/Storage/NVMeSmart.cs index 6f09790..a7ab9a8 100644 --- a/LibreHardwareMonitorLib/Hardware/Storage/NVMeSmart.cs +++ b/LibreHardwareMonitorLib/Hardware/Storage/NVMeSmart.cs @@ -21,6 +21,16 @@ public class NVMeSmart : IDisposable NVMeDrive = null; string name = storageInfo.Name; + // Test Windows generic driver protocol. + if (NVMeDrive == null) + { + _handle = NVMeWindows.IdentifyDevice(storageInfo); + if (_handle != null) + { + NVMeDrive = new NVMeWindows(); + } + } + // Test Samsung protocol. if (NVMeDrive == null && name.IndexOf("Samsung", StringComparison.OrdinalIgnoreCase) > -1) { @@ -54,16 +64,6 @@ public class NVMeSmart : IDisposable NVMeDrive = new NVMeIntelRst(); } } - - // Test Windows generic driver protocol. - if (NVMeDrive == null) - { - _handle = NVMeWindows.IdentifyDevice(storageInfo); - if (_handle != null) - { - NVMeDrive = new NVMeWindows(); - } - } } public bool IsValid @@ -187,4 +187,4 @@ public class NVMeSmart : IDisposable TemperatureSensors[i] = KelvinToCelsius(log.TemperatureSensor[i]); } } -} \ No newline at end of file +}