2 * Hyper Operating System Application Framework
7 * Copyright (C) 2006-2007 by Project HOS
8 * http://sourceforge.jp/projects/hos/
12 #ifndef __HOS__file_h__
13 #define __HOS__file_h__
17 #include "system/handle/handleobj.h"
20 #define FILE_MAX_PATH 128 /* パス名の最大値 */
21 #define FILE_MAX_NAME 12 /* 名前の最大値 */
26 #define FILE_ERR_NG (-1)
32 #define FILE_OPEN_READ 0x01 /* 読込み許可 */
33 #define FILE_OPEN_WRITE 0x02 /* 書込み許可 */
34 #define FILE_OPEN_CREATE 0x04 /* 常に新規作成 */
35 #define FILE_OPEN_EXIST 0x08 /* 存在しなければエラー */
36 #define FILE_OPEN_SHARE_READ 0x10 /* 読込み共有許可 */
37 #define FILE_OPEN_SHARE_WRITE 0x20 /* 書込み共有許可 */
38 #define FILE_OPEN_TEXT 0x40 /* テキストモード */
39 #define FILE_OPEN_DIR 0x80 /* ディレクトリをオープン */
42 #define FILE_SEEK_SET 0
43 #define FILE_SEEK_CUR 1
44 #define FILE_SEEK_END 2
47 #define FILE_WMODE_BLOCKING 0x00 /* 書込み ブロッキングモード */
48 #define FILE_WMODE_POLING 0x01 /* 書込み ポーリングモード */
49 #define FILE_RMODE_BLOCKING 0x00 /* 読込み ブロッキングモード */
50 #define FILE_RMODE_POLING 0x01 /* 読込み ポーリングモード */
53 /* IoControl機能コード(共通) */
54 #define FILE_IOCTL_GETDEVINF 0x0000 /* デバイス情報を得る */
55 #define FILE_IOCTL_SYNC 0x0001 /* 同期する */
56 #define FILE_IOCTL_GETSIZE 0x0010 /* ファイルサイズを取得 */
57 #define FILE_IOCTL_GETREADSIZE 0x0010 /* 読み込み可能サイズ(受信バッファ内のデータ量)を取得 */
58 #define FILE_IOCTL_GETWRITESIZE 0x0011 /* 書き込み可能サイズ(送信バッファ内の空きサイズ)を取得 */
59 #define FILE_IOCTL_GETREADBUF 0x0020 /* リードバッファ取得(省コピー版Read) */
60 #define FILE_IOCTL_RELREADBUF 0x0021 /* リードバッファ返却(省コピー版Read) */
61 #define FILE_IOCTL_GETWRITEBUF 0x0030 /* ライトバッファ取得(省コピー版Write) */
62 #define FILE_IOCTL_SENDWRITEBUF 0x0031 /* ライトバッファ送信(省コピー版Write) */
63 #define FILE_IOCTL_CANWRITEBUF 0x0032 /* ライトバッファ破棄(省コピー版Write) */
65 /* IoControl機能コード(コンソール) */
66 #define FILE_IOCTL_CON_GETCH 0x0101 /* 文字読込み */
68 /* IoControl機能コード(シリアル通信) */
69 #define FILE_IOCTL_COM_GETSPEED 0x2101 /* BPS取得 */
70 #define FILE_IOCTL_COM_SETSPEED 0x2101 /* BPS設定 */
72 /* IoControl機能コード(Ether) */
73 #define FILE_IOCTL_ETHER_GETPHA 0x2201 /* 物理アドレス取得 */
74 #define FILE_IOCTL_ETHER_SETPHA 0x2202 /* 物理アドレス設定 */
76 /* IoControl機能コード(IP層) */
77 #define FILE_IOCTL_IP_GETIP 0x2301 /* IPアドレス取得 */
78 #define FILE_IOCTL_IP_SETIP 0x2302 /* IPアドレス設定 */
79 #define FILE_IOCTL_IP_GETMASK 0x2303 /* IPサブネットマスク取得 */
80 #define FILE_IOCTL_IP_SETMASK 0x2304 /* IPサブネットマスク設定 */
82 /* IoControl機能コード(ユーザー定義) */
83 #define FILE_IOCTL_USER 0x6000 /* 0x6000〜0x7fff */
87 typedef char FILE_ATTR; /* ファイル属性 */
88 typedef int FILE_ERR; /* ファイルのエラー型 */
89 typedef long FILE_POS; /* ファイル位置の型定義 */
90 typedef int FILE_SIZE; /* 読み書き時のサイズ用の型定義 */
91 typedef unsigned long FILE_TIME; /* 読み書き時のサイズ用の時刻型定義 */
95 typedef struct t_file_volinf
97 char szName[FILE_MAX_NAME];
103 typedef struct t_file_fileinf
105 char szFileName[FILE_MAX_NAME];
110 FILE_TIME timeCreate;
111 FILE_TIME timeAceess;
126 void File_Initialize(void); /* ファイルシステムの初期化 */
128 FILE_ERR File_AddVolume(const T_FILE_VOLINF *pVolInf); /* ボリュームのマウント */
129 FILE_ERR File_RemoveVolume(const T_FILE_VOLINF *pVolInf); /* ボリュームのアンマウント */
131 FILE_ERR File_AddDevice(const char *pszName, struct c_drvobj *pDrvObj); /* デバイスドライバの登録 */
132 FILE_ERR File_RemoveDevice(const char *pszName); /* デバイスドライバの削除 */
136 HANDLE File_Open(const char *pszPatah, int iMode);
137 #define File_Close(hFile) Handle_Close(hFile)
138 FILE_ERR File_IoControl(HANDLE hFile, int iFunc, void *pInBuf, FILE_SIZE InSize, const void *pOutBuf, FILE_SIZE OutSize);
139 FILE_POS File_Seek(HANDLE hFile, FILE_POS Offset, int iOrign);
140 FILE_SIZE File_Read(HANDLE hFile, void *pBuf, FILE_SIZE Size);
141 FILE_SIZE File_Write(HANDLE hFile, const void *pData, FILE_SIZE Size);
142 FILE_ERR File_Flush(HANDLE hFile);
145 FILE_ERR File_SetWriteMode(HANDLE hFile, int iWriteMode);
146 FILE_ERR File_GetWriteStatus(HANDLE hFile);
147 FILE_ERR File_SetWriteMonitor(HANDLE hFile, HANDLE hEvent);
148 FILE_ERR File_SetReadMode(HANDLE hFile, int iReadMode);
149 FILE_ERR File_GetReadStatus(HANDLE hFile);
150 FILE_ERR File_SetReadMonitor(HANDLE hFile, HANDLE hEvent);
154 int File_GetChar(HANDLE hFile);
155 int File_GetString(HANDLE hFile, char *pszString, int iSize);
156 int File_PutChar(HANDLE hFile, int c);
157 int File_PutString(HANDLE hFile, const char *pszString);
160 int File_PrintFormatV(HANDLE hFile, const char *pszFormat, va_list argptr);
161 int File_PrintFormat(HANDLE hFile, const char *pszFormat, ...);
163 int File_PrintHexNibble(HANDLE hFile, unsigned char c); /* 4bitの16進数を出力 */
165 int File_PrintFormatDecimal(HANDLE hFile, long lNum, int iWidth, int iPadChar); /* 書式付き10進数出力 */
166 int File_PrintFormatVL(HANDLE hFile, const char *pszFormat, va_list argptr); /* 書式付き出力軽量版 */
170 FILE_POS File_GetFileSize(HANDLE hFile);
171 FILE_SIZE File_GetReadSize(HANDLE hFile);
172 FILE_SIZE File_GetWriteSize(HANDLE hFile);
173 FILE_SIZE File_GetReadBuf(HANDLE hFile, void **ppBuf);
174 FILE_SIZE File_RelReadBuf(HANDLE hFile, void *pBuf, long lSize);
175 FILE_SIZE File_GetWriteBuf(HANDLE hFile, void **ppBuf);
176 FILE_SIZE File_SendWriteBuf(HANDLE hFile, void *pBuf, long lSize);
177 FILE_ERR File_CanWriteBuf(HANDLE hFile, void *pBuf);
180 HANDLE File_OpenDir(const char *pszName); /* ディレクトリを開く */
181 FILE_ERR File_FindNext(HANDLE hDir, T_FILE_FILEINF *pFileInf); /* ディレクトリからファイルを検索 */
182 HANDLE File_MakeDir(const char *pszName); /* サブディレクトリを作成 */
183 HANDLE File_Remove(const char *pszName); /* ファイルを削除 */
191 #endif /* __HOS__file_h__ */