fs.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:2k
源码类别:

DVD

开发平台:

C/C++

  1. #ifndef __FS_H
  2. #define __FS_H
  3. #include "udf_167.h"
  4. #ifdef DVD_SERVO
  5. extern BYTE gbSrvDiscStatus;
  6. #define DISC_IS_DVD() (gbSrvDiscStatus&0x40)
  7. #else
  8. #define DISC_IS_DVD() (0)
  9. #endif
  10. enum {
  11. UDF_FILE_OPENED = 1
  12. };
  13. enum {
  14. ERROR_FILE_NOT_FOUND          = -100,
  15. ERROR_FILE_ENTRY_FULL         = -101,
  16. ERROR_FILE_ENTRY_INVALID      = -102,
  17. ERROR_FILE_PATH               = -103,
  18. ERROR_FILE_SUBPATH_TOO_LONG   = -105,
  19. ERROR_FILE_MSF_INVALID        = -3,
  20. ERROR_PARAMETER               = -2,
  21. ERROR_GENERIC                 = -1
  22. };
  23. typedef struct {
  24.     int bIsVAT;
  25.     UINT32 FSD_Location; // File Set Descriptor Location
  26.     UINT32 Partition_Location; // Partition Location
  27.     UINT32 RootICB_Location;
  28.     UINT32 DIR_Location;
  29.     UINT32 VAT_Location;
  30.     int nVATCount;
  31.     int nVATOffset;
  32. } UDFVolumeVariable;
  33. extern UDFVolumeVariable UDFVol;
  34. extern short_ad *pshort_ad;
  35. extern UINT32 dVMG_LSN,dAMG_LSN;
  36. // primitive
  37. UINT16 udf_crc(UINT8 *data, UINT32 size, UINT16 crc);
  38. int read_volume(void);
  39. int  read_dir(UINT32 dir_icb, char *fn, UINT32 *picb);
  40. int read_icb(UINT32 sector);
  41. // top level
  42. int fs_init(void);
  43. #define  DVD_LBA    (0)
  44. #define  DVD_VMGI   (1)
  45. #define  DVD_VMGM   (2)
  46. #define  DVD_VTSI   (3)
  47. #define  DVD_VTSM   (4)
  48. #define  DVD_VTSTT  (5)
  49. int read_disc(UINT8, UINT8, UINT32);
  50. void InitVariable();
  51. #ifdef __SIM__
  52. UINT8 *read_disc_loc(UINT8, UINT32, UINT32);
  53. int read_disc_next(void);
  54. #define read_disc_check(p)
  55. ((((UINT8 *)(p)) - ((UINT8 *)(pwb)) > 2048) ? 
  56. ((p) -= 2048, read_disc_next()) : TRUE)
  57. #endif //#ifdef __SIM__
  58. #endif /* __FS_H */