You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

366 lines
8.8 KiB
C

2 years ago
/****************************************************************************
* FileName : DSFileSystem.h *
* Programmer : AAAwen *
* Writen at : 2005.05.10 *
* Version : 1.0 *
* Description: define filesystem of flash *
* Last modify: 2005.05.10 *
****************************************************************************/
#ifndef __DSFILESYSTEM_H_ICL__
#define __DSFILESYSTEM_H_ICL__
#include "basetype.h"
#include <stdio.h>
//typedef char* HDSFILE;
/*!
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>
*/
#define SEEK_CLR_RCNT SEEK_END+10
#define SEEK_CUR_EX SEEK_END+11
// <20>޸<EFBFBD>DS<44>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ
#define DS_FILESYSTEM_ADDR 0x3b0000
#define DS_FILESYSTEM_LEN (0x50000-4)
#define DS_SECTION_OUT -1 // <20><><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD>Խ<EFBFBD><D4BD>
#define DS_SECTION_NOEXIST 0 // <20><><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD>
#define DS_SECTION_EXIST 1 // <20><><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>
#define DS_SECTION_SEARCH 2 // <20><><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>
typedef struct tsgDSFILE
{
/*!
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
*/
long m_lContentLen;
/*!
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ĵ<EFBFBD>ǰλ<EFBFBD><EFBFBD>
*/
long m_lOffset;
/*!
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
long m_lReadCount;
// <20><><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ȡ<EFBFBD><C8A1>
/*!
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
long m_lSectionOk;
/*!
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
long m_lSectionLines;
/*!
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD>ʶ
*/
long m_lSectionLinesAddFlag;
/*!
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>е<EFBFBD>ƫ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
*/
long m_lSectionOffset;
/*!
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
char m_szSection[64];
/*!
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
char *m_pContent;
}DSFILE, *HDSFILE;
#ifdef OS_WINDOWS
#pragma pack (push,1)
typedef struct tagDSFILESYSTEMHEAD
{
/*!
<EFBFBD>ļ<EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
int m_iFiles;
/*!
<EFBFBD>ļ<EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ƫ<EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>=this+m_iOffset
*/
int m_iOffset;
}DSFILESYSTEMHEAD;
typedef struct tagDSFILEHEAD
{
/*!
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<EFBFBD>ļ<EFBFBD>ͷ)
*/
int m_iFileSize;
/*!
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
*/
int m_iOffset;
/*!
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
int m_iFileNameLen;
/*!
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
char m_FileName[1];
}DSFILEHEAD, *pDSFILEHEAD;
typedef struct tagFILECONTENT
{
long m_lContentLen;
long m_lOffset;
char m_pContent[1];
}FILECONTENT, *pFILECONTENT;
#pragma pack (pop)
#else
typedef struct tagDSFILESYSTEMHEAD
{
/*!
<EFBFBD>ļ<EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
int m_iFiles ;
/*!
<EFBFBD>ļ<EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ƫ<EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>=this+m_iOffset
*/
int m_iOffset ;
}DSFILESYSTEMHEAD;
typedef struct tagDSFILEHEAD
{
/*!
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<EFBFBD>ļ<EFBFBD>ͷ)
*/
int m_iFileSize ;
/*!
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
*/
int m_iOffset ;
/*!
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
int m_iFileNameLen ;
/*!
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
char m_FileName[1] ;
}DSFILEHEAD, *pDSFILEHEAD;
typedef struct tagFILECONTENT
{
long m_lContentLen ;
long m_lOffset ;
char m_pContent[1] ;
}FILECONTENT, *pFILECONTENT;
#endif
/*!
\brief <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
\param szFileName -- Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
\param ppDestMem -- Ŀ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\retval -- <EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>0\n
pDestMem<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ú<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
*/
long LoadFile(const char *szFileName, char **ppDestMem);
/*!
\brief <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
\param szFileName -- Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
\param ppDestMem -- Ŀ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\param pFSAddr -- <EFBFBD>ļ<EFBFBD>ϵͳ<EFBFBD>׵<EFBFBD>ַָ<EFBFBD><EFBFBD>
\retval -- <EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>0\n
pDestMem<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ú<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
*/
long LoadFileInDSFS(const char *szFileName, char **ppDestMem, BYTE *pFSAddr);
/*!
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param stream -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\param offset -- <EFBFBD><EFBFBD>origin<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>ֵ
\param origin -- <EFBFBD><EFBFBD>ʼλ<EFBFBD><EFBFBD>
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
*/
DSLIB_API int DS_Seek(FILECONTENT *stream, long offset, int origin);
DSLIB_API char *DS_Gets(char *pDest, int iDestMax, FILECONTENT *stream);
/*!
\brief <EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param fp -- <EFBFBD>Ѿ<EFBFBD><EFBFBD>򿪵<EFBFBD><EFBFBD>ļ<EFBFBD>ָ<EFBFBD><EFBFBD>
\retval -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
DSLIB_API int GetFileLen(FILE *fp);
/*!
\brief <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
\param szFileName -- Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
\retval -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>0\n
pDestMem<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ú<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
*/
DSLIB_API HDSFILE DSOpenFile(const char *szFileName);
DSLIB_API HDSFILE DSOpenFileEx(const char *szFileName);
/*!
\brief <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
\param szRootDir -- <EFBFBD>ļ<EFBFBD>ϵͳ<EFBFBD>ĸ<EFBFBD>·<EFBFBD><EFBFBD>
\param szFileName -- Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
\retval -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>0\n
pDestMem<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ú<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
<EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʺ<EFBFBD><EFBFBD><EFBFBD>pcϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ<EFBFBD><EFBFBD>Ϣ
<EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD>ʽϵͳ<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
DSLIB_API HDSFILE DSOpenFileEx3(const char *szRootDir, const char *szFileName);
DSLIB_API HDSFILE DSOpenFileEx2(const char *szRootDir, const char *szFSName, const char *szFileName);
/*!
\brief <EFBFBD>رմ򿪵<EFBFBD><EFBFBD>ļ<EFBFBD>
\param hFile -- <EFBFBD>򿪵<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>0\n
pDestMem<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ú<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
*/
DSLIB_API BOOL DSCloseFile(HDSFILE hFile);
/*!
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param buffer -- <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\param size -- <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ԫ<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
\param count -- <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param hFile -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵĶ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
DSLIB_API size_t DSfread(void *buffer, size_t size, size_t count, HDSFILE hFile);
/*!
\brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>(<EFBFBD>Իس<EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>)
\param string -- <EFBFBD><EFBFBD>ȡ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\param origin -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param hFile -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
*/
DSLIB_API char *DSfgets(char *string, int iMaxSize, HDSFILE hFile);
/*!
\brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>(<EFBFBD>Իس<EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>)
\param string -- <EFBFBD><EFBFBD>ȡ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\param origin -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param hFile -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\param ioffset -- <EFBFBD><EFBFBD>ǰλ<EFBFBD>ö<EFBFBD>ȡƫ<EFBFBD><EFBFBD>
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\note
<EFBFBD><EFBFBD>ȡָ<EFBFBD><EFBFBD>ƶ<EFBFBD>,<EFBFBD><EFBFBD>Ҫ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>Ԥ
*/
DSLIB_API char *DSfgetsEx(char *string, int iMaxSize, HDSFILE hFile);
/*!
\brief <EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param hFile -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\retval -- ʵ<EFBFBD>ʶ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
DSLIB_API int DSfgetreadcount(HDSFILE hFile);
/*!
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param hFile -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\param offset -- <EFBFBD><EFBFBD>origin<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>ֵ
\param origin -- <EFBFBD><EFBFBD>ʼλ<EFBFBD><EFBFBD>
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
*/
DSLIB_API int DSfseek(HDSFILE hFile, long offset, int origin);
/*!
\brief <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD>
\param hFile -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
*/
DSLIB_API int DSfeof(HDSFILE hFile);
/*!
\brief <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD>
\param hFile -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
*/
DSLIB_API int DSfeofEx(HDSFILE hFile);
/*!
\brief <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param hFile -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>
*/
DSLIB_API int DSfeob(HDSFILE hFile);
/*!
\brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param hFile -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
\retval -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
DSLIB_API int DSftell(HDSFILE hFile);
DSLIB_API int DSHaveSection(char *pSection, HDSFILE hFile);
DSLIB_API int DSSaveSectionOffset(HDSFILE hFile);
DSLIB_API int DSRestoreSectionOffset(HDSFILE hFile);
DSLIB_API int DSAddSectionLines(int iLines, HDSFILE hFile);
DSLIB_API int DSSubSectionLines(int iLines, HDSFILE hFile);
DSLIB_API int DSSetSectionLinesAddFlag(int iFlag, HDSFILE hFile);
DSLIB_API int DSSectionisOver(int iReadLines, HDSFILE hFile);
/*!
\brief <EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
\param szListFileName -- Ҫ<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>б<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param szDestFileName -- <EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
\param szDestDir -- <EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD>
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE
\note
<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD>ֽڶ<EFBFBD><EFBFBD><EFBFBD>
*/
DSLIB_API BOOL FsCombinAllFile(const char *szListFileName, const char *szDestFileName, const char *szDestDir);
/*!
\brief <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param szCombinFile -- <EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param szDestDir -- Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ŀ¼
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE
*/
DSLIB_API BOOL FsSplitAllFile(const char *szCombinFile, const char *szDestDir);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*!
\brief <EFBFBD><EFBFBD>ȡ<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>(<EFBFBD>ļ<EFBFBD>ϵͳ)
\param szCombinFile -- <EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE
*/
DSLIB_API BYTE *FsReadCombinFile(const char *szCombinFile);
DSLIB_API BYTE *FsReadCombinFileEx(const char *szCombinFile);
/*!
\brief װ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ
\param szFileSystem -- <EFBFBD>ļ<EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param ppDestBuf -- <EFBFBD>ļ<EFBFBD>ϵͳ<EFBFBD><EFBFBD>Ŀ<EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE
*/
DSLIB_API BOOL FsLoadFileSystem(const char *szFileSystem, BYTE **ppDestBuf);
/*!
\brief ж<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ
\param ppDestBuf -- <EFBFBD>ļ<EFBFBD>ϵͳ<EFBFBD><EFBFBD>Ŀ<EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE
*/
DSLIB_API BOOL FsUnLoadFileSystem(BYTE **ppDestBuf);
/*!
\brief <EFBFBD><EFBFBD>ʾָ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param szPath -- Ҫ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ·<EFBFBD><EFBFBD>
\param szFileSystem -- ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ
\retval -- <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRUE
*/
DSLIB_API BOOL FsDirFileName(const char *szPath, const char *szFileSystem);
DSLIB_API void FsDispHead(const char *szName, const char *szFileSystem);
BOOL FsNetToHost(BYTE *pFSBuf);
BOOL FsHostToNet(BYTE *pFSBuf);
void DispMemoryData(const BYTE *pu8Addr, int iLen, int iNumofLine);
#endif