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;