[CDFS]
authorHervé Poussineau <hpoussin@reactos.org>
Wed, 10 Sep 2014 19:45:57 +0000 (19:45 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Wed, 10 Sep 2014 19:45:57 +0000 (19:45 +0000)
- Correctly decode address of first session, which now uses MSF format since r64106

svn path=/trunk/; revision=64112

reactos/drivers/filesystems/cdfs/fsctl.c

index 5f7c7a5..5da9923 100644 (file)
@@ -200,7 +200,6 @@ CdfsGetVolumeData(PDEVICE_OBJECT DeviceObject,
     PVD_HEADER VdHeader;
     ULONG Size;
     ULONG Offset;
-    ULONG i;
     CDROM_TOC Toc;
 
     DPRINT("CdfsGetVolumeData\n");
@@ -227,10 +226,14 @@ CdfsGetVolumeData(PDEVICE_OBJECT DeviceObject,
     DPRINT("FirstTrack %u, LastTrack %u, TrackNumber %u\n",
         Toc.FirstTrack, Toc.LastTrack, Toc.TrackData[0].TrackNumber);
 
-    Offset = 0;
-    for (i = 0; i < 4; i++)
+    Offset =  Toc.TrackData[0].Address[1] * 60 * 75;
+    Offset += Toc.TrackData[0].Address[2] * 75;
+    Offset += Toc.TrackData[0].Address[3];
+    if (Offset >= 150)
     {
-        Offset = (Offset << 8) + Toc.TrackData[0].Address[i];
+        /* Remove MSF numbering offset of first frame */
+        /* FIXME: should be done only for real cdroms? */
+        Offset -= 150;
     }
     CdInfo->VolumeOffset = Offset;