ATS_FS.h 5.89 KB
/*
Copyright Wang yong ALL RIGHT RESERVED !
 @ file name: ATS_FS.h

 @ description:  文件操作相关接口文件

 @ Author: wangyong, doforfaith@gmail.com
 
 @ Modify History:

	Date					Event												Person
 10-05-31      Creator               			wangyong	
 
*/
#if defined(__SKY_3DGUI__)
#ifndef __ATS_FS_H__
#define __ATS_FS_H__

#include "ATS_basic.h"
#include "ATS_adaptation_features.h"

typedef signed int	ATS_FS_HANDLE;

//Attributes in SPEC
#define ATS_FS_ATTR_READ_ONLY        0x01
#define ATS_FS_ATTR_HIDDEN           	0x02
#define ATS_FS_ATTR_SYSTEM           	0x04
#define ATS_FS_ATTR_VOLUME           	0x08
#define ATS_FS_ATTR_DIR              	0x10
#define ATS_FS_ATTR_ARCHIVE          	0x20
#define ATS_FS_LONGNAME_ATTR         0x0F

//ATS_fs_open flag
#define ATS_FS_READ_WRITE            	0x00000000L
#define ATS_FS_READ_ONLY             	0x00000100L
#define ATS_FS_OPEN_SHARED           	0x00000200L
#define ATS_FS_OPEN_NO_DIR           	0x00000400L
#define ATS_FS_OPEN_DIR              	0x00000800L
#define ATS_FS_CREATE                		0x00010000L
#define ATS_FS_CREATE_ALWAYS         	0x00020000L 
#define ATS_FS_COMMITTED		       0x01000000L
#define ATS_FS_CACHE_DATA	         	0x02000000L
#define ATS_FS_LAZY_DATA		      	0x04000000L
#define ATS_FS_NONBLOCK_MODE		0x10000000L
#define ATS_FS_PROTECTION_MODE	0x20000000L
#define ATS_FS_NOBUSY_CHECK_MODE	0x40000000L

//ATS_fs_seek flag
#define ATS_FS_FILE_BEGIN			0
#define ATS_FS_FILE_CURRENT		1
#define ATS_FS_FILE_END			2

//Error Type
#define ATS_FS_NO_ERROR                      				0
#define ATS_FS_ERROR_RESERVED                			-1
#define ATS_FS_PARAM_ERROR                   				-2
#define ATS_FS_INVALID_FILENAME              			-3
#define ATS_FS_DRIVE_NOT_FOUND               			-4
#define ATS_FS_TOO_MANY_FILES                			-5
#define ATS_FS_NO_MORE_FILES                 				-6
#define ATS_FS_WRONG_MEDIA                   				-7
#define ATS_FS_INVALID_FILE_SYSTEM           			-8
#define ATS_FS_FILE_NOT_FOUND                			-9
#define ATS_FS_INVALID_FILE_HANDLE           			-10
#define ATS_FS_UNSUPPORTED_DEVICE            			-11
#define ATS_FS_UNSUPPORTED_DRIVER_FUNCTION   	-12
#define ATS_FS_CORRUPTED_PARTITION_TABLE     		-13
#define ATS_FS_TOO_MANY_DRIVES               			-14
#define ATS_FS_INVALID_FILE_POS             			 -15
#define ATS_FS_ACCESS_DENIED                 				-16
#define ATS_FS_STRING_BUFFER_TOO_SMALL       		-17
#define ATS_FS_GENERAL_FAILURE               			-18
#define ATS_FS_PATH_NOT_FOUND               			-19
#define ATS_FS_FAT_ALLOC_ERROR               			-20
#define ATS_FS_ROOT_DIR_FULL                 				-21
#define ATS_FS_DISK_FULL                     				-22
#define ATS_FS_TIMEOUT                       				-23
#define ATS_FS_BAD_SECTOR                    				-24
#define ATS_FS_DATA_ERROR                    				-25
#define ATS_FS_MEDIA_CHANGED                 			-26
#define ATS_FS_SECTOR_NOT_FOUND              			-27
#define ATS_FS_ADDRESS_MARK_NOT_FOUND        		-28
#define ATS_FS_DRIVE_NOT_READY               			-29
#define ATS_FS_WRITE_PROTECTION              			-30
#define ATS_FS_DMA_OVERRUN                   				-31
#define ATS_FS_CRC_ERROR                     				-32
#define ATS_FS_DEVICE_RESOURCE_ERROR         		-33
#define ATS_FS_INVALID_SECTOR_SIZE           			-34
#define ATS_FS_OUT_OF_BUFFERS                			-35
#define ATS_FS_FILE_EXISTS                   				-36
#define ATS_FS_LONG_FILE_POS                 				-37
#define ATS_FS_FILE_TOO_LARGE                			-38
#define ATS_FS_BAD_DIR_ENTRY                 				-39
#define ATS_FS_ATTR_CONFLICT                 				-40 
#define ATS_FS_CHECKDISK_RETRY               			-41 
#define ATS_FS_LACK_OF_PROTECTION_SPACE      		-42 


