Exemple #1
0
        private byte[] GetContent(long size, long addr, int dcount)
        {
            long dblock = addr + len_fheader;
            int  left   = (int)(size % 1024);

            byte[] _dat = new byte[size];
            fs.Seek(dblock, SeekOrigin.Begin);
            for (int i = 0; i < dcount; i++)
            {
                Array.Copy(GetBlock().FB_DAT, 0, _dat, i * 1024, (i == dcount - 1 && left != 0) ? left : 1024);
                OnChuckOperated?.Invoke(i, dcount);
            }
            return(_dat);
        }
Exemple #2
0
        private void _writeBlocks(byte[] b, int bcount)
        {
            int paddingBytes = b.Length % 1024;
            int index        = 0;

            for (int i = 0; i < bcount; i++)
            {
                LPS_FBLOCK lfb = new LPS_FBLOCK();
                lfb.FB_INDEX = index;
                bool bl = i == bcount - 1 && paddingBytes != 0;
                lfb.FB_DAT = new byte[1024];
                Array.Copy(b, i * 1024, lfb.FB_DAT, 0, bl ? paddingBytes : 1024);
                fs.Write(lfb.ToBytes(len_dblock).XorCrypt(magic), 0, len_dblock);
                index++;
                OnChuckOperated?.Invoke(index, bcount);
            }
        }