33,007
社区成员
发帖
与我相关
我的任务
分享
//BlockId - 块号,以块大小
#define BLOCK_SIZE ((__int64)1024*1024)
union Header
{
struct
{
BYTE Flag[32]; //头标识
...
__int64 BlockIdleList; //记录空闲块链表,初始为0,若0,表示没有空闲链表,则扩大文件
}
BYTE Reserve[BLOCK_SIZE];
}
union Block
{
__int64 BlockNext; //未使用时记录下一个空闲块偏移
BYTE Data[BLOCK_SIZE]; //被使用的时候存储数据
}
//假设有这些操作
__int64 BlockAlloc (void);
bool BlockFree (__int64 vBlockId);
bool BlockRead (__int64 vBlockId, Block* vBlock);
bool BlockWrite (__int64 vBlockId, Block* vBlock);