Пример #1
0
        public bool Getblock(ref byte[] buf, UInt32 block_number, Int32 blocklen = -1) // буфер принадлежит вызывающей процедуре
        {
            if (Data1CD == null)
            {
                return(false);
            }

            if (blocklen < 0)
            {
                blocklen = (Int32)Pagesize;
            }

            if (block_number >= length)
            {
                Console.WriteLine($"Попытка чтения блока за пределами файла. Индекс блока {block_number}, всего блоков {length}");
                return(false);
            }

            //memcpy(buf, MemBlock::getblock(fs, block_number), blocklen);


            V8MemBlock tmp_mem_block = new V8MemBlock((FileStream)Data1CD, block_number, false, true);

            byte[] tmp_buf = V8MemBlock.GetBlock((FileStream)Data1CD, block_number);
            Array.Copy(tmp_buf, buf, blocklen);
            return(true);
        }
Пример #2
0
        public byte[] Getblock(UInt32 block_number)
        {
            if (Data1CD == null)
            {
                return(null);
            }
            if (block_number >= length)
            {
                Console.WriteLine($"Попытка чтения блока за пределами файла. Индекс блока {block_number}. Всего блоков {length}");
                return(null);
            }

            V8MemBlock tmpV8MemBlock = new V8MemBlock((FileStream)Data1CD, block_number, false, true);

            return(V8MemBlock.GetBlock((FileStream)Data1CD, block_number));
        }