private void CDTOCCallback(int disk, IntPtr dest) { var toc = new LibNymaCore.TOC { Tracks = new LibNymaCore.TOC.Track[101] }; SetupTOC(toc, _disks[disk].TOC); Marshal.StructureToPtr(toc, dest, false); }
private static void SetupTOC(LibNymaCore.TOC t, DiscTOC tin) { // everything that's not commented, we're sure about t.FirstTrack = tin.FirstRecordedTrackNumber; t.LastTrack = tin.LastRecordedTrackNumber; t.DiskType = (int)tin.Session1Format; for (int i = 0; i < 101; i++) { t.Tracks[i].Adr = tin.TOCItems[i].Exists ? 1 : 0; // ???? t.Tracks[i].Lba = tin.TOCItems[i].LBA; t.Tracks[i].Control = (int)tin.TOCItems[i].Control; t.Tracks[i].Valid = tin.TOCItems[i].Exists ? 1 : 0; } }
private void CDTOCCallback(int disk, [In, Out] LibNymaCore.TOC t) { SetupTOC(t, _disks[disk].TOC); }