一个iso文件,已经将卷描述解析完毕,求解路径表的解析。
会的来help一下阿

解决方案 »

  1.   

    找到资料了共享给大家
    ////
    A path table contains one record for each directory on the CD-ROM
    (including the root directory). The format of a record is as follows:     length
         in bytes  contents
         --------  ---------------------------------------------------------
            1      N, the name length (or 1 for the root directory)
            1      0 [number of sectors in extended attribute record]
            4      number of the first sector in the directory, as a
                     double word
            2      number of record for parent directory (or 1 for the root
                     directory), as a word; the first record is number 1,
                     the second record is number 2, etc.
            N      name (or 0 for the root directory)
          0 or 1   padding byte: if N is odd, this field contains a zero; if
                     N is even, this field is omittedAccording to ISO9660, a directory name consists of at least one and not
    more than 31 capital letters, digits and underscores. For DOS the upper
    limit is eight characters. A path table occupies as many consecutive sectors as may be required to
    hold all its records. The first record always begins in the first byte
    of the first sector. Except for the single byte described above, no
    padding is used between records; hence the last record in a sector is
    usually continued in the next following sector. The unused part of the
    last sector is filled with zeros.The records in a path table are arranged in a precisely specified order.
    For this purpose, each directory has an associated number called its
    level. The level of the root directory is 1. The level of each other
    directory is one greater than the level of its parent. As noted above,
    ISO9660 does not permit levels greater than 8.The relative positions of any two records are determined as follows:     (1) If the levels are different, the directory with the lower level
             appears first. In particular, this implies that the root
             directory is always represented by the first record in the
             table, because it is the only directory with level 1.     (2) If the levels are identical, but the directories have different
             parents, then the directories are in the same relative
             positions as their parents.     (3) Directories with the same level and the same parent are
             arranged in the order obtained by sorting on their names, as
             described in Section 6.
      

  2.   

    A directory consists of a series of directory records in one or more
    consecutive sectors. However, unlike path records, directory records may
    not straddle sector boundaries. There may be unused space at the end of
    each sector, which is filled with zeros.Each directory record represents a file or directory. Its format is as
    follows:     length
         in bytes  contents
         --------  ---------------------------------------------------------
            1      R, the number of bytes in the record (which must be even)
            1      0 [number of sectors in extended attribute record]
            8      number of the first sector of file data or directory
                     (zero for an empty file), as a both endian double word
            8      number of bytes of file data or length of directory,
                     excluding the extended attribute record,
                     as a both endian double word
            1      number of years since 1900
            1      month, where 1=January, 2=February, etc.
            1      day of month, in the range from 1 to 31
            1      hour, in the range from 0 to 23
            1      minute, in the range from 0 to 59
            1      second, in the range from 0 to 59
                     (for DOS this is always an even number)
            1      offset from Greenwich Mean Time, in 15-minute intervals,
                     as a twos complement signed number, positive for time
                     zones east of Greenwich, and negative for time zones
                     west of Greenwich (DOS ignores this field)
            1      flags, with bits as follows:
                     bit     value
                     ------  ------------------------------------------
                     0 (LS)  0 for a norma1 file, 1 for a hidden file
                     1       0 for a file, 1 for a directory
                     2       0 [1 for an associated file]
                     3       0 [1 for record format specified]
                     4       0 [1 for permissions specified]
                     5       0
                     6       0
                     7 (MS)  0 [1 if not the final record for the file]
            1      0 [file unit size for an interleaved file]
            1      0 [interleave gap size for an interleaved file]
            4      1, as a both endian word [volume sequence number]
            1      N, the identifier length
            N      identifier
            P      padding byte: if N is even, P = 1 and this field contains
                     a zero; if N is odd, P = 0 and this field is omitted
        R-33-N-P   unspecified field for system use; must contain an even
                     number of bytesThe length of a directory includes the unused space, if any, at the ends
    of sectors. Hence it is always an exact multiple of 2048 (the sector
    size). Since every directory, even a nominally empty one, contains at
    least two records, the length of a directory is never zero.All fields in the first record (sometimes called the "." record) refer
    to the directory itself, except that the identifier length is 1, and the
    identifier is zero. The root directory record in the Primary Volume
    Descriptor also has this format.All fields in the second record (sometimes called the ".." record) refer
    to the parent directory, except that the identifier length is 1, and the
    identifier is 1. The second record in the root directory refers to the
    root directory.The identifier for a subdirectory is its name. The identifier for a file
    consists of the following fields, in the order given:     (1) The name, consisting of the ASCII codes for at least one and
             not more than eight capital letters, digits and underscores.     (2) If there is an extension, the ASCII code for a period (46). If
             there is no extension, this field is omitted.     (3) The extension, consisting of the ASCII codes for not more than
             three capital letters, digits and underscores. If there is no
             extension, this field is omitted.     (4) The ASCII code for a semicolon (59).     (5) The ASCII code for 1 (49). [On other systems, this is the
             version number, consisting of the ASCII codes for a sequence of
             digits representing a number between 1 and 32767, inclusive.]Some implementations for DOS omit (4) and (5), and some use punctuation
    s other than underscores in file names and extensions.Directory records other than the first two are sorted as follows:     (1) Records are sorted by name, as described above.     (2) Every series of records with the same name is sorted by
             extension, as described above. For this purpose, a record
             without an extension is sorted as though its extension
             consisted of ASCII blanks (32).     (3) [On other systems, every series of records with the same name
             and extension is sorted in order of decreasing version number.]     (4) [On other systems, two records with the same name, extension
             and version number are permitted, if the first record is an
             associated file.][ISO9660 permits names containing more than eight characters and
    extensions containing more than three characters, as long as both of
    them together contain no more than 30 characters.]It is apparently permissible under ISO9660 to use two or more
    consecutive records to represent consecutive pieces of the same file.
    Bit 7 of the flags byte is set in every record except the last one.
    However, this technique seems pointless and is apparently not used. It
    is not supported by MSCDEX.Interleaving is another technique that is apparently seldom used. It is
    not supported by MSCDEX (version 2.10).