mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Update CICMMetadata version.
This commit is contained in:
@@ -553,7 +553,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
Descriptors = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = dev.UsbDescriptors.Length,
|
||||
Size = (ulong)dev.UsbDescriptors.Length,
|
||||
Checksums = Checksum.GetChecksums(dev.UsbDescriptors).ToArray()
|
||||
}
|
||||
};
|
||||
@@ -571,7 +571,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
CIS = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = dev.Cis.Length,
|
||||
Size = (ulong)dev.Cis.Length,
|
||||
Checksums = Checksum.GetChecksums(dev.Cis).ToArray()
|
||||
}
|
||||
};
|
||||
@@ -622,7 +622,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
Identify = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = cmdBuf.Length,
|
||||
Size = (ulong)cmdBuf.Length,
|
||||
Checksums = Checksum.GetChecksums(cmdBuf).ToArray()
|
||||
}
|
||||
};
|
||||
@@ -642,7 +642,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
filesystems.AddRange(from partition in sidecar.BlockMedia[0].FileSystemInformation
|
||||
where partition.FileSystems != null
|
||||
from fileSystem in partition.FileSystems
|
||||
select ((ulong)partition.StartSector, fileSystem.Type));
|
||||
select (partition.StartSector, fileSystem.Type));
|
||||
|
||||
if(filesystems.Count > 0)
|
||||
foreach(var filesystem in filesystems.Select(o => new {o.start, o.type}).Distinct())
|
||||
@@ -666,13 +666,13 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.BlockMedia[0].DiskType = xmlDskTyp;
|
||||
sidecar.BlockMedia[0].DiskSubType = xmlDskSubTyp;
|
||||
sidecar.BlockMedia[0].Interface = "ATA";
|
||||
sidecar.BlockMedia[0].LogicalBlocks = (long)blocks;
|
||||
sidecar.BlockMedia[0].PhysicalBlockSize = (int)physicalsectorsize;
|
||||
sidecar.BlockMedia[0].LogicalBlockSize = (int)blockSize;
|
||||
sidecar.BlockMedia[0].LogicalBlocks = blocks;
|
||||
sidecar.BlockMedia[0].PhysicalBlockSize = physicalsectorsize;
|
||||
sidecar.BlockMedia[0].LogicalBlockSize = blockSize;
|
||||
sidecar.BlockMedia[0].Manufacturer = dev.Manufacturer;
|
||||
sidecar.BlockMedia[0].Model = dev.Model;
|
||||
sidecar.BlockMedia[0].Serial = dev.Serial;
|
||||
sidecar.BlockMedia[0].Size = (long)(blocks * blockSize);
|
||||
sidecar.BlockMedia[0].Size = blocks * blockSize;
|
||||
if(cylinders > 0 && heads > 0 && sectors > 0)
|
||||
{
|
||||
sidecar.BlockMedia[0].Cylinders = cylinders;
|
||||
|
||||
@@ -585,7 +585,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].PFI = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -593,7 +593,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].DMI = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -602,7 +602,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].CMI = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
|
||||
@@ -621,7 +621,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].BCA = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -630,7 +630,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].DDS = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -639,7 +639,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].SAI = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -647,7 +647,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].PRI = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -655,7 +655,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].MediaID = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -663,7 +663,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].PFIR = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -671,7 +671,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].ADIP = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -679,7 +679,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].DCB = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -687,7 +687,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].DI = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -703,7 +703,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
SecuritySectors = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
}
|
||||
}
|
||||
@@ -716,7 +716,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].Xbox.PFI = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -726,7 +726,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].Xbox.DMI = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -734,7 +734,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].TOC = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -742,7 +742,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].ATIP = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -750,7 +750,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].PMA = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
@@ -758,17 +758,28 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.OpticalDisc[0].LeadInCdText = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
};
|
||||
break;
|
||||
case MediaTagType.CD_FirstTrackPregap:
|
||||
sidecar.OpticalDisc[0].FirstTrackPregrap = new[]
|
||||
{
|
||||
new BorderType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
}
|
||||
};
|
||||
break;
|
||||
case MediaTagType.CD_LeadIn:
|
||||
sidecar.OpticalDisc[0].LeadIn = new[]
|
||||
{
|
||||
new BorderType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = tag.Value.Length,
|
||||
Size = (ulong)tag.Value.Length,
|
||||
Checksums = Checksum.GetChecksums(tag.Value).ToArray()
|
||||
}
|
||||
};
|
||||
|
||||
@@ -863,7 +863,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
from partition in xmlTrack.FileSystemInformation
|
||||
where partition.FileSystems != null
|
||||
from fileSystem in partition.FileSystems
|
||||
select ((ulong)partition.StartSector, fileSystem.Type));
|
||||
select (partition.StartSector, fileSystem.Type));
|
||||
|
||||
if(filesystems.Count > 0)
|
||||
foreach(var filesystem in filesystems.Select(o => new {o.start, o.type}).Distinct())
|
||||
@@ -904,7 +904,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
Descriptors = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = dev.UsbDescriptors.Length,
|
||||
Size = (ulong)dev.UsbDescriptors.Length,
|
||||
Checksums = Checksum.GetChecksums(dev.UsbDescriptors).ToArray()
|
||||
}
|
||||
};
|
||||
@@ -920,7 +920,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
Identify = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = cmdBuf.Length,
|
||||
Size = (ulong)cmdBuf.Length,
|
||||
Checksums = Checksum.GetChecksums(cmdBuf).ToArray()
|
||||
}
|
||||
};
|
||||
@@ -935,7 +935,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
Inquiry = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = cmdBuf.Length,
|
||||
Size = (ulong)cmdBuf.Length,
|
||||
Checksums = Checksum.GetChecksums(cmdBuf).ToArray()
|
||||
}
|
||||
};
|
||||
@@ -990,7 +990,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.BlockMedia[0].SCSI.ModeSense10 = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = cmdBuf.Length,
|
||||
Size = (ulong)cmdBuf.Length,
|
||||
Checksums = Checksum.GetChecksums(cmdBuf).ToArray()
|
||||
};
|
||||
|
||||
@@ -1009,7 +1009,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.BlockMedia[0].SCSI.ModeSense = new DumpType
|
||||
{
|
||||
Image = outputPath,
|
||||
Size = cmdBuf.Length,
|
||||
Size = (ulong)cmdBuf.Length,
|
||||
Checksums = Checksum.GetChecksums(cmdBuf).ToArray()
|
||||
};
|
||||
}
|
||||
@@ -1020,7 +1020,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
filesystems.AddRange(from partition in sidecar.BlockMedia[0].FileSystemInformation
|
||||
where partition.FileSystems != null
|
||||
from fileSystem in partition.FileSystems
|
||||
select ((ulong)partition.StartSector, fileSystem.Type));
|
||||
select (partition.StartSector, fileSystem.Type));
|
||||
|
||||
if(filesystems.Count > 0)
|
||||
foreach(var filesystem in filesystems.Select(o => new {o.start, o.type}).Distinct())
|
||||
@@ -1040,13 +1040,13 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
else if(dev.IsUsb) sidecar.BlockMedia[0].Interface = "USB";
|
||||
else if(dev.IsFireWire) sidecar.BlockMedia[0].Interface = "FireWire";
|
||||
else sidecar.BlockMedia[0].Interface = "SCSI";
|
||||
sidecar.BlockMedia[0].LogicalBlocks = (long)blocks;
|
||||
sidecar.BlockMedia[0].PhysicalBlockSize = (int)physicalBlockSize;
|
||||
sidecar.BlockMedia[0].LogicalBlockSize = (int)logicalBlockSize;
|
||||
sidecar.BlockMedia[0].LogicalBlocks = blocks;
|
||||
sidecar.BlockMedia[0].PhysicalBlockSize = physicalBlockSize;
|
||||
sidecar.BlockMedia[0].LogicalBlockSize = logicalBlockSize;
|
||||
sidecar.BlockMedia[0].Manufacturer = dev.Manufacturer;
|
||||
sidecar.BlockMedia[0].Model = dev.Model;
|
||||
sidecar.BlockMedia[0].Serial = dev.Serial;
|
||||
sidecar.BlockMedia[0].Size = (long)(blocks * blockSize);
|
||||
sidecar.BlockMedia[0].Size = blocks * blockSize;
|
||||
|
||||
if(dev.IsRemovable) sidecar.BlockMedia[0].DumpHardwareArray = resume.Tries.ToArray();
|
||||
}
|
||||
|
||||
@@ -231,7 +231,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.BlockMedia[0].SCSI.ModeSense10 = new DumpType
|
||||
{
|
||||
Image = outputPrefix + ".modesense10.bin",
|
||||
Size = cmdBuf.Length,
|
||||
Size = (ulong)cmdBuf.Length,
|
||||
Checksums = Checksum.GetChecksums(cmdBuf).ToArray()
|
||||
};
|
||||
DataFile.WriteTo("SCSI Dump", sidecar.BlockMedia[0].SCSI.ModeSense10.Image, cmdBuf);
|
||||
@@ -252,7 +252,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.BlockMedia[0].SCSI.ModeSense = new DumpType
|
||||
{
|
||||
Image = outputPrefix + ".modesense.bin",
|
||||
Size = cmdBuf.Length,
|
||||
Size = (ulong)cmdBuf.Length,
|
||||
Checksums = Checksum.GetChecksums(cmdBuf).ToArray()
|
||||
};
|
||||
DataFile.WriteTo("SCSI Dump", sidecar.BlockMedia[0].SCSI.ModeSense.Image, cmdBuf);
|
||||
@@ -379,12 +379,12 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
Image = new ImageType
|
||||
{
|
||||
format = "BINARY",
|
||||
offset = (long)currentSize,
|
||||
offset = currentSize,
|
||||
offsetSpecified = true,
|
||||
Value = outputPrefix + ".bin"
|
||||
},
|
||||
Sequence = (long)currentFile,
|
||||
StartBlock = (long)currentBlock,
|
||||
Sequence = currentFile,
|
||||
StartBlock = currentBlock,
|
||||
BlockSize = blockSize
|
||||
};
|
||||
Checksum fileChk = new Checksum();
|
||||
@@ -393,12 +393,12 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
Image = new ImageType
|
||||
{
|
||||
format = "BINARY",
|
||||
offset = (long)currentSize,
|
||||
offset = currentSize,
|
||||
offsetSpecified = true,
|
||||
Value = outputPrefix + ".bin"
|
||||
},
|
||||
Sequence = currentPartition,
|
||||
StartBlock = (long)currentBlock
|
||||
StartBlock = currentBlock
|
||||
};
|
||||
Checksum partitionChk = new Checksum();
|
||||
|
||||
@@ -421,8 +421,8 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
dumpLog.WriteLine("Finished partition {0}", currentPartition);
|
||||
currentTapePartition.File = files.ToArray();
|
||||
currentTapePartition.Checksums = partitionChk.End().ToArray();
|
||||
currentTapePartition.EndBlock = (long)(currentBlock - 1);
|
||||
currentTapePartition.Size = (long)currentPartitionSize;
|
||||
currentTapePartition.EndBlock = currentBlock - 1;
|
||||
currentTapePartition.Size = currentPartitionSize;
|
||||
partitions.Add(currentTapePartition);
|
||||
|
||||
currentPartition++;
|
||||
@@ -435,12 +435,12 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
Image = new ImageType
|
||||
{
|
||||
format = "BINARY",
|
||||
offset = (long)currentSize,
|
||||
offset = currentSize,
|
||||
offsetSpecified = true,
|
||||
Value = outputPrefix + ".bin"
|
||||
},
|
||||
Sequence = (long)currentFile,
|
||||
StartBlock = (long)currentBlock,
|
||||
Sequence = currentFile,
|
||||
StartBlock = currentBlock,
|
||||
BlockSize = blockSize
|
||||
};
|
||||
currentFileSize = 0;
|
||||
@@ -451,12 +451,12 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
Image = new ImageType
|
||||
{
|
||||
format = "BINARY",
|
||||
offset = (long)currentSize,
|
||||
offset = currentSize,
|
||||
offsetSpecified = true,
|
||||
Value = outputPrefix + ".bin"
|
||||
},
|
||||
Sequence = currentPartition,
|
||||
StartBlock = (long)currentBlock
|
||||
StartBlock = currentBlock
|
||||
};
|
||||
currentPartitionSize = 0;
|
||||
partitionChk = new Checksum();
|
||||
@@ -551,8 +551,8 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
(fxSense.Value.ASCQ == 0x01 || fxSense.Value.Filemark))
|
||||
{
|
||||
currentTapeFile.Checksums = fileChk.End().ToArray();
|
||||
currentTapeFile.EndBlock = (long)(currentBlock - 1);
|
||||
currentTapeFile.Size = (long)currentFileSize;
|
||||
currentTapeFile.EndBlock = currentBlock - 1;
|
||||
currentTapeFile.Size = currentFileSize;
|
||||
files.Add(currentTapeFile);
|
||||
|
||||
currentFile++;
|
||||
@@ -561,12 +561,12 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
Image = new ImageType
|
||||
{
|
||||
format = "BINARY",
|
||||
offset = (long)currentSize,
|
||||
offset = currentSize,
|
||||
offsetSpecified = true,
|
||||
Value = outputPrefix + ".bin"
|
||||
},
|
||||
Sequence = (long)currentFile,
|
||||
StartBlock = (long)currentBlock,
|
||||
Sequence = currentFile,
|
||||
StartBlock = currentBlock,
|
||||
BlockSize = blockSize
|
||||
};
|
||||
currentFileSize = 0;
|
||||
@@ -644,8 +644,8 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
{
|
||||
format = "Raw disk image (sector by sector copy)", Value = outputPrefix + ".bin"
|
||||
};
|
||||
sidecar.BlockMedia[0].LogicalBlocks = (long)blocks;
|
||||
sidecar.BlockMedia[0].Size = (long)currentSize;
|
||||
sidecar.BlockMedia[0].LogicalBlocks = blocks;
|
||||
sidecar.BlockMedia[0].Size = currentSize;
|
||||
sidecar.BlockMedia[0].DumpHardwareArray = new DumpHardwareType[1];
|
||||
sidecar.BlockMedia[0].DumpHardwareArray[0] =
|
||||
new DumpHardwareType {Extents = new ExtentType[1]};
|
||||
|
||||
@@ -82,7 +82,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
byte[] ocr = null;
|
||||
byte[] ecsd = null;
|
||||
byte[] scr = null;
|
||||
int physicalBlockSize = 0;
|
||||
uint physicalBlockSize = 0;
|
||||
bool byteAddressed = true;
|
||||
|
||||
Dictionary<MediaTagType, byte[]> mediaTags = new Dictionary<MediaTagType, byte[]>();
|
||||
@@ -513,7 +513,9 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
{
|
||||
cidDump = new DumpType
|
||||
{
|
||||
Image = outputPath, Size = cid.Length, Checksums = Checksum.GetChecksums(cid).ToArray()
|
||||
Image = outputPath,
|
||||
Size = (ulong)cid.Length,
|
||||
Checksums = Checksum.GetChecksums(cid).ToArray()
|
||||
};
|
||||
|
||||
ret =
|
||||
@@ -536,7 +538,9 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
{
|
||||
csdDump = new DumpType
|
||||
{
|
||||
Image = outputPath, Size = csd.Length, Checksums = Checksum.GetChecksums(csd).ToArray()
|
||||
Image = outputPath,
|
||||
Size = (ulong)csd.Length,
|
||||
Checksums = Checksum.GetChecksums(csd).ToArray()
|
||||
};
|
||||
|
||||
ret =
|
||||
@@ -559,7 +563,9 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
{
|
||||
sidecar.BlockMedia[0].MultiMediaCard.ExtendedCSD = new DumpType
|
||||
{
|
||||
Image = outputPath, Size = ecsd.Length, Checksums = Checksum.GetChecksums(ecsd).ToArray()
|
||||
Image = outputPath,
|
||||
Size = (ulong)ecsd.Length,
|
||||
Checksums = Checksum.GetChecksums(ecsd).ToArray()
|
||||
};
|
||||
|
||||
ret = outputPlugin.WriteMediaTag(ecsd, MediaTagType.MMC_ExtendedCSD);
|
||||
@@ -579,7 +585,9 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
{
|
||||
ocrDump = new DumpType
|
||||
{
|
||||
Image = outputPath, Size = ocr.Length, Checksums = Checksum.GetChecksums(ocr).ToArray()
|
||||
Image = outputPath,
|
||||
Size = (ulong)ocr.Length,
|
||||
Checksums = Checksum.GetChecksums(ocr).ToArray()
|
||||
};
|
||||
|
||||
ret =
|
||||
@@ -602,7 +610,9 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
{
|
||||
sidecar.BlockMedia[0].SecureDigital.SCR = new DumpType
|
||||
{
|
||||
Image = outputPath, Size = scr.Length, Checksums = Checksum.GetChecksums(scr).ToArray()
|
||||
Image = outputPath,
|
||||
Size = (ulong)scr.Length,
|
||||
Checksums = Checksum.GetChecksums(scr).ToArray()
|
||||
};
|
||||
|
||||
ret = outputPlugin.WriteMediaTag(scr, MediaTagType.SD_SCR);
|
||||
@@ -659,13 +669,13 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
sidecar.BlockMedia[0].DiskType = xmlDskTyp;
|
||||
sidecar.BlockMedia[0].DiskSubType = xmlDskSubTyp;
|
||||
// TODO: Implement device firmware revision
|
||||
sidecar.BlockMedia[0].LogicalBlocks = (long)blocks;
|
||||
sidecar.BlockMedia[0].PhysicalBlockSize = physicalBlockSize > 0 ? physicalBlockSize : (int)blockSize;
|
||||
sidecar.BlockMedia[0].LogicalBlockSize = (int)blockSize;
|
||||
sidecar.BlockMedia[0].LogicalBlocks = blocks;
|
||||
sidecar.BlockMedia[0].PhysicalBlockSize = physicalBlockSize > 0 ? physicalBlockSize : blockSize;
|
||||
sidecar.BlockMedia[0].LogicalBlockSize = blockSize;
|
||||
sidecar.BlockMedia[0].Manufacturer = dev.Manufacturer;
|
||||
sidecar.BlockMedia[0].Model = dev.Model;
|
||||
sidecar.BlockMedia[0].Serial = dev.Serial;
|
||||
sidecar.BlockMedia[0].Size = (long)(blocks * blockSize);
|
||||
sidecar.BlockMedia[0].Size = blocks * blockSize;
|
||||
|
||||
UpdateStatus?.Invoke("Writing metadata sidecar");
|
||||
|
||||
|
||||
@@ -964,7 +964,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
from partition in xmlTrack.FileSystemInformation
|
||||
where partition.FileSystems != null
|
||||
from fileSystem in partition.FileSystems
|
||||
select ((ulong)partition.StartSector, fileSystem.Type));
|
||||
select (partition.StartSector, fileSystem.Type));
|
||||
|
||||
if(filesystems.Count > 0)
|
||||
foreach(var filesystem in filesystems.Select(o => new {o.start, o.type}).Distinct())
|
||||
@@ -977,7 +977,7 @@ namespace DiscImageChef.Core.Devices.Dumping
|
||||
{
|
||||
type = LayersTypeType.OTP, typeSpecified = true, Sectors = new SectorsType[1]
|
||||
};
|
||||
sidecar.OpticalDisc[0].Layers.Sectors[0] = new SectorsType {Value = (long)layerBreak};
|
||||
sidecar.OpticalDisc[0].Layers.Sectors[0] = new SectorsType {Value = layerBreak};
|
||||
sidecar.OpticalDisc[0].Sessions = 1;
|
||||
sidecar.OpticalDisc[0].Dimensions = Dimensions.DimensionsFromMediaType(dskType);
|
||||
CommonTypes.Metadata.MediaType.MediaTypeToString(dskType, out string xmlDskTyp,
|
||||
|
||||
@@ -69,15 +69,15 @@ namespace DiscImageChef.Core
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length,
|
||||
Size = (ulong)fi.Length,
|
||||
Sequence = new SequenceType {MediaTitle = image.Info.MediaTitle}
|
||||
}
|
||||
};
|
||||
|
||||
if(image.Info.MediaSequence != 0 && image.Info.LastMediaSequence != 0)
|
||||
{
|
||||
sidecar.AudioMedia[0].Sequence.MediaSequence = image.Info.MediaSequence;
|
||||
sidecar.AudioMedia[0].Sequence.TotalMedia = image.Info.LastMediaSequence;
|
||||
sidecar.AudioMedia[0].Sequence.MediaSequence = (uint)image.Info.MediaSequence;
|
||||
sidecar.AudioMedia[0].Sequence.TotalMedia = (uint)image.Info.LastMediaSequence;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -80,15 +80,15 @@ namespace DiscImageChef.Core
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length,
|
||||
Size = (ulong)fi.Length,
|
||||
Sequence = new SequenceType {MediaTitle = image.Info.MediaTitle}
|
||||
}
|
||||
};
|
||||
|
||||
if(image.Info.MediaSequence != 0 && image.Info.LastMediaSequence != 0)
|
||||
{
|
||||
sidecar.BlockMedia[0].Sequence.MediaSequence = image.Info.MediaSequence;
|
||||
sidecar.BlockMedia[0].Sequence.TotalMedia = image.Info.LastMediaSequence;
|
||||
sidecar.BlockMedia[0].Sequence.MediaSequence = (uint)image.Info.MediaSequence;
|
||||
sidecar.BlockMedia[0].Sequence.TotalMedia = (uint)image.Info.LastMediaSequence;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -111,7 +111,7 @@ namespace DiscImageChef.Core
|
||||
Checksums =
|
||||
Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY))
|
||||
.ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY).Length
|
||||
}
|
||||
};
|
||||
break;
|
||||
@@ -123,7 +123,7 @@ namespace DiscImageChef.Core
|
||||
Checksums = Checksum
|
||||
.GetChecksums(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY))
|
||||
.ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.ATA_IDENTIFY).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.ATA_IDENTIFY).Length
|
||||
}
|
||||
};
|
||||
break;
|
||||
@@ -131,7 +131,10 @@ namespace DiscImageChef.Core
|
||||
byte[] cis = image.ReadDiskTag(MediaTagType.PCMCIA_CIS);
|
||||
sidecar.BlockMedia[0].PCMCIA = new PCMCIAType
|
||||
{
|
||||
CIS = new DumpType {Checksums = Checksum.GetChecksums(cis).ToArray(), Size = cis.Length}
|
||||
CIS = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(cis).ToArray(), Size = (ulong)cis.Length
|
||||
}
|
||||
};
|
||||
Tuple[] tuples = CIS.GetTuples(cis);
|
||||
if(tuples != null)
|
||||
@@ -177,7 +180,7 @@ namespace DiscImageChef.Core
|
||||
Checksums = Checksum
|
||||
.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_INQUIRY))
|
||||
.ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SCSI_INQUIRY).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.SCSI_INQUIRY).Length
|
||||
}
|
||||
};
|
||||
break;
|
||||
@@ -187,7 +190,7 @@ namespace DiscImageChef.Core
|
||||
sidecar.BlockMedia[0].SecureDigital.CID = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CID)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SD_CID).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.SD_CID).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.SD_CSD:
|
||||
@@ -196,7 +199,7 @@ namespace DiscImageChef.Core
|
||||
sidecar.BlockMedia[0].SecureDigital.CSD = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CSD)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SD_CSD).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.SD_CSD).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.SD_SCR:
|
||||
@@ -205,7 +208,7 @@ namespace DiscImageChef.Core
|
||||
sidecar.BlockMedia[0].SecureDigital.SCR = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_SCR)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SD_SCR).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.SD_SCR).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.SD_OCR:
|
||||
@@ -214,7 +217,7 @@ namespace DiscImageChef.Core
|
||||
sidecar.BlockMedia[0].SecureDigital.OCR = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_OCR)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SD_OCR).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.SD_OCR).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.MMC_CID:
|
||||
@@ -223,7 +226,7 @@ namespace DiscImageChef.Core
|
||||
sidecar.BlockMedia[0].MultiMediaCard.CID = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CID)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SD_CID).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.SD_CID).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.MMC_CSD:
|
||||
@@ -232,7 +235,7 @@ namespace DiscImageChef.Core
|
||||
sidecar.BlockMedia[0].MultiMediaCard.CSD = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CSD)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SD_CSD).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.SD_CSD).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.MMC_OCR:
|
||||
@@ -241,7 +244,7 @@ namespace DiscImageChef.Core
|
||||
sidecar.BlockMedia[0].MultiMediaCard.OCR = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_OCR)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SD_OCR).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.SD_OCR).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.MMC_ExtendedCSD:
|
||||
@@ -251,7 +254,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.MMC_ExtendedCSD))
|
||||
.ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.MMC_ExtendedCSD).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.MMC_ExtendedCSD).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.USB_Descriptors:
|
||||
@@ -260,7 +263,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.USB_Descriptors))
|
||||
.ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.USB_Descriptors).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.USB_Descriptors).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.SCSI_MODESENSE_6:
|
||||
@@ -269,7 +272,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Checksums =
|
||||
Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_MODESENSE_6)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SCSI_MODESENSE_6).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.SCSI_MODESENSE_6).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.SCSI_MODESENSE_10:
|
||||
@@ -278,7 +281,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Checksums =
|
||||
Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_MODESENSE_10)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SCSI_MODESENSE_10).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.SCSI_MODESENSE_10).Length
|
||||
};
|
||||
break;
|
||||
}
|
||||
@@ -345,10 +348,10 @@ namespace DiscImageChef.Core
|
||||
|
||||
sidecar.BlockMedia[0].Dimensions = Dimensions.DimensionsFromMediaType(image.Info.MediaType);
|
||||
|
||||
sidecar.BlockMedia[0].LogicalBlocks = (long)image.Info.Sectors;
|
||||
sidecar.BlockMedia[0].LogicalBlockSize = (int)image.Info.SectorSize;
|
||||
sidecar.BlockMedia[0].LogicalBlocks = image.Info.Sectors;
|
||||
sidecar.BlockMedia[0].LogicalBlockSize = image.Info.SectorSize;
|
||||
// TODO: Detect it
|
||||
sidecar.BlockMedia[0].PhysicalBlockSize = (int)image.Info.SectorSize;
|
||||
sidecar.BlockMedia[0].PhysicalBlockSize = image.Info.SectorSize;
|
||||
|
||||
UpdateStatus("Checking filesystems...");
|
||||
|
||||
@@ -368,10 +371,10 @@ namespace DiscImageChef.Core
|
||||
sidecar.BlockMedia[0].FileSystemInformation[i] = new PartitionType
|
||||
{
|
||||
Description = partitions[i].Description,
|
||||
EndSector = (int)partitions[i].End,
|
||||
EndSector = partitions[i].End,
|
||||
Name = partitions[i].Name,
|
||||
Sequence = (int)partitions[i].Sequence,
|
||||
StartSector = (int)partitions[i].Start,
|
||||
Sequence = (uint)partitions[i].Sequence,
|
||||
StartSector = partitions[i].Start,
|
||||
Type = partitions[i].Type
|
||||
};
|
||||
List<FileSystemType> lstFs = new List<FileSystemType>();
|
||||
@@ -402,7 +405,7 @@ namespace DiscImageChef.Core
|
||||
if(aborted) return;
|
||||
|
||||
sidecar.BlockMedia[0].FileSystemInformation[0] =
|
||||
new PartitionType {StartSector = 0, EndSector = (int)(image.Info.Sectors - 1)};
|
||||
new PartitionType {StartSector = 0, EndSector = image.Info.Sectors - 1};
|
||||
|
||||
Partition wholePart = new Partition
|
||||
{
|
||||
@@ -442,7 +445,7 @@ namespace DiscImageChef.Core
|
||||
sidecar.BlockMedia[0].HeadsSpecified = true;
|
||||
sidecar.BlockMedia[0].SectorsPerTrackSpecified = true;
|
||||
sidecar.BlockMedia[0].Cylinders = image.Info.Cylinders;
|
||||
sidecar.BlockMedia[0].Heads = image.Info.Heads;
|
||||
sidecar.BlockMedia[0].Heads = (ushort)image.Info.Heads;
|
||||
sidecar.BlockMedia[0].SectorsPerTrack = image.Info.SectorsPerTrack;
|
||||
}
|
||||
|
||||
@@ -611,7 +614,7 @@ namespace DiscImageChef.Core
|
||||
if(scpImage.Header.end + 1 >= image.Info.Cylinders)
|
||||
{
|
||||
List<BlockTrackType> scpBlockTrackTypes = new List<BlockTrackType>();
|
||||
long currentSector = 0;
|
||||
ulong currentSector = 0;
|
||||
Stream scpStream = scpFilter.GetDataForkStream();
|
||||
|
||||
for(byte t = scpImage.Header.start; t <= scpImage.Header.end; t++)
|
||||
@@ -621,7 +624,7 @@ namespace DiscImageChef.Core
|
||||
BlockTrackType scpBlockTrackType = new BlockTrackType
|
||||
{
|
||||
Cylinder = t / image.Info.Heads,
|
||||
Head = t % image.Info.Heads,
|
||||
Head = (ushort)(t % image.Info.Heads),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = scpImage.Format,
|
||||
@@ -636,7 +639,7 @@ namespace DiscImageChef.Core
|
||||
currentSector += image.Info.SectorsPerTrack;
|
||||
scpBlockTrackType.EndSector = currentSector - 1;
|
||||
scpBlockTrackType.Sectors = image.Info.SectorsPerTrack;
|
||||
scpBlockTrackType.BytesPerSector = (int)image.Info.SectorSize;
|
||||
scpBlockTrackType.BytesPerSector = image.Info.SectorSize;
|
||||
scpBlockTrackType.Format = trkFormat;
|
||||
}
|
||||
|
||||
@@ -647,7 +650,7 @@ namespace DiscImageChef.Core
|
||||
scpTrack.Entries.Last().trackLength - scpImage.Header.offsets[t] + 1];
|
||||
scpStream.Position = scpImage.Header.offsets[t];
|
||||
scpStream.Read(trackContents, 0, trackContents.Length);
|
||||
scpBlockTrackType.Size = trackContents.Length;
|
||||
scpBlockTrackType.Size = (ulong)trackContents.Length;
|
||||
scpBlockTrackType.Checksums = Checksum.GetChecksums(trackContents).ToArray();
|
||||
}
|
||||
|
||||
@@ -705,7 +708,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
List<BlockTrackType> kfBlockTrackTypes = new List<BlockTrackType>();
|
||||
|
||||
long currentSector = 0;
|
||||
ulong currentSector = 0;
|
||||
|
||||
foreach(KeyValuePair<byte, IFilter> kvp in kfImage.tracks)
|
||||
{
|
||||
@@ -714,7 +717,7 @@ namespace DiscImageChef.Core
|
||||
BlockTrackType kfBlockTrackType = new BlockTrackType
|
||||
{
|
||||
Cylinder = kvp.Key / image.Info.Heads,
|
||||
Head = kvp.Key % image.Info.Heads,
|
||||
Head = (ushort)(kvp.Key % image.Info.Heads),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = kfImage.Format,
|
||||
@@ -733,7 +736,7 @@ namespace DiscImageChef.Core
|
||||
currentSector += image.Info.SectorsPerTrack;
|
||||
kfBlockTrackType.EndSector = currentSector - 1;
|
||||
kfBlockTrackType.Sectors = image.Info.SectorsPerTrack;
|
||||
kfBlockTrackType.BytesPerSector = (int)image.Info.SectorSize;
|
||||
kfBlockTrackType.BytesPerSector = image.Info.SectorSize;
|
||||
kfBlockTrackType.Format = trkFormat;
|
||||
}
|
||||
|
||||
@@ -741,7 +744,7 @@ namespace DiscImageChef.Core
|
||||
byte[] trackContents = new byte[kfStream.Length];
|
||||
kfStream.Position = 0;
|
||||
kfStream.Read(trackContents, 0, trackContents.Length);
|
||||
kfBlockTrackType.Size = trackContents.Length;
|
||||
kfBlockTrackType.Size = (ulong)trackContents.Length;
|
||||
kfBlockTrackType.Checksums = Checksum.GetChecksums(trackContents).ToArray();
|
||||
|
||||
kfBlockTrackTypes.Add(kfBlockTrackType);
|
||||
@@ -784,7 +787,7 @@ namespace DiscImageChef.Core
|
||||
if(dfiImage.Info.Cylinders >= image.Info.Cylinders)
|
||||
{
|
||||
List<BlockTrackType> dfiBlockTrackTypes = new List<BlockTrackType>();
|
||||
long currentSector = 0;
|
||||
ulong currentSector = 0;
|
||||
Stream dfiStream = dfiFilter.GetDataForkStream();
|
||||
|
||||
foreach(int t in dfiImage.TrackOffsets.Keys)
|
||||
@@ -793,8 +796,8 @@ namespace DiscImageChef.Core
|
||||
|
||||
BlockTrackType dfiBlockTrackType = new BlockTrackType
|
||||
{
|
||||
Cylinder = t / image.Info.Heads,
|
||||
Head = t % image.Info.Heads,
|
||||
Cylinder = (uint)(t / image.Info.Heads),
|
||||
Head = (ushort)(t % image.Info.Heads),
|
||||
Image = new ImageType {format = dfiImage.Format, Value = Path.GetFileName(dfiFilePath)}
|
||||
};
|
||||
|
||||
@@ -804,18 +807,18 @@ namespace DiscImageChef.Core
|
||||
currentSector += image.Info.SectorsPerTrack;
|
||||
dfiBlockTrackType.EndSector = currentSector - 1;
|
||||
dfiBlockTrackType.Sectors = image.Info.SectorsPerTrack;
|
||||
dfiBlockTrackType.BytesPerSector = (int)image.Info.SectorSize;
|
||||
dfiBlockTrackType.BytesPerSector = image.Info.SectorSize;
|
||||
dfiBlockTrackType.Format = trkFormat;
|
||||
}
|
||||
|
||||
if(dfiImage.TrackOffsets.TryGetValue(t, out long offset) &&
|
||||
dfiImage.TrackLengths.TryGetValue(t, out long length))
|
||||
{
|
||||
dfiBlockTrackType.Image.offset = offset;
|
||||
dfiBlockTrackType.Image.offset = (ulong)offset;
|
||||
byte[] trackContents = new byte[length];
|
||||
dfiStream.Position = offset;
|
||||
dfiStream.Read(trackContents, 0, trackContents.Length);
|
||||
dfiBlockTrackType.Size = trackContents.Length;
|
||||
dfiBlockTrackType.Size = (ulong)trackContents.Length;
|
||||
dfiBlockTrackType.Checksums = Checksum.GetChecksums(trackContents).ToArray();
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace DiscImageChef.Core
|
||||
/// <param name="files">List of files</param>
|
||||
/// <param name="folderName">Dump path</param>
|
||||
/// <param name="blockSize">Expected block size in bytes</param>
|
||||
public CICMMetadataType BlockTape(string folderName, List<string> files, int blockSize)
|
||||
public CICMMetadataType BlockTape(string folderName, List<string> files, uint blockSize)
|
||||
{
|
||||
sidecar = new CICMMetadataType
|
||||
{
|
||||
@@ -79,8 +79,8 @@ namespace DiscImageChef.Core
|
||||
|
||||
if(aborted) return sidecar;
|
||||
|
||||
long currentBlock = 0;
|
||||
long totalSize = 0;
|
||||
ulong currentBlock = 0;
|
||||
ulong totalSize = 0;
|
||||
Checksum tapeWorker = new Checksum();
|
||||
List<TapeFileType> tapeFiles = new List<TapeFileType>();
|
||||
|
||||
@@ -99,15 +99,15 @@ namespace DiscImageChef.Core
|
||||
offset = 0,
|
||||
Value = Path.GetFileName(files[i])
|
||||
},
|
||||
Size = fs.Length,
|
||||
Size = (ulong)fs.Length,
|
||||
BlockSize = blockSize,
|
||||
StartBlock = currentBlock,
|
||||
Sequence = i
|
||||
Sequence = (ulong)i
|
||||
};
|
||||
|
||||
const uint SECTORS_TO_READ = 512;
|
||||
long sectors = fs.Length / blockSize;
|
||||
long doneSectors = 0;
|
||||
ulong sectors = (ulong)fs.Length / blockSize;
|
||||
ulong doneSectors = 0;
|
||||
|
||||
InitProgress2();
|
||||
while(doneSectors < sectors)
|
||||
@@ -125,7 +125,7 @@ namespace DiscImageChef.Core
|
||||
sector = new byte[SECTORS_TO_READ * blockSize];
|
||||
fs.Read(sector, 0, sector.Length);
|
||||
UpdateProgress2($"Hashing block {doneSectors} of {sectors} on file {i + 1} of {files.Count}",
|
||||
doneSectors, sectors);
|
||||
(long)doneSectors, (long)sectors);
|
||||
doneSectors += SECTORS_TO_READ;
|
||||
}
|
||||
else
|
||||
@@ -133,7 +133,7 @@ namespace DiscImageChef.Core
|
||||
sector = new byte[(uint)(sectors - doneSectors) * blockSize];
|
||||
fs.Read(sector, 0, sector.Length);
|
||||
UpdateProgress2($"Hashing block {doneSectors} of {sectors} on file {i + 1} of {files.Count}",
|
||||
doneSectors, sectors);
|
||||
(long)doneSectors, (long)sectors);
|
||||
doneSectors += sectors - doneSectors;
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ namespace DiscImageChef.Core
|
||||
|
||||
tapeFile.EndBlock = tapeFile.StartBlock + sectors - 1;
|
||||
currentBlock += sectors;
|
||||
totalSize += fs.Length;
|
||||
totalSize += (ulong)fs.Length;
|
||||
tapeFile.Checksums = fileWorker.End().ToArray();
|
||||
tapeFiles.Add(tapeFile);
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ namespace DiscImageChef.Core
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length
|
||||
Size = (ulong)fi.Length
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -80,15 +80,15 @@ namespace DiscImageChef.Core
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length,
|
||||
Size = (ulong)fi.Length,
|
||||
Sequence = new SequenceType {MediaTitle = image.Info.MediaTitle}
|
||||
}
|
||||
};
|
||||
|
||||
if(image.Info.MediaSequence != 0 && image.Info.LastMediaSequence != 0)
|
||||
{
|
||||
sidecar.OpticalDisc[0].Sequence.MediaSequence = image.Info.MediaSequence;
|
||||
sidecar.OpticalDisc[0].Sequence.TotalMedia = image.Info.LastMediaSequence;
|
||||
sidecar.OpticalDisc[0].Sequence.MediaSequence = (uint)image.Info.MediaSequence;
|
||||
sidecar.OpticalDisc[0].Sequence.TotalMedia = (uint)image.Info.LastMediaSequence;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -110,7 +110,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Image = Path.GetFileName(imagePath),
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_ATIP)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.CD_ATIP).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.CD_ATIP).Length
|
||||
};
|
||||
ATIP.CDATIP? atip = ATIP.Decode(image.ReadDiskTag(MediaTagType.CD_ATIP));
|
||||
if(atip.HasValue)
|
||||
@@ -122,7 +122,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Image = Path.GetFileName(imagePath),
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_BCA)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.DVD_BCA).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.DVD_BCA).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.BD_BCA:
|
||||
@@ -130,7 +130,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Image = Path.GetFileName(imagePath),
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.BD_BCA)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.BD_BCA).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.BD_BCA).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.DVD_CMI:
|
||||
@@ -138,7 +138,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Image = Path.GetFileName(imagePath),
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_CMI)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.DVD_CMI).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.DVD_CMI).Length
|
||||
};
|
||||
CSS_CPRM.LeadInCopyright? cmi =
|
||||
CSS_CPRM.DecodeLeadInCopyright(image.ReadDiskTag(MediaTagType.DVD_CMI));
|
||||
@@ -162,7 +162,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Image = Path.GetFileName(imagePath),
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_DMI)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.DVD_DMI).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.DVD_DMI).Length
|
||||
};
|
||||
if(DMI.IsXbox(image.ReadDiskTag(MediaTagType.DVD_DMI)))
|
||||
{
|
||||
@@ -181,7 +181,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Image = Path.GetFileName(imagePath),
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_PFI)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.DVD_PFI).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.DVD_PFI).Length
|
||||
};
|
||||
PFI.PhysicalFormatInformation? pfi = PFI.Decode(image.ReadDiskTag(MediaTagType.DVD_PFI));
|
||||
if(pfi.HasValue)
|
||||
@@ -270,7 +270,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Image = Path.GetFileName(imagePath),
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_PMA)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.CD_PMA).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.CD_PMA).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.CD_FullTOC:
|
||||
@@ -278,11 +278,11 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Image = Path.GetFileName(imagePath),
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_FullTOC)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.CD_FullTOC).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.CD_FullTOC).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.CD_FirstTrackPregap:
|
||||
sidecar.OpticalDisc[0].LeadIn = new[]
|
||||
sidecar.OpticalDisc[0].FirstTrackPregrap = new[]
|
||||
{
|
||||
new BorderType
|
||||
{
|
||||
@@ -290,7 +290,19 @@ namespace DiscImageChef.Core
|
||||
Checksums = Checksum
|
||||
.GetChecksums(image.ReadDiskTag(MediaTagType.CD_FirstTrackPregap))
|
||||
.ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.CD_FirstTrackPregap).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.CD_FirstTrackPregap).Length
|
||||
}
|
||||
};
|
||||
break;
|
||||
case MediaTagType.CD_LeadIn:
|
||||
sidecar.OpticalDisc[0].LeadIn = new[]
|
||||
{
|
||||
new BorderType
|
||||
{
|
||||
Image = Path.GetFileName(imagePath),
|
||||
Checksums = Checksum
|
||||
.GetChecksums(image.ReadDiskTag(MediaTagType.CD_LeadIn)).ToArray(),
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.CD_LeadIn).Length
|
||||
}
|
||||
};
|
||||
break;
|
||||
@@ -311,7 +323,7 @@ namespace DiscImageChef.Core
|
||||
.GetChecksums(image.ReadDiskTag(MediaTagType
|
||||
.Xbox_SecuritySector))
|
||||
.ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.Xbox_SecuritySector).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.Xbox_SecuritySector).Length
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -324,7 +336,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Image = Path.GetFileName(imagePath),
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.Xbox_PFI)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.Xbox_PFI).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.Xbox_PFI).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.Xbox_DMI:
|
||||
@@ -334,7 +346,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
Image = Path.GetFileName(imagePath),
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.Xbox_DMI)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.Xbox_DMI).Length
|
||||
Size = (ulong)image.ReadDiskTag(MediaTagType.Xbox_DMI).Length
|
||||
};
|
||||
break;
|
||||
}
|
||||
@@ -343,7 +355,7 @@ namespace DiscImageChef.Core
|
||||
try
|
||||
{
|
||||
List<Session> sessions = image.Sessions;
|
||||
sidecar.OpticalDisc[0].Sessions = sessions?.Count ?? 1;
|
||||
sidecar.OpticalDisc[0].Sessions = (uint)(sessions?.Count ?? 1);
|
||||
}
|
||||
catch { sidecar.OpticalDisc[0].Sessions = 1; }
|
||||
|
||||
@@ -351,8 +363,8 @@ namespace DiscImageChef.Core
|
||||
List<TrackType> trksLst = null;
|
||||
if(tracks != null)
|
||||
{
|
||||
sidecar.OpticalDisc[0].Tracks = new int[1];
|
||||
sidecar.OpticalDisc[0].Tracks[0] = tracks.Count;
|
||||
sidecar.OpticalDisc[0].Tracks = new uint[1];
|
||||
sidecar.OpticalDisc[0].Tracks[0] = (uint)tracks.Count;
|
||||
trksLst = new List<TrackType>();
|
||||
}
|
||||
|
||||
@@ -418,24 +430,24 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
|
||||
xmlTrk.Sequence =
|
||||
new TrackSequenceType {Session = trk.TrackSession, TrackNumber = (int)trk.TrackSequence};
|
||||
xmlTrk.StartSector = (long)trk.TrackStartSector;
|
||||
xmlTrk.EndSector = (long)trk.TrackEndSector;
|
||||
new TrackSequenceType {Session = trk.TrackSession, TrackNumber = trk.TrackSequence};
|
||||
xmlTrk.StartSector = trk.TrackStartSector;
|
||||
xmlTrk.EndSector = trk.TrackEndSector;
|
||||
|
||||
if(trk.Indexes != null && trk.Indexes.ContainsKey(0))
|
||||
if(trk.Indexes.TryGetValue(0, out ulong idx0))
|
||||
xmlTrk.StartSector = (long)idx0;
|
||||
xmlTrk.StartSector = idx0;
|
||||
|
||||
switch(sidecar.OpticalDisc[0].DiscType)
|
||||
{
|
||||
case "CD":
|
||||
case "GD":
|
||||
xmlTrk.StartMSF = LbaToMsf(xmlTrk.StartSector);
|
||||
xmlTrk.EndMSF = LbaToMsf(xmlTrk.EndSector);
|
||||
xmlTrk.StartMSF = LbaToMsf((long)xmlTrk.StartSector);
|
||||
xmlTrk.EndMSF = LbaToMsf((long)xmlTrk.EndSector);
|
||||
break;
|
||||
case "DDCD":
|
||||
xmlTrk.StartMSF = DdcdLbaToMsf(xmlTrk.StartSector);
|
||||
xmlTrk.EndMSF = DdcdLbaToMsf(xmlTrk.EndSector);
|
||||
xmlTrk.StartMSF = DdcdLbaToMsf((long)xmlTrk.StartSector);
|
||||
xmlTrk.EndMSF = DdcdLbaToMsf((long)xmlTrk.EndSector);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -443,15 +455,15 @@ namespace DiscImageChef.Core
|
||||
|
||||
if(trk.TrackFileOffset > 0)
|
||||
{
|
||||
xmlTrk.Image.offset = (long)trk.TrackFileOffset;
|
||||
xmlTrk.Image.offset = trk.TrackFileOffset;
|
||||
xmlTrk.Image.offsetSpecified = true;
|
||||
}
|
||||
|
||||
xmlTrk.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * trk.TrackRawBytesPerSector;
|
||||
xmlTrk.BytesPerSector = trk.TrackBytesPerSector;
|
||||
xmlTrk.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * (ulong)trk.TrackRawBytesPerSector;
|
||||
xmlTrk.BytesPerSector = (uint)trk.TrackBytesPerSector;
|
||||
|
||||
uint sectorsToRead = 512;
|
||||
ulong sectors = (ulong)(xmlTrk.EndSector - xmlTrk.StartSector + 1);
|
||||
ulong sectors = xmlTrk.EndSector - xmlTrk.StartSector + 1;
|
||||
ulong doneSectors = 0;
|
||||
|
||||
// If there is only one track, and it's the same as the image file (e.g. ".iso" files), don't re-checksum.
|
||||
@@ -484,8 +496,7 @@ namespace DiscImageChef.Core
|
||||
|
||||
if(sectors - doneSectors >= sectorsToRead)
|
||||
{
|
||||
sector = image.ReadSectorsLong(doneSectors, sectorsToRead,
|
||||
(uint)xmlTrk.Sequence.TrackNumber);
|
||||
sector = image.ReadSectorsLong(doneSectors, sectorsToRead, xmlTrk.Sequence.TrackNumber);
|
||||
UpdateProgress2("Hashings sector {0} of {1}", (long)doneSectors,
|
||||
(long)(trk.TrackEndSector - trk.TrackStartSector + 1));
|
||||
doneSectors += sectorsToRead;
|
||||
@@ -493,7 +504,7 @@ namespace DiscImageChef.Core
|
||||
else
|
||||
{
|
||||
sector = image.ReadSectorsLong(doneSectors, (uint)(sectors - doneSectors),
|
||||
(uint)xmlTrk.Sequence.TrackNumber);
|
||||
xmlTrk.Sequence.TrackNumber);
|
||||
UpdateProgress2("Hashings sector {0} of {1}", (long)doneSectors,
|
||||
(long)(trk.TrackEndSector - trk.TrackStartSector + 1));
|
||||
doneSectors += sectors - doneSectors;
|
||||
@@ -536,13 +547,13 @@ namespace DiscImageChef.Core
|
||||
|
||||
if(trk.TrackFileOffset > 0)
|
||||
{
|
||||
xmlTrk.SubChannel.Image.offset = (long)trk.TrackSubchannelOffset;
|
||||
xmlTrk.SubChannel.Image.offset = trk.TrackSubchannelOffset;
|
||||
xmlTrk.SubChannel.Image.offsetSpecified = true;
|
||||
}
|
||||
|
||||
Checksum subChkWorker = new Checksum();
|
||||
|
||||
sectors = (ulong)(xmlTrk.EndSector - xmlTrk.StartSector + 1);
|
||||
sectors = xmlTrk.EndSector - xmlTrk.StartSector + 1;
|
||||
doneSectors = 0;
|
||||
|
||||
InitProgress2();
|
||||
@@ -559,7 +570,7 @@ namespace DiscImageChef.Core
|
||||
|
||||
if(sectors - doneSectors >= sectorsToRead)
|
||||
{
|
||||
sector = image.ReadSectorsTag(doneSectors, sectorsToRead, (uint)xmlTrk.Sequence.TrackNumber,
|
||||
sector = image.ReadSectorsTag(doneSectors, sectorsToRead, xmlTrk.Sequence.TrackNumber,
|
||||
SectorTagType.CdSectorSubchannel);
|
||||
UpdateProgress2("Hashings subchannel sector {0} of {1}", (long)doneSectors,
|
||||
(long)(trk.TrackEndSector - trk.TrackStartSector + 1));
|
||||
@@ -568,7 +579,7 @@ namespace DiscImageChef.Core
|
||||
else
|
||||
{
|
||||
sector = image.ReadSectorsTag(doneSectors, (uint)(sectors - doneSectors),
|
||||
(uint)xmlTrk.Sequence.TrackNumber,
|
||||
xmlTrk.Sequence.TrackNumber,
|
||||
SectorTagType.CdSectorSubchannel);
|
||||
UpdateProgress2("Hashings subchannel sector {0} of {1}", (long)doneSectors,
|
||||
(long)(trk.TrackEndSector - trk.TrackStartSector + 1));
|
||||
@@ -601,10 +612,10 @@ namespace DiscImageChef.Core
|
||||
xmlTrk.FileSystemInformation[i] = new PartitionType
|
||||
{
|
||||
Description = trkPartitions[i].Description,
|
||||
EndSector = (int)trkPartitions[i].End,
|
||||
EndSector = trkPartitions[i].End,
|
||||
Name = trkPartitions[i].Name,
|
||||
Sequence = (int)trkPartitions[i].Sequence,
|
||||
StartSector = (int)trkPartitions[i].Start,
|
||||
Sequence = (uint)trkPartitions[i].Sequence,
|
||||
StartSector = trkPartitions[i].Start,
|
||||
Type = trkPartitions[i].Type
|
||||
};
|
||||
List<FileSystemType> lstFs = new List<FileSystemType>();
|
||||
@@ -654,17 +665,17 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
xmlTrk.FileSystemInformation[0] = new PartitionType
|
||||
{
|
||||
EndSector = (int)xmlTrk.EndSector, StartSector = (int)xmlTrk.StartSector
|
||||
EndSector = xmlTrk.EndSector, StartSector = xmlTrk.StartSector
|
||||
};
|
||||
List<FileSystemType> lstFs = new List<FileSystemType>();
|
||||
|
||||
Partition xmlPart = new Partition
|
||||
{
|
||||
Start = (ulong)xmlTrk.StartSector,
|
||||
Length = (ulong)(xmlTrk.EndSector - xmlTrk.StartSector + 1),
|
||||
Start = xmlTrk.StartSector,
|
||||
Length = xmlTrk.EndSector - xmlTrk.StartSector + 1,
|
||||
Type = xmlTrk.TrackType1.ToString(),
|
||||
Size = (ulong)xmlTrk.Size,
|
||||
Sequence = (ulong)xmlTrk.Sequence.TrackNumber
|
||||
Size = xmlTrk.Size,
|
||||
Sequence = xmlTrk.Sequence.TrackNumber
|
||||
};
|
||||
foreach(IFilesystem plugin in plugins.PluginsList.Values)
|
||||
try
|
||||
@@ -717,8 +728,8 @@ namespace DiscImageChef.Core
|
||||
// All XGD3 all have the same number of blocks
|
||||
if(dskType == MediaType.XGD2 && sidecar.OpticalDisc[0].Track.Length == 1)
|
||||
{
|
||||
ulong blocks = (ulong)(sidecar.OpticalDisc[0].Track[0].EndSector -
|
||||
sidecar.OpticalDisc[0].Track[0].StartSector + 1);
|
||||
ulong blocks = sidecar.OpticalDisc[0].Track[0].EndSector - sidecar.OpticalDisc[0].Track[0].StartSector +
|
||||
1;
|
||||
if(blocks == 25063 || // Locked (or non compatible drive)
|
||||
blocks == 4229664 || // Xtreme unlock
|
||||
blocks == 4246304) // Wxripper unlock
|
||||
|
||||
Reference in New Issue
Block a user