FileSystem.h
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:8k
源码类别:

DVD

开发平台:

Others

  1. /****************************************************************************************
  2.  *  Copyright (c) 2002 ZORAN Corporation, All Rights Reserved
  3.  *  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
  4.  *
  5.  *  File: $Workfile: FileSystem.h $             
  6.  *
  7.  * Description:
  8.  * ============
  9.  * 
  10.  * 
  11.  * Log:
  12.  * ====
  13.  * $Revision: 7 $
  14.  * Last Modified by $Author: Jerryc $ at $Modtime: 04-03-19 11:00 $ 
  15.  ****************************************************************************************
  16.  * Updates:
  17.  ****************************************************************************************
  18.  * $Log: /I76/I76_Common/I76_Reference/Playcore/FileSys/FileSystem.h $
  19.  * 
  20.  * 7     04-03-19 11:03 Jerryc
  21.  * replace SUPPORT_FLASH_CARD with ENABLE_FILEX.
  22.  * 
  23.  * 6     03-06-02 14:06 Jerryc
  24.  * redefine eFileX to keep compatibility with old nav_dvd lib.
  25.  * 
  26.  * 5     03-05-30 11:43 Jerryc
  27.  * fix compile warning.
  28.  * 
  29.  * 4     03-05-29 18:11 Jerryc
  30.  * support flash card
  31.  * 
  32.  * 3     03-01-10 12:19 Leslie
  33.  * Add builtin unicode support
  34.  * 
  35.  * 8     9/05/02 16:16 Nirm
  36.  * - Expanded FileSys_getDVDFileInfo() functionality, to increase
  37.  * efficiency.
  38.  * 
  39.  * 7     23/04/02 9:30 Nirm
  40.  * - Added dependency in "Config.h".
  41.  * 
  42.  * 6     7/02/02 10:42 Nirm
  43.  * Added FileSys_getPathDelimiter().
  44.  * 
  45.  * 5     30/01/02 18:13 Nirm
  46.  * Changed Search-ID to 16 bit.
  47.  * 
  48.  * 4     27/01/02 17:48 Nirm
  49.  * - Added automatic selection of the File-System type;
  50.  * - Search-handles are 16-bit long instead of 32 bit.
  51.  * 
  52.  * 3     1/09/02 15:24 Idan
  53.  * changed () -> (void) in functions' prototypes.
  54.  * 
  55.  * 2     9/01/02 14:58 Nirm
  56.  * Corrected Include-Paths.
  57.  * 
  58.  * 1     12/27/01 14:19 Idan
  59.  ****************************************************************************************/
  60. /////////////////////////////////////////////////////////////////////////////
  61. // FileSystem.h - Abstract support for File-Systems
  62. //
  63. // Author: Nir Milstein
  64. #include "Config.h" // Global Configuration - do not remove!
  65. #ifndef __FILESYSTEM_H_
  66. #define __FILESYSTEM_H_
  67. #include "IncludeSysDefs.h"
  68. #ifdef ENABLE_FILEX
  69. #include "PlaycoreFileSysFileXHeaderFx_api.h"
  70. typedef FX_FILE STRUCT_FILE;
  71. #endif
  72. /////////////////////////////////////////////////////////////////////////////
  73. // Constants and Enumerations
  74. typedef struct {
  75. // Revision Number
  76. UINT16 uRevision;
  77. // Session information
  78. DWORD dwSessionStartLBN;
  79. // Volume information
  80. DWORD dwLBA_Offset;
  81. DWORD dwMainPartitionLocation;
  82. // Short_ad sadMainPartitionUnallocSpaceBitmap;
  83. #ifdef UDF_SUPPORT_UDF201
  84. BOOL bUseSparingManagement;
  85. struct SparingTable *pMainPartitionSparingTable;
  86. UINT16 uSparingPacketLength;
  87. #endif //UDF_SUPPORT_UDF201
  88. DWORD dwRootDirICB;
  89. DWORD dwCurrDirICB;
  90. // Current Working-Directory storage
  91. BOOL  bCWDStored;
  92. DWORD dwCWDStorage;
  93. }UDFInfo_TAG;// g_UDFInfo;
  94. typedef struct {
  95. // Session information
  96. DWORD dwSessionStartLBN;
  97. // Unicode support
  98. BOOL  bIsUsingUnicode;
  99. // Volume information
  100. DWORD dwRootDirICB;
  101. DWORD dwCurrDirICB;
  102. // Current Working-Directory storage
  103. BOOL  bCWDStored;
  104. DWORD dwCWDStorage;
  105. // Directory Hierarchy Tree
  106. UINT16 uDirectoryCnt;
  107. UINT32 hDirTree;
  108. } ISO9660_TAG;//g_ISO9660Info;
  109. typedef union {
  110. UDFInfo_TAG g_UDFInfo;
  111. ISO9660_TAG g_ISO9660Info;
  112. }FileInfo ;
  113. #ifdef ENABLE_FILEX
  114. typedef enum { eISO9660, eUDF_Bridge, eUDF_102, eUDF_200, eAny, eUnknown, eFileX } enFileSysType; 
  115. #else
  116. typedef enum { eISO9660, eUDF_Bridge, eUDF_102, eUDF_200, eAny, eUnknown } enFileSysType;
  117. #endif
  118. typedef enum { eFreeEASpace, eCGMS } enDVD_FileInfoType;
  119. #define FILETYPE_UNKNOWN 0
  120. #define FILETYPE_UNALLOC 1
  121. #define FILETYPE_INTEGRITY 2
  122. #define FILETYPE_INDIRECT 3
  123. #define FILETYPE_DIRECTORY 4
  124. #define FILETYPE_NORMAL 5
  125. #define FILETYPE_BLOCK_DEV 6
  126. #define FILETYPE_CHAR_DEV 7
  127. #define FILETYPE_EXT_ATTR 8
  128. #define FILETYPE_FIFO 9
  129. #define FILETYPE_C_ISSOCK 10
  130. #define FILETYPE_TERMINAL 11
  131. #define FILETYPE_LINK 12
  132. #define FILETYPE_STREAM 13
  133. #define FILETYPE_VOLUME 14
  134. #define FILESYS_WILDCARD_SEARCH L"*"
  135. #define FILESYS_BLURRED_SEARCH L'*' //MikeX_1213_2004_A
  136. /////////////////////////////////////////////////////////////////////////////
  137. // Common Data-Structures
  138. typedef struct FindData_TAG {
  139. WCHAR szFileID[65]; // File/Directory Name
  140. UINT8 uFileType; // Type of this File
  141. UINT32 cbFileSizeHigh; // File-Size's MS-32-bits (File-Size is given in Bytes)
  142. UINT32 cbFileSizeLow; // File-Size's LS-32-bits (File-Size is given in Bytes)
  143. DWORD dwStartAddr; // File's Start-Address
  144. } FindData, * PFindData;
  145. typedef struct DVDFileInfo_TAG {
  146. enDVD_FileInfoType eInfoType;
  147. union DVDInfo_TAG {
  148. UINT16 cbFreeEASpace;
  149. struct CopyrightManagementInfo_TAG {
  150. BYTE  ucCGMSInfo;
  151. UINT8 uDataStructureType;
  152. BYTE  aProtectionSystemInfo[4];
  153. BYTE  aPadding[2];
  154. } cmiCGMS;
  155. } Info;
  156. } DVDFileInfo, * PDVDFileInfo;
  157. /////////////////////////////////////////////////////////////////////////////
  158. // File-System Identification
  159. enFileSysType FileSys_determineType(void);
  160. BOOL FileSys_selectType(enFileSysType eCurrentType);
  161. enFileSysType FileSys_getSelectedType(void);
  162. /////////////////////////////////////////////////////////////////////////////
  163. // Initialization
  164. BOOL FileSys_initialize(BOOL bLongFilenameSupport);
  165. void FileSys_setPathDelimiter(WCHAR cPathDelimiter);
  166. WCHAR FileSys_getPathDelimiter(void);
  167. /////////////////////////////////////////////////////////////////////////////
  168. // Navigation
  169. BOOL FileSys_goToRootDir(void);
  170. BOOL FileSys_changeDir(LPCWSTR i_pszDestDirName);
  171. BOOL FileSys_goUp(void);
  172. /////////////////////////////////////////////////////////////////////////////
  173. // Queries
  174. void FileSys_getVolumeName(LPCWSTR volumeName);
  175. void FileSys_getCurrentPath(LPCWSTR currPath);
  176. BOOL FileSys_fileExists(LPCWSTR i_pszFilename);
  177. BOOL FileSys_getFileLocation(LPCWSTR i_pszFilename, DWORD *o_pFileLocation);
  178. BOOL FileSys_getDVDFileInfo(LPCWSTR i_pszFilename, enDVD_FileInfoType eType, 
  179. DVDFileInfo *o_pFileInfo, FindData *o_pFindData);
  180. UINT16 FileSys_findFirstFile(LPCWSTR i_pszFilename, FindData *o_pFindData);
  181. BOOL FileSys_findNextFile(UINT16 hFindFile, FindData *o_pFindData);
  182. BOOL FileSys_findClose(UINT16 hFindFile);
  183. #ifdef DVD_VR_SUPPORT
  184. #define DVDVR_PLAY_QUEUE_SIZE 256
  185. typedef struct  _DVDVR_PLAY_QUEUE_NODE
  186. {
  187. DWORD dwLength; //by LBN
  188. DWORD dwStartLBN;
  189. } DVDVR_PLAY_QUEUE_NODE;
  190. BOOL FileSys_DVDVR_getFileExtent(LPCWSTR i_pszFilename, DWORD *o_pFileExtent);
  191. BOOL FileSys_DVDVR_FreeFileExtent(DWORD i_pFileExtent);
  192. BOOL FileSys_DVDVR_ReadFile(DWORD pFileHandle, DWORD dwOffset, DWORD dwSize, BYTE* o_pBuffer);
  193. BOOL FileSys_DVDVR_PlayQueue_Construct(void);
  194. void FileSys_DVDVR_PlayQueue_Clear(void);
  195. void FileSys_DVDVR_PlayQueue_Destruct(void);
  196. BOOL FileSys_DVDVR_PlayQueue_NextExtent(void);
  197. BOOL FileSys_DVDVR_PlayExtents(DWORD pFileHandle, DWORD dwOffset, DWORD dwSize);
  198. #endif
  199. #ifdef ENABLE_FILEX
  200. #ifndef I86_HW_FCU
  201. #ifdef FILEX_READ_4_SECTORS
  202. #define FILEX_CACHE_SIZE (2048 + 1024)
  203. #else
  204. #define FILEX_CACHE_SIZE 1024
  205. #endif
  206. #endif //I86_HW_FCU
  207. typedef struct STRUCT_FILEX{
  208. #ifndef I86_HW_FCU
  209. BYTE  ucFileXCacheBuff[FILEX_CACHE_SIZE];
  210. #endif
  211. FX_MEDIA     FileX_media;
  212. } FILEX;
  213. BOOL FileSys_FileOpen(STRUCT_FILE * file, DWORD dwStartAddr, UINT32 cbFileSizeHigh, UINT32 cbFileSizeLow);
  214. BOOL FileSys_FileSeek(STRUCT_FILE * file, UINT32 cbFileOffsetHigh, UINT32 cbFileOffsetLow); 
  215. UINT16 FileSys_FileRead(STRUCT_FILE * file, BYTE * read_buff, UINT32 size,UINT32 * actual_sizectual_size);
  216. BOOL FileSys_FileClose(STRUCT_FILE * file); 
  217. BOOL FileSys_IsFileClosed(STRUCT_FILE * file_ptr);
  218. BOOL FileSys_IsCardAvailable(void);                      
  219. BOOL FileX_SetDataSpace(FILEX * pFileX);
  220. BOOL FileSys_close (void);
  221. #if 0//jerry temp TODO: remove it later.
  222. BOOL FileSys_OF(FX_FILE *file_ptr, CHAR *file_name, UINT open_type);
  223. #endif
  224. #endif
  225. #endif //__FILESYSTEM_H_