Beispiel #1
0
        /// <summary>Накладывание структуры на массив байт и увеличивание отступа на размер массива</summary>
        /// <typeparam name="T">Тип накладываемой структуры</typeparam>
        /// <param name="buffer">Массив байт на который наложить структуру</param>
        /// <param name="padding">Отступ от начала массива байт и отступ от начала массива + конца структуры</param>
        /// <returns>Наложенная структура с данными</returns>
        public static T BytesToStructure <T>(Byte[] buffer, ref UInt32 padding) where T : struct
        {
            Int32 length;
            T     result = PinnedBufferReader.BytesToStructure <T>(buffer, padding, out length);

            padding += (UInt32)length;
            return(result);
        }
        /// <summary>S.M.A.R.T. attibutes</summary>
        public DiscAPI.DRIVEATTRIBUTE[] GetAttributes()
        {
            DiscAPI.DRIVEATTRIBUTE[] result = new DiscAPI.DRIVEATTRIBUTE[Constant.NUM_ATTRIBUTE_STRUCTS];
            UInt32 padding = 2;

            DiscAPI.SENDCMDOUTPARAMS prms = this.GetAttributeParamsNative();
            using (PinnedBufferReader reader = new PinnedBufferReader(prms.bBuffer))
            {
                result = new DiscAPI.DRIVEATTRIBUTE[Constant.NUM_ATTRIBUTE_STRUCTS];

                for (Int32 loop = 0; loop < result.Length; loop++)
                {
                    result[loop] = reader.BytesToStructure <DiscAPI.DRIVEATTRIBUTE>(ref padding);
                }
            }
            return(result);
        }
Beispiel #3
0
 /// <summary>Накладывание структуры на массив байт</summary>
 /// <typeparam name="T">Тип накладываемой структуры</typeparam>
 /// <param name="buffer">Массив байт на который наложить структуру</param>
 /// <param name="padding">Отступ от начала массива байт</param>
 /// <param name="length">Размер полчившегося массива</param>
 /// <returns>Наложенная структура с данными</returns>
 public static T BytesToStructure <T>(Byte[] buffer, UInt32 padding, out Int32 length) where T : struct
 {
     using (PinnedBufferReader reader = new PinnedBufferReader(buffer))
         return(reader.BytesToStructure <T>(padding, out length));
 }
Beispiel #4
0
        /// <summary>Накладывание структуры на массив байт</summary>
        /// <typeparam name="T">Тип накладываемой структуры</typeparam>
        /// <param name="buffer">Массив байт на который наложить структуру</param>
        /// <param name="padding">Отступ от начала массива байт</param>
        /// <returns>Наложенная структура с данными</returns>
        public static T BytesToStructure <T>(Byte[] buffer, UInt32 padding) where T : struct
        {
            Int32 length;

            return(PinnedBufferReader.BytesToStructure <T>(buffer, padding, out length));
        }