コード例 #1
0
        public static PitData ParsePIT(string fileName)
        {
            PitData data2;

            if (!File.Exists(fileName))
            {
                throw new Exception("The specified PIT file does not exist!");
            }
            using (FileStream stream4 = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                byte[] array   = new byte[((int)(stream4.Length - 1L)) + 1];
                byte[] buffer2 = new byte[0x1400];
                byte[] pattern = new byte[] { 0x76, 0x98, 0x34, 0x12 };
                byte[] buffer4 = new byte[0x100];
                long   num     = 0L;
                stream4.Read(array, 0, array.Length);
                num              = HelperUtils.FindByteOffset(array, pattern, 0);
                buffer2          = HelperUtils.GetByteArray(array, ((int)num) - pattern.Length, buffer2.Length + 1);
                stream4.Position = 0L;
                stream4.SetLength((long)buffer2.Length);
                stream4.Write(buffer2, 0, buffer2.Length);
                stream4.Position = 0L;
                PitInputStream inputStream = new PitInputStream(stream4);
                data2 = new PitData();
                if (!data2.ReadPITFile(inputStream))
                {
                    throw new Exception("The specified PIT file contains corrupt or invalid data!");
                }
                MemoryStream    byteStream   = new MemoryStream();
                PitOutputStream outputStream = new PitOutputStream(byteStream);
                data2.WritePITFile(outputStream);
                stream4.Position = 0L;
                stream4.SetLength(byteStream.Length + buffer4.Length);
                stream4.Write(byteStream.ToArray(), 0, (int)byteStream.Length);
            }
            return(data2);
        }