Exemple #1
0
        private static IvffResult CheckBlockNext(
            Stream stream,
            ref IvCommonCheckWork checkWork,
            ref IvCommonBlockHeader common)
        {
            int val2 = Math.Min(checkWork.DivideSize, checkWork.RemainSize);

            checkWork.RemainSize -= val2;
            ++checkWork.NowCount;
            int size;

            for (; 0 < val2; val2 -= size)
            {
                size = Math.Min(16777216, val2);
                byte[] bytes = new byte[size];
                int    readSize;
                if (Ivff.IsResultError(Ivff.ReadNext(stream, bytes, size, out readSize)) || size != readSize)
                {
                    return(IvffResult.READ_ERROR);
                }
                checkWork.CurSum = IvaUtils.CalcSum32(checkWork.CurSum, bytes, size);
            }
            if (0 < checkWork.RemainSize)
            {
                return(IvffResult.CONTINUE);
            }
            return((int)common.BlockDataSum == (int)checkWork.CurSum ? IvffResult.OK : IvffResult.INVALID);
        }
Exemple #2
0
        public static ushort CalcSum <T>(ushort sum, ref T structure) where T : struct
        {
            int size = Marshal.SizeOf(typeof(T));

            return((ushort)IvaUtils.CalcSum32(0U, IvaUtils.StructureToBytes <T>(ref structure), size));
        }