コード例 #1
0
 public int ReadTrack(int track, CdDataReadEventHandler DataReadEvent, uint StartSecond, uint Seconds2Read, CdReadProgressEventHandler ProgressEvent)
 {
     if (((this.TocValid && (track >= this.Toc.FirstTrack)) && (track <= this.Toc.LastTrack)) && (DataReadEvent != null))
     {
         ReadProgressEventArgs args;
         int startSector = this.GetStartSector(track);
         int endSector   = this.GetEndSector(track);
         if ((startSector += ((int)(StartSecond * 0x4b))) >= endSector)
         {
             startSector -= (int)(StartSecond * 0x4b);
         }
         if ((Seconds2Read > 0) && ((startSector + ((int)(Seconds2Read * 0x4b))) < endSector))
         {
             endSector = startSector + ((int)(Seconds2Read * 0x4b));
         }
         uint   num3      = (uint)((endSector - startSector) * 0x930);
         uint   bytesread = 0;
         byte[] buffer    = new byte[0x7770];
         bool   flag      = true;
         bool   flag2     = true;
         if (ProgressEvent != null)
         {
             args = new ReadProgressEventArgs(num3, 0);
             ProgressEvent(this, args);
             flag = !args.CancelRead;
         }
         for (int i = startSector; ((i < endSector) && flag) && flag2; i += 13)
         {
             int numSectors = ((i + 13) < endSector) ? 13 : (endSector - i);
             flag2 = this.ReadSector(i, buffer, numSectors);
             if (flag2)
             {
                 DataReadEventArgs ea = new DataReadEventArgs(buffer, (uint)(0x930 * numSectors));
                 DataReadEvent(this, ea);
                 bytesread += (uint)(0x930 * numSectors);
                 if (ProgressEvent != null)
                 {
                     args = new ReadProgressEventArgs(num3, bytesread);
                     ProgressEvent(this, args);
                     flag = !args.CancelRead;
                 }
             }
         }
         if (flag2)
         {
             return((int)bytesread);
         }
         return(-1);
     }
     return(-1);
 }
コード例 #2
0
ファイル: CDDrive.cs プロジェクト: rraguso/protone-suite
 public int ReadTrack(int track, CdDataReadEventHandler DataReadEvent, uint StartSecond, uint Seconds2Read, CdReadProgressEventHandler ProgressEvent)
 {
     if (((this.TocValid && (track >= this.Toc.FirstTrack)) && (track <= this.Toc.LastTrack)) && (DataReadEvent != null))
     {
         ReadProgressEventArgs args;
         int startSector = this.GetStartSector(track);
         int endSector = this.GetEndSector(track);
         if ((startSector += ((int)(StartSecond * 0x4b))) >= endSector)
         {
             startSector -= (int)(StartSecond * 0x4b);
         }
         if ((Seconds2Read > 0) && ((startSector + ((int)(Seconds2Read * 0x4b))) < endSector))
         {
             endSector = startSector + ((int)(Seconds2Read * 0x4b));
         }
         uint num3 = (uint)((endSector - startSector) * 0x930);
         uint bytesread = 0;
         byte[] buffer = new byte[0x7770];
         bool flag = true;
         bool flag2 = true;
         if (ProgressEvent != null)
         {
             args = new ReadProgressEventArgs(num3, 0);
             ProgressEvent(this, args);
             flag = !args.CancelRead;
         }
         for (int i = startSector; ((i < endSector) && flag) && flag2; i += 13)
         {
             int numSectors = ((i + 13) < endSector) ? 13 : (endSector - i);
             flag2 = this.ReadSector(i, buffer, numSectors);
             if (flag2)
             {
                 DataReadEventArgs ea = new DataReadEventArgs(buffer, (uint)(0x930 * numSectors));
                 DataReadEvent(this, ea);
                 bytesread += (uint)(0x930 * numSectors);
                 if (ProgressEvent != null)
                 {
                     args = new ReadProgressEventArgs(num3, bytesread);
                     ProgressEvent(this, args);
                     flag = !args.CancelRead;
                 }
             }
         }
         if (flag2)
         {
             return (int)bytesread;
         }
         return -1;
     }
     return -1;
 }
コード例 #3
0
 public void OnCdDataRead(object sender, DataReadEventArgs ea)
 {
     Buffer.BlockCopy(ea.Data, 0, BufferArray, WritePosition, (int)ea.DataSize);
     WritePosition += (int)ea.DataSize;
 }
コード例 #4
0
ファイル: CDDrive.cs プロジェクト: rraguso/protone-suite
 public void OnCdDataRead(object sender, DataReadEventArgs ea)
 {
   Buffer.BlockCopy(ea.Data, 0, BufferArray, WritePosition, (int)ea.DataSize);
   WritePosition += (int)ea.DataSize;
 }