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

📄 fat16.h

📁 XOSL 多操作系统管理工具 源代码 多系统引导工具
💻 H
字号:
/*
 * Extended Operating System Loader (XOSL)
 * Copyright (c) 1999 by Geurt Vos
 *
 * This code is distributed under GNU General Public License (GPL)
 *
 * The full text of the license can be found in the GPL.TXT file,
 * or at http://www.gnu.org
 */

#ifndef __fat16__
#define __fat16__

#include <fs.h>
#include <bootrec.h>


class CFAT16: public CFileSystem {
	public:
		CFAT16();
		~CFAT16();
		int Mount(int Drive, long StartSector);
		unsigned short ReadFile(const char *FileName, void *Buffer);
		int WriteFile(const char *FileName, const void *Buffer);

		void DosFileToRawFile(char *RawFile, const char *DosFile);

	private:
		class CFAT16DirEntry {
		public:
			unsigned char FileName[8];
			unsigned char Extension[3];
			unsigned char Attribute;
			unsigned char Reserved[10];
			unsigned short Time;
			unsigned short Date;
			unsigned short StartCluster;
			unsigned long FileSize;
		};

		int Locate(const char *FileName, CFAT16DirEntry &Entry);
		void ReadFAT(unsigned short Cluster);
		void ReadDirectory(unsigned short Index, CFAT16DirEntry *Root);

		void GetNextCluster(unsigned short &Cluster);
		void ReadCluster(unsigned short Cluster, void *Buffer);
		void WriteCluster(unsigned short Cluster, const void *Buffer);


		TBootFAT16 BootSector;

		unsigned short *FAT;
		unsigned short FirstCluster;
		unsigned short LastCluster;

		unsigned short ClusterSize;
		unsigned long FATStart;
		unsigned long DirStart;
		unsigned long DataStart;
};

#endif

⌨️ 快捷键说明

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