Update CICMMetadata version.

This commit is contained in:
2019-04-23 01:38:33 +01:00
parent 421ce1574b
commit ffd1cd6564
77 changed files with 2263 additions and 2230 deletions

View File

@@ -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;

View File

@@ -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()
}
};

View File

@@ -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();
}

View File

@@ -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]};

View File

@@ -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");

View File

@@ -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,

View File

@@ -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
{

View File

@@ -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();
}

View File

@@ -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);

View File

@@ -69,7 +69,7 @@ namespace DiscImageChef.Core
offsetSpecified = true,
Value = Path.GetFileName(imagePath)
},
Size = fi.Length
Size = (ulong)fi.Length
}
};
}

View File

@@ -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