diff --git a/LibreHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs b/LibreHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs index fddc5df..c3737fb 100644 --- a/LibreHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs +++ b/LibreHardwareMonitorLib/Hardware/Storage/NVMeSamsung.cs @@ -34,7 +34,7 @@ namespace LibreHardwareMonitor.Hardware.Storage buffers.Spt.TargetId = 0; buffers.Spt.Lun = 0; buffers.Spt.SenseInfoLength = 24; - buffers.Spt.DataTransferLength = Kernel32.SCSI_PASS_THROUGH_BUFFER_SIZE; + 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)); buffers.Spt.SenseInfoOffset = (uint)Marshal.OffsetOf(typeof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS), nameof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS.SenseBuf)); @@ -62,7 +62,7 @@ namespace LibreHardwareMonitor.Hardware.Storage buffers.Spt.TargetId = 0; buffers.Spt.Lun = 0; buffers.Spt.SenseInfoLength = 24; - buffers.Spt.DataTransferLength = Kernel32.SCSI_PASS_THROUGH_BUFFER_SIZE; + buffers.Spt.DataTransferLength = (uint)buffers.DataBuf.Length; 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)); @@ -111,7 +111,7 @@ namespace LibreHardwareMonitor.Hardware.Storage buffers.Spt.TargetId = 0; buffers.Spt.Lun = 0; buffers.Spt.SenseInfoLength = 24; - buffers.Spt.DataTransferLength = Kernel32.SCSI_PASS_THROUGH_BUFFER_SIZE; + buffers.Spt.DataTransferLength = (uint)buffers.DataBuf.Length; 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)); @@ -143,7 +143,7 @@ namespace LibreHardwareMonitor.Hardware.Storage buffers.Spt.TargetId = 0; buffers.Spt.Lun = 0; buffers.Spt.SenseInfoLength = 24; - buffers.Spt.DataTransferLength = Kernel32.SCSI_PASS_THROUGH_BUFFER_SIZE; + buffers.Spt.DataTransferLength = (uint)buffers.DataBuf.Length; 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)); @@ -192,7 +192,7 @@ namespace LibreHardwareMonitor.Hardware.Storage buffers.Spt.TargetId = 0; buffers.Spt.Lun = 0; buffers.Spt.SenseInfoLength = 24; - buffers.Spt.DataTransferLength = Kernel32.SCSI_PASS_THROUGH_BUFFER_SIZE; + 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)); buffers.Spt.SenseInfoOffset = (uint)Marshal.OffsetOf(typeof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS), nameof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS.SenseBuf)); @@ -220,7 +220,7 @@ namespace LibreHardwareMonitor.Hardware.Storage buffers.Spt.TargetId = 0; buffers.Spt.Lun = 0; buffers.Spt.SenseInfoLength = 24; - buffers.Spt.DataTransferLength = Kernel32.SCSI_PASS_THROUGH_BUFFER_SIZE; + 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)); buffers.Spt.SenseInfoOffset = (uint)Marshal.OffsetOf(typeof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS), nameof(Kernel32.SCSI_PASS_THROUGH_WITH_BUFFERS.SenseBuf)); diff --git a/LibreHardwareMonitorLib/Interop/Kernel32.cs b/LibreHardwareMonitorLib/Interop/Kernel32.cs index 01ee473..3c6bfe5 100644 --- a/LibreHardwareMonitorLib/Interop/Kernel32.cs +++ b/LibreHardwareMonitorLib/Interop/Kernel32.cs @@ -22,7 +22,6 @@ namespace LibreHardwareMonitor.Interop internal const int MAX_DRIVE_ATTRIBUTES = 512; internal const uint NVME_PASS_THROUGH_SRB_IO_CODE = 0xe0002000; - internal const int SCSI_PASS_THROUGH_BUFFER_SIZE = 512; internal const byte SMART_LBA_HI = 0xC2; internal const byte SMART_LBA_MID = 0x4F; private const string DllName = "kernel32.dll"; @@ -728,7 +727,7 @@ namespace LibreHardwareMonitor.Interop [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public byte[] SenseBuf; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = SCSI_PASS_THROUGH_BUFFER_SIZE)] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4096)] public byte[] DataBuf; }