ATS_FS.h
5.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
/*
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__*/