OSDN Git Service

(none)
[hos/hos-v4a.git] / aplfw / volume / fat / fatvol.h
1
2
3 #ifndef __HOS__fatvol_h__
4 #define __HOS__fatvol_h__
5
6
7 #include "system/sysapi/sysapi.h"
8 #include "system/file/file.h"
9
10
11 #define FATVOL_ERR_OK           0
12 #define FATVOL_ERR_NG           (-1)
13
14
15 /* 型定義 */
16 typedef unsigned long   FATVOL_UINT;
17
18
19 /* クラスタバッファ */
20 typedef struct t_fatvol_clusterbuf
21 {
22         FATVOL_UINT             uiClusterNum;
23         int                             iDirty;
24         unsigned char   *pubBuf;
25 } T_FATVOL_CLUSTERBUF;
26
27
28 /* クラスタバッファ */
29 typedef struct c_fatvol
30 {
31         HANDLE                  hBlockFile;                                     /**< ブロックデバイスドライバのハンドル */
32
33         int                             iFatType;                                       /**< FATのタイプ */
34         FATVOL_UINT             uiOffset;                                       /**< ディスクのオフセット */
35         FATVOL_UINT             uiDriveSize;                            /**< ドライブの総サイズ */
36         FATVOL_UINT             uiBytesPerSector;                       /**< セクタサイズ */
37         FATVOL_UINT             uiSectorsPerCluster;            /**< クラスタサイズ */
38         FATVOL_UINT             uiFatStartSector;                       /**< FATの開始セクタ番号 */
39         FATVOL_UINT             uiSectorPerFat;                         /**< FATあたりのセクタ数 */
40         FATVOL_UINT             uiFatNum;                                       /**< FATの個数 */
41         FATVOL_UINT             uiRootDirEntryNum;                      /**< ルートディレクトリのエントリ数 */
42         FATVOL_UINT             uiRootDirSector;                        /**< ルートディレクトリのセクタ */
43         FATVOL_UINT             uiCluster0Sector;                       /**< クラスタ0のセクタ番号 */
44         FATVOL_UINT             uiMaxClusterNum;                        
45         FATVOL_UINT         uiRootDirCluster;                   
46         
47         unsigned char   *pubFatBuf;                                     /**< FATのバッファリングメモリ */
48         unsigned char   *pubFatDirty;                           /**< FATの更新フラグ */
49
50         T_FATVOL_CLUSTERBUF     *pClusterBuf;
51         int                                     iClusterBufNum;
52         int                                     iClusterBufIndex;       
53 } C_FATVOL;
54
55
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
59
60 int    FatVol_Create(C_FATVOL *self, HANDLE hBlockFile);
61 void   FatVol_Delete(C_FATVOL *self);
62 HANDLE FatVol_CreateFile(C_FATVOL *self, FATVOL_UINT uiCluster, HANDLE hDir, int iDirEntry, int iMode);
63
64 #ifdef __cplusplus
65 }
66 #endif
67
68
69 #endif  /* __HOS__fatdrive_h__ */
70
71