From 364fbd6cea94045d4addd6f1d7ffbdaed4ca6364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Wed, 10 Sep 2014 19:45:57 +0000 Subject: [PATCH] [CDFS] - Correctly decode address of first session, which now uses MSF format since r64106 svn path=/trunk/; revision=64112 --- reactos/drivers/filesystems/cdfs/fsctl.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/reactos/drivers/filesystems/cdfs/fsctl.c b/reactos/drivers/filesystems/cdfs/fsctl.c index 5f7c7a579d0..5da9923e822 100644 --- a/reactos/drivers/filesystems/cdfs/fsctl.c +++ b/reactos/drivers/filesystems/cdfs/fsctl.c @@ -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;