コード例 #1
0
ファイル: Drive.cs プロジェクト: eXpl0it3r/Sentinel
 public virtual int GetTemperatureFromSMARTData(SmartInfo smartInfo)
 {
     foreach (SmartAttribute smartAttribute in smartInfo.attributes)
     {
         if (smartAttribute.id == 194)
         {
             return((int)smartAttribute.raw[0]);
         }
     }
     return(-1);
 }
コード例 #2
0
ファイル: MarvellDrive.cs プロジェクト: eXpl0it3r/Sentinel
        public override StorApiStatus GetSmart(ref SmartInfo smart)
        {
            StorApiStatus storApiStatus = StorApiStatusEnum.STOR_NO_ERROR;
            byte          b             = 0;

            MvApi.MvApi.SMART_Info_Request smart_Info_Request = default(MvApi.MvApi.SMART_Info_Request);
            smart_Info_Request.header.Init();
            smart_Info_Request.header.requestType       = 1;
            smart_Info_Request.header.startingIndexOrId = 0;
            smart_Info_Request.header.numRequested      = 30;
            lock (MarvellUtil.mvApiLock)
            {
                try
                {
                    b = MvApi.MvApi.MV_PD_GET_SMART_INFO(((MarvellController)this.controller).AdapterId, this.mvid, ref smart_Info_Request);
                }
                catch (Exception ex)
                {
                    Logger.Warn("MV_PD_GET_SMART_INFO exception: {0}", new object[]
                    {
                        ex
                    });
                    return(StorApiStatusEnum.STOR_API_ERROR);
                }
            }
            if (b == 0)
            {
                if (smart == null)
                {
                    smart = new SmartInfo();
                }
                smart.attributes = new SmartAttribute[(int)smart_Info_Request.header.numReturned];
                smart.thresholds = new SmartThreshold[(int)smart_Info_Request.header.numReturned];
                for (short num = 0; num < smart_Info_Request.header.numReturned; num += 1)
                {
                    SmartAttribute smartAttribute = new SmartAttribute();
                    SmartThreshold smartThreshold = new SmartThreshold();
                    smartAttribute.id      = smart_Info_Request.SmartInfo[(int)num].Id;
                    smartAttribute.flags   = (ushort)((int)smart_Info_Request.SmartInfo[(int)num].StatusFlags1 << 8 | (int)smart_Info_Request.SmartInfo[(int)num].StatusFlags2);
                    smartAttribute.current = smart_Info_Request.SmartInfo[(int)num].CurrentValue;
                    smartAttribute.worst   = smart_Info_Request.SmartInfo[(int)num].WorstValue;
                    Array.Copy(smart_Info_Request.SmartInfo[(int)num].RawValue, smartAttribute.raw, smartAttribute.raw.Length);
                    smartThreshold.id          = smart_Info_Request.SmartInfo[(int)num].Id;
                    smartThreshold.value       = smart_Info_Request.SmartInfo[(int)num].ThresholdValue;
                    smart.attributes[(int)num] = smartAttribute;
                    smart.thresholds[(int)num] = smartThreshold;
                }
            }
            return(MarvellUtil.ToStorApiStatus(b));
        }
コード例 #3
0
ファイル: Drive.cs プロジェクト: eXpl0it3r/Sentinel
 public virtual StorApiStatus GetSmart(ref SmartInfo smart)
 {
     return(StorApiStatusEnum.STOR_NOT_SUPPORTED);
 }