3 #ifndef __HOS__fatvol_h__
4 #define __HOS__fatvol_h__
7 #include "system/sysapi/sysapi.h"
8 #include "system/file/file.h"
11 #define FATVOL_ERR_OK 0
12 #define FATVOL_ERR_NG (-1)
16 typedef unsigned long FATVOL_UINT;
20 typedef struct t_fatvol_clusterbuf
22 FATVOL_UINT uiClusterNum;
24 unsigned char *pubBuf;
25 } T_FATVOL_CLUSTERBUF;
29 typedef struct c_fatvol
31 HANDLE hBlockFile; /**< ブロックデバイスドライバのハンドル */
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;
47 unsigned char *pubFatBuf; /**< FATのバッファリングメモリ */
48 unsigned char *pubFatDirty; /**< FATの更新フラグ */
50 T_FATVOL_CLUSTERBUF *pClusterBuf;
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);
69 #endif /* __HOS__fatdrive_h__ */