diff --git a/FileSystemIDandChk.sln b/FileSystemIDandChk.sln
index 65018737..b46a7aae 100644
--- a/FileSystemIDandChk.sln
+++ b/FileSystemIDandChk.sln
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileSystemIDandChk", "FileSystemIDandChk\FileSystemIDandChk.csproj", "{7A4B05BE-73C9-4F34-87FE-E80CCF1F732D}"
EndProject
-Project("{9344bdbb-3e7f-41fc-a0dd-8665d75ee146}") = "Packages", "Packages.mdproj", "{8996EF59-09B9-4920-A3DE-2F8EA2EBBCFF}"
+Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Packages", "Packages.mdproj", "{8996EF59-09B9-4920-A3DE-2F8EA2EBBCFF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -20,5 +20,7 @@ Global
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
StartupItem = FileSystemIDandChk\FileSystemIDandChk.csproj
+ description = Filesystem identified and checker.
+ version = 1.10
EndGlobalSection
EndGlobal
diff --git a/FileSystemIDandChk/FileSystemIDandChk.csproj b/FileSystemIDandChk/FileSystemIDandChk.csproj
index a3fb878c..d312760b 100644
--- a/FileSystemIDandChk/FileSystemIDandChk.csproj
+++ b/FileSystemIDandChk/FileSystemIDandChk.csproj
@@ -10,6 +10,7 @@
FileSystemIDandChk
FileSystemIDandChk
v3.5
+ 1.10
True
diff --git a/FileSystemIDandChk/ImagePlugins/ImagePlugin.cs b/FileSystemIDandChk/ImagePlugins/ImagePlugin.cs
index 8fb9b7a4..a1b75d03 100644
--- a/FileSystemIDandChk/ImagePlugins/ImagePlugin.cs
+++ b/FileSystemIDandChk/ImagePlugins/ImagePlugin.cs
@@ -41,523 +41,790 @@ using System.Collections.Generic;
namespace FileSystemIDandChk.ImagePlugins
{
+ ///
+ /// Abstract class to implement disk image reading plugins.
+ ///
public abstract class ImagePlugin
{
+ /// Plugin name.
public string Name;
+ /// Plugin UUID.
public Guid PluginUUID;
protected ImagePlugin()
{
}
+
// Basic image handling functions
+
+ ///
+ /// Identifies the image.
+ ///
+ /// true, if image was identified, false otherwise.
+ /// Image path.
public abstract bool IdentifyImage(string imagePath);
- // Returns true if the plugin can handle the given image file
+
+ ///
+ /// Opens the image.
+ ///
+ /// true, if image was opened, false otherwise.
+ /// Image path.
public abstract bool OpenImage(string imagePath);
- // Initialize internal plugin structures to handle image
+
+ ///
+ /// Asks the disk image plugin if the image contains partitions
+ ///
+ /// true, if the image contains partitions, false otherwise.
public abstract bool ImageHasPartitions();
- // Image has different partitions (sessions, tracks)
+
// Image size functions
+
+ ///
+ /// Gets the size of the image, without headers.
+ ///
+ /// The image size.
public abstract UInt64 GetImageSize();
- // Returns image size, without headers, in bytes
+
+ ///
+ /// Gets the number of sectors in the image.
+ ///
+ /// Sectors in image.
public abstract UInt64 GetSectors();
- // Returns image size in sectors
+
+ ///
+ /// Returns the size of the biggest sector, counting user data only.
+ ///
+ /// Biggest sector size (user data only).
public abstract UInt32 GetSectorSize();
- // Returns sector size in bytes (user data only)
+
// Image reading functions
+
+ ///
+ /// Reads a disk tag.
+ ///
+ /// Disk tag
+ /// Tag type to read.
public abstract byte[] ReadDiskTag(DiskTagType tag);
+
// Gets a disk tag
+ ///
+ /// Reads a sector's user data.
+ ///
+ /// The sector's user data.
+ /// Sector address (LBA).
public abstract byte[] ReadSector(UInt64 sectorAddress);
- // Reads a sector (user data only)
+
+ ///
+ /// Reads a sector's tag.
+ ///
+ /// The sector's tag.
+ /// Sector address (LBA).
+ /// Tag type.
public abstract byte[] ReadSectorTag(UInt64 sectorAddress, SectorTagType tag);
- // Reads specified tag from sector
+
+ ///
+ /// Reads a sector's user data, relative to track.
+ ///
+ /// The sector's user data.
+ /// Sector address (relative LBA).
+ /// Track.
public abstract byte[] ReadSector(UInt64 sectorAddress, UInt32 track);
- // Reads a sector (user data only), relative to track
+
+ ///
+ /// Reads a sector's tag, relative to track.
+ ///
+ /// The sector's tag.
+ /// Sector address (relative LBA).
+ /// Track.
+ /// Tag type.
public abstract byte[] ReadSectorTag(UInt64 sectorAddress, UInt32 track, SectorTagType tag);
- // Reads specified tag from sector
+
+ ///
+ /// Reads user data from several sectors.
+ ///
+ /// The sectors user data.
+ /// Starting sector address (LBA).
+ /// How many sectors to read.
public abstract byte[] ReadSectors(UInt64 sectorAddress, UInt32 length);
- // Reads sector (user data only)
+
+ ///
+ /// Reads tag from several sectors.
+ ///
+ /// The sectors tag.
+ /// Starting sector address (LBA).
+ /// How many sectors to read.
+ /// Tag type.
public abstract byte[] ReadSectorsTag(UInt64 sectorAddress, UInt32 length, SectorTagType tag);
- // Reads specified tag from sector
+
+ ///
+ /// Reads user data from several sectors, relative to track.
+ ///
+ /// The sectors user data.
+ /// Starting sector address (relative LBA).
+ /// How many sectors to read.
+ /// Track.
public abstract byte[] ReadSectors(UInt64 sectorAddress, UInt32 length, UInt32 track);
- // Reads a sector (user data only), relative to track
+
+ ///
+ /// Reads tag from several sectors, relative to track.
+ ///
+ /// The sectors tag.
+ /// Starting sector address (relative LBA).
+ /// How many sectors to read.
+ /// Track.
+ /// Tag type.
public abstract byte[] ReadSectorsTag(UInt64 sectorAddress, UInt32 length, UInt32 track, SectorTagType tag);
- // Reads specified tag from sector, relative to track
+
+ ///
+ /// Reads a complete sector (user data + all tags).
+ ///
+ /// The complete sector. Format depends on disk type.
+ /// Sector address (LBA).
public abstract byte[] ReadSectorLong(UInt64 sectorAddress);
- // Reads a sector (user data + tags)
+
+ ///
+ /// Reads a complete sector (user data + all tags), relative to track.
+ ///
+ /// The complete sector. Format depends on disk type.
+ /// Sector address (relative LBA).
+ /// Track.
public abstract byte[] ReadSectorLong(UInt64 sectorAddress, UInt32 track);
- // Reads a sector (user data + tags), relative to track
+
+ ///
+ /// Reads several complete sector (user data + all tags).
+ ///
+ /// The complete sectors. Format depends on disk type.
+ /// Starting sector address (LBA).
+ /// How many sectors to read.
public abstract byte[] ReadSectorsLong(UInt64 sectorAddress, UInt32 length);
- // Reads sector (user data + tags)
+
+ ///
+ /// Reads several complete sector (user data + all tags), relative to track.
+ ///
+ /// The complete sectors. Format depends on disk type.
+ /// Starting sector address (relative LBA).
+ /// How many sectors to read.
+ /// Track.
public abstract byte[] ReadSectorsLong(UInt64 sectorAddress, UInt32 length, UInt32 track);
- // Reads sectors (user data + tags), relative to track
+
// Image information functions
+
+ ///
+ /// Gets the image format.
+ ///
+ /// The image format.
public abstract string GetImageFormat();
- // Gets image format
+
+ ///
+ /// Gets the image version.
+ ///
+ /// The image version.
public abstract string GetImageVersion();
- // Gets format's version
+
+ ///
+ /// Gets the application that created the image.
+ ///
+ /// The application that created the image.
public abstract string GetImageApplication();
- // Gets application that created this image
+
+ ///
+ /// Gets the version of the application that created the image.
+ ///
+ /// The version of the application that created the image.
public abstract string GetImageApplicationVersion();
- // Gets application version
+
+ ///
+ /// Gets the image creator.
+ ///
+ /// Who created the image.
public abstract string GetImageCreator();
- // Gets image creator (person)
+
+ ///
+ /// Gets the image creation time.
+ ///
+ /// The image creation time.
public abstract DateTime GetImageCreationTime();
- // Gets image creation time
+
+ ///
+ /// Gets the image last modification time.
+ ///
+ /// The image last modification time.
public abstract DateTime GetImageLastModificationTime();
- // Gets image last modification time
+
+ ///
+ /// Gets the name of the image.
+ ///
+ /// The image name.
public abstract string GetImageName();
- // Gets image name
+
+ ///
+ /// Gets the image comments.
+ ///
+ /// The image comments.
public abstract string GetImageComments();
- // Gets image comments
+
// Functions to get information from disk represented by image
+
+ ///
+ /// Gets the disk manufacturer.
+ ///
+ /// The disk manufacturer.
public abstract string GetDiskManufacturer();
- // Gets disk manufacturer
+
+ ///
+ /// Gets the disk model.
+ ///
+ /// The disk model.
public abstract string GetDiskModel();
- // Gets disk model
+
+ ///
+ /// Gets the disk serial number.
+ ///
+ /// The disk serial number.
public abstract string GetDiskSerialNumber();
- // Gets disk serial number
+
+ ///
+ /// Gets the disk (or product) barcode.
+ ///
+ /// The disk barcode.
public abstract string GetDiskBarcode();
- // Gets disk (or product)
+
+ ///
+ /// Gets the disk part number.
+ ///
+ /// The disk part number.
public abstract string GetDiskPartNumber();
- // Gets disk part no. as manufacturer set
+
+ ///
+ /// Gets the type of the disk.
+ ///
+ /// The disk type.
public abstract DiskType GetDiskType();
- // Gets disk type
+
+ ///
+ /// Gets the disk sequence.
+ ///
+ /// The disk sequence, starting at 1.
public abstract int GetDiskSequence();
- // Gets disk sequence number, 1-starting
+
+ ///
+ /// Gets the last disk in the sequence.
+ ///
+ /// The last disk in the sequence.
public abstract int GetLastDiskSequence();
- // Gets last disk sequence number
+
// Functions to get information from drive used to create image
+
+ ///
+ /// Gets the manufacturer of the drive used to create the image.
+ ///
+ /// The drive manufacturer.
public abstract string GetDriveManufacturer();
- // Gets drive manufacturer
+
+ ///
+ /// Gets the model of the drive used to create the image.
+ ///
+ /// The drive model.
public abstract string GetDriveModel();
- // Gets drive model
+
+ ///
+ /// Gets the serial number of the drive used to create the image.
+ ///
+ /// The drive serial number.
public abstract string GetDriveSerialNumber();
- // Gets drive serial number
+
// Partitioning functions
+
+ ///
+ /// Gets an array partitions. Typically only useful for optical disc
+ /// images where each track and index means a different partition, as
+ /// reads can be relative to them.
+ ///
+ /// The partitions.
public abstract List GetPartitions();
- // Returns disc partitions, tracks, sessions, as partition extents
+
+ ///
+ /// Gets the disc track extents (start, length).
+ ///
+ /// The track extents.
public abstract List