/// <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); }
/// <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)); }
/// <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)); }