diff --git a/LibreHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs b/LibreHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs index 235c4d4..43119ee 100644 --- a/LibreHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs +++ b/LibreHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs @@ -80,7 +80,7 @@ namespace LibreHardwareMonitor.Hardware.Storage Marshal.StructureToPtr(buffers, buffer, false); validTransfer = Kernel32.DeviceIoControl(hDevice, Kernel32.IOCTL.IOCTL_SCSI_PASS_THROUGH, buffer, length, buffer, length, out _, IntPtr.Zero); - if (validTransfer) + if (validTransfer && buffers.DataBuf.Any(x => x != 0)) { IntPtr offset = Marshal.OffsetOf(nameof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS.DataBuf)); IntPtr newPtr = IntPtr.Add(buffer, offset.ToInt32()); @@ -240,7 +240,7 @@ namespace LibreHardwareMonitor.Hardware.Storage { var result = Marshal.PtrToStructure(buffer); - if (result.DataBuf.Sum(x => (long)x) == 0) + if (result.DataBuf.All(x => x == 0)) { handle.Close(); handle = null; diff --git a/LibreHardwareMonitorLib/Hardware/Storage/NVMeSmart.cs b/LibreHardwareMonitorLib/Hardware/Storage/NVMeSmart.cs index 6acca9f..692881b 100644 --- a/LibreHardwareMonitorLib/Hardware/Storage/NVMeSmart.cs +++ b/LibreHardwareMonitorLib/Hardware/Storage/NVMeSmart.cs @@ -27,7 +27,11 @@ namespace LibreHardwareMonitor.Hardware.Storage _handle = NVMeSamsung.IdentifyDevice(storageInfo); if (_handle != null) { - NVMeDrive = new NVMeSamsung(); + NVMeDrive = new NVMeSamsung(); + if (!NVMeDrive.IdentifyController(_handle, out _)) + { + NVMeDrive = null; + } } }