CDROM_TOC: Fixed comments about TOC_LAST_TRACK behaviour
authorshort <>
Thu, 7 Nov 2002 11:14:52 +0000 (11:14 +0000)
committershort <>
Thu, 7 Nov 2002 11:14:52 +0000 (11:14 +0000)
include/ntos/cdrom.h

index 032bf44..86865e6 100644 (file)
@@ -35,15 +35,20 @@ typedef struct _TRACK_DATA {
   UCHAR  Reserved;
   UCHAR  Control : 4;  /* bitfield; 0 || TOC_DATA_TRACK */
   UCHAR  Adr : 4;      /* Q-subchannel info */
-  UCHAR  TrackNumber;  /* CDROM_TOC.FirstTrack or TOC_LAST_TRACK on last+1 track CDROM_TOC.TrackData[CDROM_TOC.LastTrack-1] */
+  UCHAR  TrackNumber;  /* CDROM_TOC.FirstTrack or TOC_LAST_TRACK behind last track CDROM_TOC.TrackData[CDROM_TOC.LastTrack] */
   UCHAR  Reserved1;
   UCHAR  Address[4];   /* big-endian LBA address for TOC_DATA_TRACK; MSF (sometimes BCD-MSF) for audio */
 } TRACK_DATA, *PTRACK_DATA;
 
 typedef struct _CDROM_TOC {
-  UCHAR  Length[2];    /* <='sizeof(CDROM_TOC)-2' or less; it does not count 'Length' itself; little-endian */
+  /* >='sizeof(CDROM_TOC with (LastTrack-FirstTrack+1)+1{TOC_LAST_TRACK track} tracks)-2'
+   * <='sizeof(CDROM_TOC)-2';
+   * It does not count 'Length' field itself (==minus 2 bytes).
+   * Little-endian format.
+   */
+  UCHAR  Length[2];
   UCHAR  FirstTrack;   /* based anywhere */
-  UCHAR  LastTrack;    /* last TrackData has TOC_LAST_TRACK; 'LastTrack-FirstTrack+1' is the count */
+  UCHAR  LastTrack;    /* 'LastTrack-FirstTrack+1' is the real-tracks count; TOC_LAST_TRACK is one track behind */
   TRACK_DATA  TrackData[MAXIMUM_NUMBER_TRACKS];
 } CDROM_TOC, *PCDROM_TOC;