00001
00010 #ifndef DKUTIL_C_GENERIC_FILE_SYSTEM_H
00011 #define DKUTIL_C_GENERIC_FILE_SYSTEM_H
00012
00013
00014 #include "dkcOSIndependent.h"
00015 #include "dkcDLL.h"
00016
00017 typedef struct dkc_GenericFileSystemSeekArg{
00019 DKC_UINT64_STRUCT Point;
00021 int origin;
00022 }DKC_GFS_SEEK_ARG;
00023
00024
00025 typedef void *(*DKC_FILE_OPEN_F_TYPE)(void *,uint32,const void *);
00026 typedef int (*DKC_FILE_READ_F_TYPE)(void *,void *,size_t,size_t *);
00027 typedef int (*DKC_FILE_WRITE_F_TYPE)(void *,const void *,size_t,size_t *);
00028 typedef int (*DKC_FILE_CLOSE_F_TYPE)(void *);
00029 typedef int (*DKC_FILE_SEEK_F_TYPE)(void *,const DKC_GFS_SEEK_ARG *);
00030 typedef int (*DKC_FILE_TELL_F_TYPE)(void *,DKC_UINT64_STRUCT *);
00031 typedef int (*DKC_GFS_FREE_F_TYPE)(void *);
00032
00033 typedef int (*DKC_FILE_DELETE_F_TYPE)(void *,void *);
00034 #ifdef WIN32
00035
00036 typedef struct dkc_open_arg_data{
00037 DWORD DesiredAccess;
00038
00039 DWORD ShareMode;
00040
00041 LPSECURITY_ATTRIBUTES lpSecurityAttributes;
00042
00043 DWORD CreationDisposition;
00044
00045 DWORD FlagsAndAttributes;
00046
00047 HANDLE TemplateFile;
00048 }DKC_OPEN_ARG_DATA;
00049
00050 DKC_EXTERN void dkc_to_CreateFile_arg_data(DKC_OPEN_ARG_DATA *data,uint32 flag);
00051
00052 typedef struct dkc_win32_fs{
00053 HANDLE mHandle;
00054 void* CreateFile;
00055 void* SetFileAttributes;
00056 void* GetFileAttributes;
00057 void* DeleteFile;
00058 DKC_OPEN_ARG_DATA mArg;
00059 DKC_DLL *mdllobj;
00060
00061 DWORD mLastError;
00063 int mFlag;
00064
00065 }DKC_WIN32_FS;
00066
00067 #endif
00068
00069
00070
00071 typedef struct dkc_GenericFileSystem{
00072
00073
00075 #ifdef WIN32
00076 DKC_WIN32_FS *mfp;
00077 #else
00078 void *mfp;
00079 #endif
00080 size_t char_size;
00081
00082
00083 DKC_FILE_OPEN_F_TYPE mfOpen;
00084 DKC_FILE_CLOSE_F_TYPE mfClose;
00085 DKC_FILE_READ_F_TYPE mfRead;
00086 DKC_FILE_WRITE_F_TYPE mfWrite;
00087 DKC_FILE_SEEK_F_TYPE mfSeek;
00088 DKC_FILE_TELL_F_TYPE mfTell;
00089
00090 DKC_GFS_FREE_F_TYPE mfObjFree;
00091
00092
00093 DKC_FILE_DELETE_F_TYPE mfDeleteFile;
00094
00095 }DKC_GENERIC_FILESYSTEM;
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107 enum{
00109 edkcReadMode = 1,
00111 edkcWriteMode = 2,
00113 edkcPostScriptMode = 4,
00115 edkcBinaryMode = 64,
00117 edkcTextMode = 128,
00118 };
00119
00120
00121
00122
00123 DKC_GENERIC_FILESYSTEM *WINAPI dkcAlloc_SJIS_FileSystem();
00124
00125 DKC_GENERIC_FILESYSTEM *WINAPI dkcAlloc_UNICODE_FileSystem();
00126
00127 DKC_EXTERN int WINAPI dkcFreeGenericFileSystem(DKC_GENERIC_FILESYSTEM **);
00128
00129 DKC_EXTERN int WINAPI dkcGenericFileSystemOpen(DKC_GENERIC_FILESYSTEM *,uint32 flags,const void *filename);
00130
00131 DKC_EXTERN int WINAPI dkcGenericFileSystemClose(DKC_GENERIC_FILESYSTEM *);
00132
00133 DKC_EXTERN int WINAPI dkcGenericFileSystemRead(DKC_GENERIC_FILESYSTEM *,void *pbuff,size_t size,size_t *read_size);
00134
00135 DKC_EXTERN int WINAPI dkcGenericFileSystemWrite(DKC_GENERIC_FILESYSTEM *,const void *pbuff,size_t size,size_t *write_size);
00136
00137 DKC_EXTERN int WINAPI dkcGenericFileSystemSeek(DKC_GENERIC_FILESYSTEM *,const DKC_GFS_SEEK_ARG *);
00138
00139 DKC_EXTERN int WINAPI dkcGenericFileSystemTell(DKC_GENERIC_FILESYSTEM *,DKC_UINT64_STRUCT *);
00140
00141 DKC_EXTERN int WINAPI dkcGenericFileSystemDeleteFile(DKC_GENERIC_FILESYSTEM *,const void *filename);
00142
00143
00144
00145 #endif //end of include once
00146
00147