#define ATS_FS_PATH_NAME_MAX_LEN					260	
#define ATS_FS_FILE_NAME_MAX_LEN					48

/*@ 打开文件,返回文件句柄
   @ file_name,文件路径
      flag,相关参数,见上面
*/
extern ATS_FS_HANDLE ATS_fs_open( const ats_uint8* file_name, ats_uint32 flag );

/*@ 关闭文件,返回结果*/
extern ats_int32 ATS_fs_close(ATS_FS_HANDLE file_handle );

/*@ 写文件,返回结果
   @ file_handle,文件句柄
      data_ptr,待写入的缓冲区
      len,待写入的字节大小
      written,实际写入的字节大小
*/
extern ats_int32 ATS_fs_write(ATS_FS_HANDLE file_handle, void* data_ptr, ats_uint32 len, ats_uint32* written );

/*@ 读文件,返回结果
   @ file_handle,文件句柄
      data_ptr,要读取到的缓冲区
      len,要读取的字节大小
      written,实际读取的字节大小
*/
extern ats_int32 ATS_fs_read(ATS_FS_HANDLE file_handle, void* data_ptr, ats_uint32 len, ats_uint32* read );

/*@ 定位文件操作位置,返回结果
   @ file_handle,文件句柄
      offset,偏移量
      flag,定位标志,具体见上
*/
extern ats_int32 ATS_fs_seek(ATS_FS_HANDLE file_handle, ats_int32 offset, ats_int32 flag );

/*@ 刷新文件到存储设置,返回结果
   @ file_handle,文件句柄
*/
extern ats_int32 ATS_fs_flush(ATS_FS_HANDLE file_handle );

/*@ 获取文件操作的位置信息,返回结果
   @ file_handle,文件句柄
      position,位置信息,返回值
*/
extern ats_int32 ATS_fs_tell(ATS_FS_HANDLE file_handle, ats_uint32* position );

/*@ 删除指定全路径的文件
   @ file_name,文件全路径
*/
extern ats_int32 ATS_fs_delete(const ats_uint8* file_name);

/*@ 删除指定目录
   @ path_name,目录路径,目录文件夹一同被删除
*/
extern ats_int32 ATS_fs_delete_dir(const ats_uint8* path_name);

/*@ 删除指定目录下的所有文件
   @ path_name,目录路径,目录文件夹不被删除
*/
extern ats_int32 ATS_fs_delete_all_files(const ats_uint8* path_name);

/*@ 创建指定路径下的目录
   @ path_name,目录路径,支持多层目录
*/
extern ats_int32 ATS_fs_create_dir(const ats_uint8* path_name);

/*@ 设置指定全路径下的文件的属性
   @ file_name,文件全路径
      attributes,文件属性,见上
*/
extern ats_int32 ATS_fs_set_attributes( const ats_uint8* file_name, ats_uint32 attributes );

/*@ 获取文件大小
   @ file_handle,文件句柄
      size,文件大小,返回值
*/
extern ats_int32 ATS_fs_get_file_size( ats_int32 file_handle, ats_uint32* size );


#endif /*__ATS_FS_H__*/
#endif /*__SKY_3DGUI__*/