private IntPtr AllocateBlock(out ushort blockId) { blockId = _header->NextFreeBlock++; _section.Extend(_header->NextFreeBlock * _blockSize); SectionView view = _section.MapView(blockId * _blockSize, _blockSize, _protection); MfsBlockHeader *header = (MfsBlockHeader *)view.Memory; header->Hash = 0; header->NextFreeCell = 1; ViewDescriptor vd = _vdFreeList.Allocate(); vd.RefCount = 1; vd.BlockId = blockId; vd.View = view; _views.Add(blockId, vd); _views2.Add(view.Memory, vd); return(view); }