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

📄 seedvmp642_fat32.h

📁 FAT系统文件格式编程
💻 H
字号:
/*H**************************************************************************
* NAME:         fat32.h         
********************************************************************/
/*  Copyright 2004 by SEED Incorporated.							*/
/*  All rights reserved. Property of SEED Incorporated.				*/
/*  Restricted rights to use, duplicate or disclose this code are	*/
/*  granted through contract.									    */
/*  															    */
/********************************************************************/
/*
* PURPOSE:
* FAT32 file-system basic functions definition
*****************************************************************************/

#ifndef _FAT_H_
#define _FAT_H_
/*--------------typedifne---------------------*/
typedef unsigned int fat32_file_handle;

/*****************总体说明*******************************************/
/*本程序是SEEDVPM642上fat32文件系统函数库的测试程序。				*/
/*本系统仅支持硬盘存储、仅支持硬盘为主模式。						*/
/*仅支持硬盘第一卷(第一分区),卷大小需小于32G字节。				*/
/*文件大小需要小于4G。仅支持扇区大小固定为512字节。					*/	
/*仅支持同时只能打开一个文件。										*/
/*读、写、文件内位置指针等文件内部操作必须先打开一个文件。			*/
/*文件外部操作,如创建文件必须在无文件打开时进行操作。				*/	
/*仅支持在根目录下的文件操作。	只支持8.3短文件名  									*/
/********************************************************************/
/****************函数列表********************************************/
/* NAME: Bool fat32_install (void)
*---------------------------------------------------------------------
* PARAMS:
* return:
*   - TRUE: 安装成功
*   - FALSE: - 分区1不存在
*         - 文件系统不是fat32
*         - 扇区大小不是512字节
*         - MBR或者PBR 特征字不正确
*         - 底层读扇区错误
*--------------------------------------------------------------------
* PURPOSE:
*   安装fat32文件系统, 读 mbr, bootrecords等
*--------------------------------------------------------------------
* EXAMPLE:
*--------------------------------------------------------------------
* NOTE:    
*--------------------------------------------------------------------
* REQUIREMENTS:
********************************************************************/
Bool				fat32_install(void);
/*******************************************************************
* NAME: Uint32 fat32_file_open (char *file_name)
*--------------------------------------------------------------------
* PARAMS:
*   - 文件名,只支持8.3短文件名   
* return:一个文件指针,如果错误则返回0。
*--------------------------------------------------------------------
* PURPOSE:
*   打开一个文件,若文件不存在则创建文件。
*--------------------------------------------------------------------
* NOTE:文件位置指针将指向文件开始处。如果直接写将覆盖原有文件。
* 如果需要在文件最后接着写,需要使用fat32_seek函数将位置指针指向相应地方。
*********************************************************************/
fat32_file_handle	fat32_file_open (char *file_name);
/*******************************************************************
* NAME: Uint32	fat32_file_write(fat32_file_handle file_handle,
*						Byte *sorce_addr,
*						Uint32 write_count)
*--------------------------------------------------------------------
* PARAMS:
*   - 写入数据源的地址   
*   - 写入数据长度,单位:字节
*   - 文件指针
* return:实际写入字节数目
*--------------------------------------------------------------------
* PURPOSE:
*   写文件
*--------------------------------------------------------------------
* NOTE:
*   以字节为单位。必须在执行fat32_file_open函数后执行。
*	从文件位置指针所指位置开始写。最后文件位置指针位于
*	所写最后一个字节的下一个字节处。
*********************************************************************/
Uint32				fat32_file_write(fat32_file_handle file_handle,
									Byte *sorce_addr,
									Uint32 write_count);
/*******************************************************************
* NAME: Uint32	fat32_file_read(fat32_file_handle file_handle,
*						Byte *destination_addr,
*						Uint32 read_count)
*--------------------------------------------------------------------
* PARAMS:
*   - 读入数据源的地址   
*   - 读入数据长度,单位:字节
*   - 文件指针
* return:实际读字节数目
*--------------------------------------------------------------------
* PURPOSE:
*   读文件
*--------------------------------------------------------------------
* EXAMPLE:
*--------------------------------------------------------------------
* NOTE:
*   以字节为单位。必须在执行fat32_file_open函数后执行。从文件位置指针
*	所指位置开始读。最后文件位置指针位于所读最后一个字节的下一个字节处。
*--------------------------------------------------------------------
* REQUIREMENTS:
*********************************************************************/

Uint32				fat32_file_read(fat32_file_handle file_handle,
									Byte *destination_addr,
									Uint32 read_count);		
/*******************************************************************															
* Name:	Uint32 				fat32_file_seek(Uint32 file_handle,
*									Byte start_point,
*									int direction,
*									Uint32 offset);
*--------------------------------------------------------------------
* PARAMS:
*   - 文件指针 fat32_file_handle类型 
*	- 起始点 0,表示文件开始位置,即0位置;1,表示文件当前位置;
*			 2表示文件末尾位置,即size.l位置 Byte类型
*			 
*   - 位移方向   -1,表示向后,即文件开始的方向;
*					1,表示向前,即文件结束的方向
*	- 位移长度 Uint32,单位:字节。表位移长度
*--------------------------------------------------------------------
* RETURN:函数执行后的文件当前位置
*--------------------------------------------------------------------
* PURPOSE:
*	改变当前文件的位置指针,并返回函数执行后的当前位置。
*--------------------------------------------------------------------
* EXAMPLE:
*	几个特殊用法
*	fp=fat32_file_open("test1.txt");
*	
*	位置指针指向文件开头,如果文件大小为0,则指向位置0
*	fat32_file_seek(fp,0,1,0);	
*	返回当前指针的位置
*	fat32_file_seek(fp,1,1,0);
*	位置指针指向文件末尾位置前1个位置,即文件本身最后一个字节处
*	fat32_file_seek(fp,2,-1,1);
*--------------------------------------------------------------------
* NOTE:
*	文件末尾位置不在文件内。而是文件外第一个字节位置。
*	文件位置指针向后不会超过文件开始位置,向前不会超过文件末尾位置。
*	如果超出将不返回错误,并指向文件开始位置或者文件末尾位置
*********************************************************************/
Uint32 				fat32_file_seek(fat32_file_handle file_handle,
									Byte start_point,
									int direction,
									Uint32 offset);
/*******************************************************************										
* NAME: Bool				fat32_file_close (Uint32 file_handle);
*--------------------------------------------------------------------
* PARAMS:
*   - 文件指针   
* return:正确关闭返回1,如果错误则返回0。
*--------------------------------------------------------------------
* PURPOSE:
*   关闭一个打开的文件,若文件未被打开则返回0。
*--------------------------------------------------------------------
* EXAMPLE:
*--------------------------------------------------------------------
* NOTE:将当前文件的结构内容置零
---------------------------------------------------------------------
* REQUIREMENTS:
*********************************************************************/
Bool				fat32_file_close (fat32_file_handle file_handle);
/*******************************************************************									
* NAME: Bool				fat32_create (char *file_name);
*--------------------------------------------------------------------
* PARAMS:文件名    
* return:
*--------------------------------------------------------------------
* PURPOSE:
*   创建文件。如果该文件已经存在,则返回FALSE。
*--------------------------------------------------------------------
* EXAMPLE:
*--------------------------------------------------------------------
* NOTE:
*   属于文件外函数,不能在有文件被打开是执行
*--------------------------------------------------------------------
* REQUIREMENTS:
********************************************************************/
Bool				fat32_create (char *file_name);
#endif  /* _FAT_H_ */

⌨️ 快捷键说明

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