⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fssigleton.h

📁 类似Linux操作系统0.11版文件系统的文件系统设计和Windows下的操作程序
💻 H
字号:
#pragma once
#include "UL_FileSys.h"
#define O_RDONLY 	00		// 以只读方式打开文件。
#define O_WRONLY 	01		// 以只写方式打开文件。
#define O_RDWR 		02		// 以读写方式打开文件。
// 文件创建标志
#define O_CREAT 	00100 	// 如果文件不存在就创建。
#define O_EXCL 		00200 	// 独占使用文件标志。
#define O_NOCTTY 	00400 	// 不分配控制终端。
#define O_TRUNC 	01000 	// 若文件已存在且是写操作,则长度截为0。
#define O_APPEND 	02000	// 以添加方式打开,文件指针置为文件尾

// 高速缓存初始化
extern void buffer_init ();
// 块设备初始化
extern void blk_dev_init();
// 初始化虚拟盘
extern int vhd_init (char* filename);
extern void vhd_release();
// 挂装根目录
extern int mount_root (void);
// 系统同步
extern int sys_sync(void);
// 创建文件夹
extern int UL_mkdir (const char *pathname, int mode);
// 删除文件夹
extern int UL_rmdir (const char *name);
// 创建文件
extern int UL_creat (const char *pathname, int mode);
// 删除文件
extern int UL_delete (const char *name);
// 打开(创建)文件
extern int UL_open (const char *filename, int flag, int mode);
// 关闭文件
extern int UL_close (int fd);
// 写入文件
extern int UL_write (int fd, char *buf, int count);
// 读取
extern int UL_read (int fd, char *buf, int count);
// 移动文件指针
extern int UL_lseek (int fd, long offset, int origin);
// 获得文件大小
extern unsigned long UL_getfilesize(int fd);
// 文件查找
extern int findfirstfile (const char *pathname, struct FIND_DATA* ff);
extern int findnextfile (int handle, struct FIND_DATA* ff);
extern int UL_rename (const char *pathname, const char *name);

extern struct super_block *get_super (int dev);

// 文件类型:
#define S_IFMT 00170000		// 文件类型
#define S_IFREG 0100000		// 常规文件
#define S_IFDIR 0040000		// 目录文件

// 文件查找结构体
struct FIND_DATA
{
	unsigned short ff_mode; // 类型
	char ff_name[NAME_LEN];		// 名称
};

// 文件控制块

// 文件控制块
struct FILE_INFO
{
	unsigned short fi_mode;		// 文件类型和属性(rwx 位)
	unsigned short fi_uid;		// 用户id(文件拥有者标识符)
	unsigned long fi_size;		// 文件大小(字节数)
	long fi_mtime;		// 修改时间(自1970.1.1:0 算起,秒)
	unsigned char fi_gid;		// 组id(文件拥有者所在的组)
	unsigned char fi_nlinks;	// 文件目录项链接数
	unsigned short fi_zone[9];	// 直接(0-6),间接(7)或双重间接(8)逻辑块号

	struct task_struct *fi_wait;// 等待该i 节点的进程
	long fi_atime;		// 最后访问时间
	long fi_ctime;		// i 节点自身修改时间
	unsigned short fi_dev;		// i 节点所在的设备号
	unsigned short fi_num;		// i 节点号
	unsigned short fi_count;	// i 节点被使用的次数,0 表示该i 节点空闲
	unsigned char fi_lock;		// 锁定标志
	unsigned char fi_dirt;		// 已修改(脏)标志
	unsigned char fi_pipe;		// 管道标志
	unsigned char fi_mount;		// 安装标志
	unsigned char fi_seek;		// 搜寻标志(lseek 时)
	unsigned char fi_update;	// 更新标志
};


extern int UL_getfileattr(int fd, FILE_INFO* FI);

// 文件系统管理单件
class CFSSigleton
{
protected:
	BOOL m_bVDiskLoaded;

public:
	CFSSigleton(void);
	~CFSSigleton(void);
	// 是否已经载入虚拟盘
	BOOL IsVDiskLoaded()
	{
		return m_bVDiskLoaded;
	}
	// 装载磁盘
	int LoadVDisk(CString Path);
	// 卸载磁盘
	int UnLoadDisk();
	// 查找第一个文件
	int FindFirstFile (const char *pathname, struct FIND_DATA* ff);
	int FindNextFile (int handle, struct FIND_DATA* ff);
	//
	int MakeDir (const char *pathname, int mode);
	int RemoveFolder (const char *pathname);
	// 删除文件
	int Delete (const char *name);
	// 打开(创建)文件
	int Open (const char *filename, int flag, int mode);
	// 关闭文件
	int Close (int fd);
	// 写入文件
	int Write (int fd, char *buf, int count);
	// 读取
	int Read (int fd, char *buf, int count);
	// 移动文件指针
	int Seek (int fd, long offset, int origin);
	// 获得文件大小
	unsigned long GetFileSize(int fd);
	// 文件系统同步
	int Sync();
	// 重命名
	int Rename(const char *pathname, const char *name);
	struct super_block GetSuper();
	long GetTotalBlocks();
	int GetFileAttr(int fd, FILE_INFO* FI);
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -