home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / SHSUCD11.ZIP / CDROM.H < prev    next >
Text File  |  1993-08-20  |  7KB  |  177 lines

  1. /* begin cdrom.h  */
  2.  
  3. /*  CD Rom types     */
  4. #define UNKNOWN         0
  5. #define ISO9660         1
  6. #define HIGHSIERRA      2
  7.  
  8. /* Device Driver return status codes */
  9.  
  10. #define  DEV_DONE             0x0100
  11. #define  DEV_BUSY             0x0200
  12. #define  DEV_ERROR            0x8000
  13. #define  DE_WPROTECT          0x0000
  14. #define  DE_UNKNOWNUNIT       0x0001
  15. #define  DE_NOTREADY          0x0002
  16. #define  DE_UNKNOWNCMD        0x0003
  17. #define  DE_CRC               0x0004
  18. #define  DE_RHLEN             0x0005
  19. #define  DE_SEEK              0x0006
  20. #define  DE_MEDIA             0x0007
  21. #define  DE_SECTORNOTFOUND    0x0008
  22. #define  DE_GENERAL           0x000c
  23. #define  DE_INVALIDDISKCHANGE 0x000f
  24.  
  25. /* CD Directory Entry Flags */
  26. #define HIDDEN          0x01
  27. #define DIR             0x02
  28. #define ASSOCFILE       0x04
  29. #define HSEARFMT        0x04       /* file has HS ext attrib rcd fmt */
  30. #define RECORD          0x08
  31. #define PROTECTION      0x10
  32. #define MULTIEXTENT     0x80       /* file has at least one more extent */
  33.  
  34. /*  ISO & HSC common CD ROM Directory offsets   */
  35. WORD    Blkoff     =  2;
  36. WORD    Sizeoff    =  10;
  37. WORD    Dateoff    =  18;
  38. WORD    FIDLenoff  =  32;
  39. WORD    Nameoff    =  33;
  40.  
  41. #define MBField(from, to)(to - from + 1) /* multi-byte field macro */
  42.  
  43. struct Date_Time {
  44.    BYTE      Yr;         /* base 1900   */
  45.    BYTE      Mth;        /* 1-12        */
  46.    BYTE      Day;        /* 1-31        */
  47.    BYTE      Hr;         /* 0-23        */
  48.    BYTE      Min;        /* 0-59        */
  49.    BYTE      Sec;        /* 0-59        */
  50. };
  51.  
  52. /*  ISO9660 description based upon standard       */
  53.  
  54. struct isoVolDesc {
  55.    BYTE       Type;                                   /* 1            */
  56.    char       ID                 [MBField(  2,  6)];  /* "CD001"      */
  57.    BYTE       Version;                                /* 1            */
  58.    BYTE       Unused1;                                /* 00           */
  59.    char       SysID              [MBField(  9, 40)];  /*  32 a chars  */
  60.    char       VolID              [MBField( 41, 72)];  /*  32 d chars  */
  61.    BYTE       Unused2            [MBField( 73, 80)];  /* 00           */
  62.    DWORD      VolSizeLSB;
  63.    DWORD      VolSizeMSB;
  64.    char       Unused3            [MBField( 89,120)];  /* 00           */
  65.    WORD       SetSizeLSB;
  66.    WORD       SetSizeMSB;
  67.    WORD       SetSeqLSB;
  68.    WORD       SetSeqMSB;
  69.    WORD       BlkSizeLSB;
  70.    WORD       BlkSizeMSB;
  71.    DWORD      PathTabSizeLSB;
  72.    DWORD      PathTabSizeMSB;
  73.    DWORD      PathTabLocLSB;
  74.    DWORD      PathTabAltLocLSB;
  75.    DWORD      PathTabLocMSB;
  76.    DWORD      PathTabAltLocMSB;
  77.    BYTE       DirRec             [MBField(157,190)];
  78.    char       VolSetID           [MBField(191,318)];  /* 128 d chars  */
  79.    char       PubID              [MBField(319,446)];  /* 128 a chars  */
  80.    char       PrepID             [MBField(447,574)];  /* 128 a chars  */
  81.    char       AppID              [MBField(575,702)];  /* 128 a chars  */
  82.    char       CopyRightID        [MBField(703,739)];  /*  37 d chars  */
  83.    char       AbstractID         [MBField(740,776)];  /*  37 d chars  */
  84.    char       BibloID            [MBField(777,813)];  /*  37 d chars  */
  85.    char       CreateDate         [MBField(814,830)];  /* YYYYMMDDHHMMSSssZ */
  86.    char       ModDate            [MBField(831,847)];  /* YYYYMMDDHHMMSSssZ */
  87.    char       ExpDate            [MBField(848,864)];  /* YYYYMMDDHHMMSSssZ */
  88.    char       EffDate            [MBField(865,881)];  /* YYYYMMDDHHMMSSssZ */
  89.    BYTE       StdVer;                                 /* 1             */
  90.    BYTE       Reserved;                               /* 00            */
  91. };
  92.  
  93. struct isoDirRec {
  94.    BYTE      RecLen;
  95.    BYTE      ExAttrRecLen;
  96.    DWORD     ExtLocLSB;
  97.    DWORD     ExtLocMSB;
  98.    DWORD     DataLenLSB;
  99.    DWORD     DataLenMSB;
  100.    struct Date_Time  Date;                   /* YMDHMS        */
  101.    BYTE      Offset;            /* -48 to +52  15 min increments from GMT */
  102.    BYTE      Flags;
  103.    BYTE      FileUnitSize;
  104.    BYTE      InterLeave;
  105.    WORD      VolSeqNoLSB;
  106.    WORD      VolSeqNoMSB;
  107.    BYTE      FIDLen;
  108.    char      FileID[1];                               /* d chars        */
  109. };
  110.  
  111. /*  High Sierria description based upon "Inside the ISO-9660 Filesytem Format",
  112.     Jolitz & Jolitz, DDJ, Dec. 1992.
  113. */
  114.  
  115. struct hsVolDesc {
  116.    DWORD     LbnLSB;
  117.    DWORD     LbnMSB;
  118.    BYTE      Type;                                      /* 1            */
  119.    char      ID                  [MBField( 10 ,  14)];  /* "CDROM"      */
  120.    BYTE      Version;                                   /* 1            */
  121.    BYTE      Reserved1;
  122.    char      SysID               [MBField( 17, 48)];    /*  32 a chars  */
  123.    char      VolID               [MBField( 49, 80)];    /*  32 d chars  */
  124.    BYTE      Reserved2           [MBField( 81, 88)];
  125.    DWORD     VolSizeLSB;
  126.    DWORD     VolSizeMSB;
  127.    BYTE      Reserved3           [MBField( 97,128)];
  128.    WORD      SetSizeLSB;
  129.    WORD      SetSizeMSB;
  130.    WORD      SetSeqLSB;
  131.    WORD      SetSeqMSB;
  132.    WORD      BlkSizeLSB;
  133.    WORD      BlkSizeMSB;
  134.    DWORD     PathTabSizeLSB;
  135.    DWORD     PathTabSizeMSB;
  136.    DWORD     PathTabLocLSB;
  137.    DWORD     PathTabAlt1LocLSB;
  138.    DWORD     PathTabAlt2LocLSB;
  139.    DWORD     PathTabAlt3LocLSB;
  140.    DWORD     PathTabLocMSB;
  141.    DWORD     PathTabAlt1LocMSB;
  142.    DWORD     PathTabAlt2LocMSB;
  143.    DWORD     PathTabAlt3LocMSB;
  144.    BYTE      DirRec              [MBField(181,214)];
  145.    char      VolSetID            [MBField(215,342)];  /* 128 d chars  */
  146.    char      PubID               [MBField(343,470)];  /* 128 a chars  */
  147.    char      PrepID              [MBField(471,598)];  /* 128 a chars  */
  148.    char      AppID               [MBField(599,726)];  /* 128 a chars  */
  149.    char      CopyRightID         [MBField(727,758)];  /*  32 d chars  */
  150.    char      AbstractID          [MBField(759,790)];  /*  32 d chars  */
  151.    char      CreateDate          [MBField(791,806)];  /* YYYYMMDDHHMMSSss */
  152.    char      ModDate             [MBField(807,822)];  /* YYYYMMDDHHMMSSss */
  153.    char      ExpDate             [MBField(823,838)];  /* YYYYMMDDHHMMSSss */
  154.    char      EffDate             [MBField(839,854)];  /* YYYYMMDDHHMMSSss */
  155.    BYTE      StdVer;
  156.    BYTE      Reserved4;                               /* 00                */
  157. };
  158.  
  159. struct hsDirRec {
  160.    BYTE      RecLen;
  161.    BYTE      ExtRecLen;
  162.    DWORD     ExtLocLSB;
  163.    DWORD     ExtLocMSB;
  164.    DWORD     DataLenLSB;
  165.    DWORD     DataLenMSB;
  166.    struct Date_Time Date;                            /* YMDHMS         */
  167.    BYTE      Flags;
  168.    BYTE      Reserved1;
  169.    BYTE      InterLeave;
  170.    BYTE      SkipFactor;
  171.    WORD      VolSeqNoLSB;
  172.    WORD      VolSeqNoMSB;
  173.    BYTE      FIDLen;
  174.    char      FileID[1];
  175. };
  176.  
  177. /* end cdrom.h  */