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 GetTracks(); - // Returns disc track extents + + /// + /// Gets the disc track extents for a specified session. + /// + /// The track exents for that session. + /// Session. public abstract List GetSessionTracks(Session session); - // Returns disc track extensts for a session + + /// + /// Gets the disc track extents for a specified session. + /// + /// The track exents for that session. + /// Session. public abstract List GetSessionTracks(UInt16 session); - // Returns disc track extensts for a session + + /// + /// Gets the sessions (optical discs only). + /// + /// The sessions. public abstract List GetSessions(); // Returns disc sessions + // CD flags bitmask + + /// Track is quadraphonic. public const byte CDFlagsFourChannel = 0x20; + /// Track is non-audio (data). public const byte CDFlagsDataTrack = 0x10; + /// Track is copy protected. public const byte CDFlagsCopyPrevent = 0x08; + /// Track has pre-emphasis. public const byte CDFlagsPreEmphasis = 0x04; } + // Disk types public enum DiskType { + /// Unknown disk type Unknown, + // Somewhat standard Compact Disc formats - // CD Digital Audio (Red Book) + /// CD Digital Audio (Red Book) CDDA, - // CD+G (Red Book) + /// CD+G (Red Book) CDG, - // CD+EG (Red Book) + /// CD+EG (Red Book) CDEG, - // CD-i (Green Book) + /// CD-i (Green Book) CDI, - // CD-ROM (Yellow Book) + /// CD-ROM (Yellow Book) CDROM, - // CD-ROM XA (Yellow Book) + /// CD-ROM XA (Yellow Book) CDROMXA, - // CD+ (Blue Book) + /// CD+ (Blue Book) CDPLUS, - // CD-MO (Orange Book) + /// CD-MO (Orange Book) CDMO, - // CD-Recordable (Orange Book) + /// CD-Recordable (Orange Book) CDR, - // CD-ReWritable (Orange Book) + /// CD-ReWritable (Orange Book) CDRW, - // Mount-Rainier CD-RW + /// Mount-Rainier CD-RW CDMRW, - // Video CD (White Book) + /// Video CD (White Book) VCD, - // Super Video CD (White Book) + /// Super Video CD (White Book) SVCD, - // Photo CD (Beige Book) + /// Photo CD (Beige Book) PCD, - // Super Audio CD (Scarlet Book) + /// Super Audio CD (Scarlet Book) SACD, - // Double-Density CD-ROM (Purple Book) + /// Double-Density CD-ROM (Purple Book) DDCD, - // DD CD-R (Purple Book) + /// DD CD-R (Purple Book) DDCDR, - // DD CD-RW (Purple Book) + /// DD CD-RW (Purple Book) DDCDRW, - // DTS audio CD (non-standard) + /// DTS audio CD (non-standard) DTSCD, - // CD-MIDI (Red Book) + /// CD-MIDI (Red Book) CDMIDI, - // Any unknown or standard violating CD + /// Any unknown or standard violating CD CD, + // Standard DVD formats - // DVD-ROM (applies to DVD Video and DVD Audio) + /// DVD-ROM (applies to DVD Video and DVD Audio) DVDROM, - // DVD-R + /// DVD-R DVDR, - // DVD-RW + /// DVD-RW DVDRW, - // DVD+R + /// DVD+R DVDPR, - // DVD+RW + /// DVD+RW DVDPRW, - // DVD+RW DL + /// DVD+RW DL DVDPRWDL, - // DVD-R DL + /// DVD-R DL DVDRDL, - // DVD+R DL + /// DVD+R DL DVDPRDL, - // DVD-RAM + /// DVD-RAM DVDRAM, + // Standard HD-DVD formats - // HD DVD-ROM (applies to HD DVD Video) + /// HD DVD-ROM (applies to HD DVD Video) HDDVDROM, - // HD DVD-RAM + /// HD DVD-RAM HDDVDRAM, - // HD DVD-R + /// HD DVD-R HDDVDR, - // HD DVD-RW + /// HD DVD-RW HDDVDRW, + // Standard Blu-ray formats - // BD-ROM (and BD Video) + /// BD-ROM (and BD Video) BDROM, - // BD-R + /// BD-R BDR, - // BD-RE + /// BD-RE BDRE, + // Rare or uncommon standards - // Enhanced Versatile Disc + /// Enhanced Versatile Disc EVD, - // Forward Versatile Disc + /// Forward Versatile Disc FVD, - // Holographic Versatile Disc + /// Holographic Versatile Disc HVD, - // China Blue High Definition + /// China Blue High Definition CBHD, - // High Definition Versatile Multilayer Disc + /// High Definition Versatile Multilayer Disc HDVMD, - // Versatile Compact Disc High Density + /// Versatile Compact Disc High Density VCDHD, - // Pioneer LaserDisc + /// Pioneer LaserDisc LD, - // Pioneer LaserDisc data + /// Pioneer LaserDisc data LDROM, - // Sony MiniDisc + /// Sony MiniDisc MD, - // Sony Hi-MD + /// Sony Hi-MD HiMD, - // Ultra Density Optical + /// Ultra Density Optical UDO, - // Stacked Volumetric Optical Disc + /// Stacked Volumetric Optical Disc SVOD, - // Five Dimensional disc + /// Five Dimensional disc FDDVD, + // Propietary game discs - // Sony PlayStation game CD + /// Sony PlayStation game CD PS1CD, - // Sony PlayStation 2 game CD + /// Sony PlayStation 2 game CD PS2CD, - // Sony PlayStation 2 game DVD + /// Sony PlayStation 2 game DVD PS2DVD, - // Sony PlayStation 3 game DVD + /// Sony PlayStation 3 game DVD PS3DVD, - // Sony PlayStation 3 game Blu-ray + /// Sony PlayStation 3 game Blu-ray PS3BD, - // Sony PlayStation 4 game Blu-ray + /// Sony PlayStation 4 game Blu-ray PS4BD, - // Sony PlayStation Portable Universal Media Disc (ECMA-365) + /// Sony PlayStation Portable Universal Media Disc (ECMA-365) UMD, - // Nintendo GameCube Optical Disc + /// Nintendo GameCube Optical Disc GOD, - // Nintendo Wii Optical Disc + /// Nintendo Wii Optical Disc WOD, - // Nintendo Wii U Optical Disc + /// Nintendo Wii U Optical Disc WUOD, - // Microsoft X-box Game Disc + /// Microsoft X-box Game Disc XGD, - // Microsoft X-box 360 Game Disc + /// Microsoft X-box 360 Game Disc XGD2, - // Microsoft X-box 360 Game Disc + /// Microsoft X-box 360 Game Disc XGD3, - // Microsoft X-box One Game Disc + /// Microsoft X-box One Game Disc XGD4, - // Sega MegaCD + /// Sega MegaCD MEGACD, - // Sega Saturn disc + /// Sega Saturn disc SATURNCD, - // Sega/Yamaha Gigabyte Disc + /// Sega/Yamaha Gigabyte Disc GDROM, - // Sega/Yamaha recordable Gigabyte Disc}} + /// Sega/Yamaha recordable Gigabyte Disc}} GDR, - // Apple standard floppy formats - // 5.25", SS, DD, 35 tracks, 13 spt, 256 bytes/sector, GCR + + // Apple standard floppy format + /// 5.25", SS, DD, 35 tracks, 13 spt, 256 bytes/sector, GCR Apple32SS, - // 5.25", DS, DD, 35 tracks, 13 spt, 256 bytes/sector, GCR + /// 5.25", DS, DD, 35 tracks, 13 spt, 256 bytes/sector, GCR Apple32DS, - // 5.25", SS, DD, 35 tracks, 16 spt, 256 bytes/sector, GCR + /// 5.25", SS, DD, 35 tracks, 16 spt, 256 bytes/sector, GCR Apple33SS, - // 5.25", DS, DD, 35 tracks, 16 spt, 256 bytes/sector, GCR + /// 5.25", DS, DD, 35 tracks, 16 spt, 256 bytes/sector, GCR Apple33DS, - // 3.5", SS, DD, 80 tracks, 8 to 12 spt, 512 bytes/sector, GCR + /// 3.5", SS, DD, 80 tracks, 8 to 12 spt, 512 bytes/sector, GCR AppleSonySS, - // 3.5", DS, DD, 80 tracks, 8 to 12 spt, 512 bytes/sector, GCR + /// 3.5", DS, DD, 80 tracks, 8 to 12 spt, 512 bytes/sector, GCR AppleSonyDS, - // 5.25", DS, ?D, ?? tracks, ?? spt, 512 bytes/sector, GCR, opposite side heads, aka Twiggy + /// 5.25", DS, ?D, ?? tracks, ?? spt, 512 bytes/sector, GCR, opposite side heads, aka Twiggy AppleFileWare, + // IBM/Microsoft PC standard floppy formats - // 5.25", SS, DD, 40 tracks, 8 spt, 512 bytes/sector, MFM + /// 5.25", SS, DD, 40 tracks, 8 spt, 512 bytes/sector, MFM DOS_525_SS_DD_8, - // 5.25", SS, DD, 40 tracks, 9 spt, 512 bytes/sector, MFM + /// 5.25", SS, DD, 40 tracks, 9 spt, 512 bytes/sector, MFM DOS_525_SS_DD_9, - // 5.25", DS, DD, 40 tracks, 8 spt, 512 bytes/sector, MFM + /// 5.25", DS, DD, 40 tracks, 8 spt, 512 bytes/sector, MFM DOS_525_DS_DD_8, - // 5.25", DS, DD, 40 tracks, 9 spt, 512 bytes/sector, MFM + /// 5.25", DS, DD, 40 tracks, 9 spt, 512 bytes/sector, MFM DOS_525_DS_DD_9, - // 5.25", DS, HD, 80 tracks, 15 spt, 512 bytes/sector, MFM + /// 5.25", DS, HD, 80 tracks, 15 spt, 512 bytes/sector, MFM DOS_525_HD, - // 3.5", SS, DD, 80 tracks, 8 spt, 512 bytes/sector, MFM + /// 3.5", SS, DD, 80 tracks, 8 spt, 512 bytes/sector, MFM DOS_35_SS_DD_8, - // 3.5", SS, DD, 80 tracks, 9 spt, 512 bytes/sector, MFM + /// 3.5", SS, DD, 80 tracks, 9 spt, 512 bytes/sector, MFM DOS_35_SS_DD_9, - // 3.5", DS, DD, 80 tracks, 8 spt, 512 bytes/sector, MFM + /// 3.5", DS, DD, 80 tracks, 8 spt, 512 bytes/sector, MFM DOS_35_DS_DD_8, - // 3.5", DS, DD, 80 tracks, 9 spt, 512 bytes/sector, MFM + /// 3.5", DS, DD, 80 tracks, 9 spt, 512 bytes/sector, MFM DOS_35_DS_DD_9, - // 3.5", DS, HD, 80 tracks, 18 spt, 512 bytes/sector, MFM + /// 3.5", DS, HD, 80 tracks, 18 spt, 512 bytes/sector, MFM DOS_35_HD, - // 3.5", DS, ED, 80 tracks, 36 spt, 512 bytes/sector, MFM + /// 3.5", DS, ED, 80 tracks, 36 spt, 512 bytes/sector, MFM DOS_35_ED, + // Microsoft non standard floppy formats - // 3.5", DS, DD, 80 tracks, 21 spt, 512 bytes/sector, MFM + /// 3.5", DS, DD, 80 tracks, 21 spt, 512 bytes/sector, MFM DMF, - // 3.5", DS, DD, 82 tracks, 21 spt, 512 bytes/sector, MFM + /// 3.5", DS, DD, 82 tracks, 21 spt, 512 bytes/sector, MFM DMF_82, + // IBM non standard floppy formats XDF_525, XDF_35, + // IBM standard floppy formats - // 8", SS, SD, 32 tracks, 8 spt, 319 bytes/sector, FM + /// 8", SS, SD, 32 tracks, 8 spt, 319 bytes/sector, FM IBM23FD, - // 8", SS, SD, 73 tracks, 26 spt, 128 bytes/sector, FM + /// 8", SS, SD, 73 tracks, 26 spt, 128 bytes/sector, FM IBM33FD_128, - // 8", SS, SD, 74 tracks, 15 spt, 256 bytes/sector, FM, track 0 = 26 sectors, 128 bytes/sector + /// 8", SS, SD, 74 tracks, 15 spt, 256 bytes/sector, FM, track 0 = 26 sectors, 128 bytes/sector IBM33FD_256, - // 8", SS, SD, 74 tracks, 8 spt, 512 bytes/sector, FM, track 0 = 26 sectors, 128 bytes/sector + /// 8", SS, SD, 74 tracks, 8 spt, 512 bytes/sector, FM, track 0 = 26 sectors, 128 bytes/sector IBM33FD_512, - // 8", DS, SD, 74 tracks, 26 spt, 128 bytes/sector, FM, track 0 = 26 sectors, 128 bytes/sector + /// 8", DS, SD, 74 tracks, 26 spt, 128 bytes/sector, FM, track 0 = 26 sectors, 128 bytes/sector IBM43FD_128, - // 8", DS, SD, 74 tracks, 26 spt, 256 bytes/sector, FM, track 0 = 26 sectors, 128 bytes/sector + /// 8", DS, SD, 74 tracks, 26 spt, 256 bytes/sector, FM, track 0 = 26 sectors, 128 bytes/sector IBM43FD_256, - // 8", DS, DD, 74 tracks, 26 spt, 256 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 128 bytes/sector + /// 8", DS, DD, 74 tracks, 26 spt, 256 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 128 bytes/sector IBM53FD_256, - // 8", DS, DD, 74 tracks, 15 spt, 512 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 128 bytes/sector + /// 8", DS, DD, 74 tracks, 15 spt, 512 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 128 bytes/sector IBM53FD_512, - // 8", DS, DD, 74 tracks, 8 spt, 1024 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 128 bytes/sector + /// 8", DS, DD, 74 tracks, 8 spt, 1024 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 128 bytes/sector IBM53FD_1024, + // DEC standard floppy formats - // 8", SS, DD, 77 tracks, 26 spt, 128 bytes/sector, FM + /// 8", SS, DD, 77 tracks, 26 spt, 128 bytes/sector, FM RX01, - // 8", SS, DD, 77 tracks, 26 spt, 256 bytes/sector, FM/MFM + /// 8", SS, DD, 77 tracks, 26 spt, 256 bytes/sector, FM/MFM RX02, + // Acorn standard floppy formats - // 5,25", SS, SD, 40 tracks, 10 spt, 256 bytes/sector, FM + /// 5,25", SS, SD, 40 tracks, 10 spt, 256 bytes/sector, FM ACORN_525_SS_SD_40, - // 5,25", SS, SD, 80 tracks, 10 spt, 256 bytes/sector, FM + /// 5,25", SS, SD, 80 tracks, 10 spt, 256 bytes/sector, FM ACORN_525_SS_SD_80, - // 5,25", SS, DD, 40 tracks, 16 spt, 256 bytes/sector, MFM + /// 5,25", SS, DD, 40 tracks, 16 spt, 256 bytes/sector, MFM ACORN_525_SS_DD_40, - // 5,25", SS, DD, 80 tracks, 16 spt, 256 bytes/sector, MFM + /// 5,25", SS, DD, 80 tracks, 16 spt, 256 bytes/sector, MFM ACORN_525_SS_DD_80, - // 5,25", DS, DD, 80 tracks, 16 spt, 256 bytes/sector, MFM + /// 5,25", DS, DD, 80 tracks, 16 spt, 256 bytes/sector, MFM ACORN_525_DS_DD, + // Atari standard floppy formats - // 5,25", SS, SD, 40 tracks, 18 spt, 128 bytes/sector, FM + /// 5,25", SS, SD, 40 tracks, 18 spt, 128 bytes/sector, FM ATARI_525_SD, - // 5,25", SS, ED, 40 tracks, 26 spt, 128 bytes/sector, MFM + /// 5,25", SS, ED, 40 tracks, 26 spt, 128 bytes/sector, MFM ATARI_525_ED, - // 5,25", SS, DD, 40 tracks, 18 spt, 256 bytes/sector, MFM + /// 5,25", SS, DD, 40 tracks, 18 spt, 256 bytes/sector, MFM ATARI_525_DD, + // Commodore standard floppy formats - // 3,5", DS, DD, 80 tracks, 10 spt, 512 bytes/sector, MFM + /// 3,5", DS, DD, 80 tracks, 10 spt, 512 bytes/sector, MFM CBM_35_DD, - // 3,5", DS, DD, 80 tracks, 11 spt, 512 bytes/sector, MFM (Amiga) + /// 3,5", DS, DD, 80 tracks, 11 spt, 512 bytes/sector, MFM (Amiga) CBM_AMIGA_35_DD, - // 3,5", DS, HD, 80 tracks, 22 spt, 512 bytes/sector, MFM (Amiga) + /// 3,5", DS, HD, 80 tracks, 22 spt, 512 bytes/sector, MFM (Amiga) CBM_AMIGA_35_HD, + // NEC standard floppy formats - // 8", SS, SD, 77 tracks, 26 spt, 128 bytes/sector, FM + /// 8", SS, SD, 77 tracks, 26 spt, 128 bytes/sector, FM NEC_8_SD, - // 8", DS, DD, 77 tracks, 8 spt, 1024 bytes/sector, MFM + /// 8", DS, DD, 77 tracks, 8 spt, 1024 bytes/sector, MFM NEC_8_DD, - // 5,25", DS, HD, 80 tracks, 8 spt, 1024 bytes/sector, MFM + /// 5,25", DS, HD, 80 tracks, 8 spt, 1024 bytes/sector, MFM NEC_525_HD, - // 3,5", DS, HD, 80 tracks, 8 spt, 1024 bytes/sector, MFM + /// 3,5", DS, HD, 80 tracks, 8 spt, 1024 bytes/sector, MFM NEC_35_HD_8, - // 3,5", DS, HD, 80 tracks, 15 spt, 512 bytes/sector, MFM + /// 3,5", DS, HD, 80 tracks, 15 spt, 512 bytes/sector, MFM NEC_35_HD_15, + // SHARP standard floppy formats - // 5,25", DS, DD, 77 tracks, 8 spt, 1024 bytes/sector, FM + /// 5,25", DS, DD, 77 tracks, 8 spt, 1024 bytes/sector, FM SHARP_525, - // 3,5", DS, DD, 77 tracks, 8 spt, 1024 bytes/sector, FM + /// 3,5", DS, DD, 77 tracks, 8 spt, 1024 bytes/sector, FM SHARP_35, + // ECMA standards - // 5,25", DS, DD, 80 tracks, 8 spt, 1024 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 256 bytes/sector + /// 5,25", DS, DD, 80 tracks, 8 spt, 1024 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 256 bytes/sector ECMA_99_8, - // 5,25", DS, DD, 77 tracks, 15 spt, 512 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 256 bytes/sector + /// 5,25", DS, DD, 77 tracks, 15 spt, 512 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 256 bytes/sector ECMA_99_15, - // 5,25", DS, DD, 77 tracks, 26 spt, 256 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 256 bytes/sector + /// 5,25", DS, DD, 77 tracks, 26 spt, 256 bytes/sector, MFM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 256 bytes/sector ECMA_99_26, - // 3,5", DS, DD, 80 tracks, 9 spt, 512 bytes/sector, MFM + /// 3,5", DS, DD, 80 tracks, 9 spt, 512 bytes/sector, MFM ECMA_100, - // 3,5", DS, HD, 80 tracks, 18 spt, 512 bytes/sector, MFM + /// 3,5", DS, HD, 80 tracks, 18 spt, 512 bytes/sector, MFM ECMA_125, - // 3,5", DS, ED, 80 tracks, 36 spt, 512 bytes/sector, MFM + /// 3,5", DS, ED, 80 tracks, 36 spt, 512 bytes/sector, MFM ECMA_147, - // 8", SS, SD, 77 tracks, 26 spt, 128 bytes/sector, FM + /// 8", SS, SD, 77 tracks, 26 spt, 128 bytes/sector, FM ECMA_54, - // 8", DS, SD, 77 tracks, 26 spt, 128 bytes/sector, FM + /// 8", DS, SD, 77 tracks, 26 spt, 128 bytes/sector, FM ECMA_59, - // 5,25", SS, DD, 35 tracks, 9 spt, 256 bytes/sector, FM, track 0 side 0 = 16 sectors, 128 bytes/sector + /// 5,25", SS, DD, 35 tracks, 9 spt, 256 bytes/sector, FM, track 0 side 0 = 16 sectors, 128 bytes/sector ECMA_66, - // 8", DS, DD, 77 tracks, 8 spt, 1024 bytes/sector, FM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 256 bytes/sector + /// 8", DS, DD, 77 tracks, 8 spt, 1024 bytes/sector, FM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 256 bytes/sector ECMA_69_8, - // 8", DS, DD, 77 tracks, 15 spt, 512 bytes/sector, FM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 256 bytes/sector + /// 8", DS, DD, 77 tracks, 15 spt, 512 bytes/sector, FM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 256 bytes/sector ECMA_69_15, - // 8", DS, DD, 77 tracks, 26 spt, 256 bytes/sector, FM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 256 bytes/sector + /// 8", DS, DD, 77 tracks, 26 spt, 256 bytes/sector, FM, track 0 side 0 = 26 sectors, 128 bytes/sector, track 0 side 1 = 26 sectors, 256 bytes/sector ECMA_69_26, - // 5,25", DS, DD, 40 tracks, 16 spt, 256 bytes/sector, FM, track 0 side 0 = 16 sectors, 128 bytes/sector, track 0 side 1 = 16 sectors, 256 bytes/sector + /// 5,25", DS, DD, 40 tracks, 16 spt, 256 bytes/sector, FM, track 0 side 0 = 16 sectors, 128 bytes/sector, track 0 side 1 = 16 sectors, 256 bytes/sector ECMA_70, - // 5,25", DS, DD, 80 tracks, 16 spt, 256 bytes/sector, FM, track 0 side 0 = 16 sectors, 128 bytes/sector, track 0 side 1 = 16 sectors, 256 bytes/sector + /// 5,25", DS, DD, 80 tracks, 16 spt, 256 bytes/sector, FM, track 0 side 0 = 16 sectors, 128 bytes/sector, track 0 side 1 = 16 sectors, 256 bytes/sector ECMA_78, - // 5,25", DS, DD, 80 tracks, 9 spt, 512 bytes/sector, FM + /// 5,25", DS, DD, 80 tracks, 9 spt, 512 bytes/sector, FM ECMA_78_2, - // 3,5", M.O., 250000 sectors, 512 bytes/sector + /// 3,5", M.O., 250000 sectors, 512 bytes/sector ECMA_154, - // 5,25", M.O., 940470 sectors, 512 bytes/sector + /// 5,25", M.O., 940470 sectors, 512 bytes/sector ECMA_183_512, - // 5,25", M.O., 520902 sectors, 1024 bytes/sector + /// 5,25", M.O., 520902 sectors, 1024 bytes/sector ECMA_183_1024, - // 5,25", M.O., 1165600 sectors, 512 bytes/sector + /// 5,25", M.O., 1165600 sectors, 512 bytes/sector ECMA_184_512, - // 5,25", M.O., 639200 sectors, 1024 bytes/sector + /// 5,25", M.O., 639200 sectors, 1024 bytes/sector ECMA_184_1024, - // 3,5", M.O., 448500 sectors, 512 bytes/sector + /// 3,5", M.O., 448500 sectors, 512 bytes/sector ECMA_201, + // FDFORMAT, non-standard floppy formats - // 5,25", DS, DD, 82 tracks, 10 spt, 512 bytes/sector, MFM + /// 5,25", DS, DD, 82 tracks, 10 spt, 512 bytes/sector, MFM FDFORMAT_525_DD }; - // Track (as partitioning element) types + + /// + /// Track (as partitioning element) types. + /// public enum TrackType { + /// Audio track Audio, - // Audio track + /// Data track (not any of the below defined ones) Data, - // Data track (not any of the below defined ones) + /// Data track, compact disc mode 1 CDMode1, - // Data track, compact disc mode 1 + /// Data track, compact disc mode 2, formless CDMode2Formless, - // Data track, compact disc mode 2, formless + /// Data track, compact disc mode 2, form 1 CDMode2Form1, - // Data track, compact disc mode 2, form 1 + /// Data track, compact disc mode 2, form 2 CDMode2Form2 - // Data track, compact disc mode 2, form 2}} - }; - // Track defining structure + + /// + /// Track defining structure. + /// public struct Track { + /// Track number, 1-started public UInt32 TrackSequence; - // Track number, 1-started + /// Partition type public TrackType TrackType; - // Partition type + /// Track starting sector public UInt64 TrackStartSector; - // Track starting sector + /// Track ending sector public UInt64 TrackEndSector; - // Track ending sector + /// Track pre-gap public UInt64 TrackPregap; - // Track pre-gap + /// Session this track belongs to public UInt16 TrackSession; - // Session this track belongs to + /// Information that does not find space in this struct public string TrackDescription; - // Information that does not find space in this struct + /// Indexes, 00 to 99 and sector offset public Dictionary Indexes; - // Indexes, 00 to 99 and sector offset } - // Session defining structure + + /// + /// Session defining structure. + /// public struct Session { + /// Session number, 1-started public UInt16 SessionSequence; - // Session number, 1-started + /// First track present on this session public UInt32 StartTrack; - // First track present on this session + /// Last track present on this session public UInt32 EndTrack; - // Last track present on this session + /// First sector present on this session public UInt64 StartSector; - // First sector present on this session + /// Last sector present on this session public UInt64 EndSector; - // Last sector present on this session } - // Metadata present for each sector (aka, "tag") + + /// + /// Metadata present for each sector (aka, "tag"). + /// public enum SectorTagType { + /// Apple's GCR sector tags, 12 bytes AppleSectorTag, - // Apple's GCR sector tags, 12 bytes + /// Sync frame from CD sector, 12 bytes CDSectorSync, - // Sync frame from CD sector, 12 bytes + /// CD sector header, 4 bytes CDSectorHeader, - // CD sector header, 4 bytes + /// CD mode 2 sector subheader CDSectorSubHeader, - // CD mode 2 sector subheader + /// CD sector EDC, 4 bytes CDSectorEDC, - // CD sector EDC, 4 bytes + /// CD sector ECC P, 172 bytes CDSectorECC_P, - // CD sector ECC P, 172 bytes + /// CD sector ECC Q, 104 bytes CDSectorECC_Q, - // CD sector ECC Q, 104 bytes + /// CD sector ECC (P and Q), 276 bytes CDSectorECC, - // CD sector ECC (P and Q), 276 bytes + /// CD sector subchannel, 96 bytes CDSectorSubchannel, - // CD sector subchannel, 96 bytes + /// CD track ISRC, string, 12 bytes CDTrackISRC, - // CD track ISRC, string, 12 bytes + /// CD track text, string, 13 bytes CDTrackText, - // CD track text, string, 13 bytes + /// CD track flags, 1 byte CDTrackFlags, - // CD track flags, 1 byte + /// DVD sector copyright information DVD_CMI - // DVD sector copyright information}} - }; - // Metadata present for each disk + + /// + /// Metadata present for each disk. + /// public enum DiskTagType { + /// CD PMA CD_PMA, - // CD PMA + /// CD Adress-Time-In-Pregroove CD_ATIP, - // CD Adress-Time-In-Pregroove + /// CD-Text CD_TEXT, - // CD-Text + /// CD Media Catalogue Number CD_MCN, - // CD Media Catalogue Number + /// DVD Burst Cutting Area DVD_BCA, - // DVD Burst Cutting Area + /// DVD Physical Format Information DVD_PFI, - // DVD Physical Format Information + /// DVD Copyright Management Information DVD_CMI, - // DVD Copyright Management Information + /// DVD Disc Manufacturer Information DVD_DMI - // DVD Disc Manufacturer Information}} - }; - // Feature is supported by image but not implemented yet + + /// + /// Feature is supported by image but not implemented yet. + /// [Serializable] public class FeatureSupportedButNotImplementedImageException : Exception { @@ -576,7 +843,10 @@ namespace FileSystemIDandChk.ImagePlugins throw new ArgumentNullException("info"); } } - // Feature is not supported by image + + /// + /// Feature is not supported by image. + /// [Serializable] public class FeatureUnsupportedImageException : Exception { @@ -595,7 +865,10 @@ namespace FileSystemIDandChk.ImagePlugins throw new ArgumentNullException("info"); } } - // Feature is supported by image but not present on it + + /// + /// Feature is supported by image but not present on it. + /// [Serializable] public class FeatureNotPresentImageException : Exception { @@ -614,7 +887,10 @@ namespace FileSystemIDandChk.ImagePlugins throw new ArgumentNullException("info"); } } - // Feature is supported by image but not by the disc it represents + + /// + /// Feature is supported by image but not by the disc it represents. + /// [Serializable] public class FeaturedNotSupportedByDiscImageException : Exception { @@ -633,7 +909,10 @@ namespace FileSystemIDandChk.ImagePlugins throw new ArgumentNullException("info"); } } - // Corrupt, incorrect or unhandled feature found on image + + /// + /// Corrupt, incorrect or unhandled feature found on image + /// [Serializable] public class ImageNotSupportedException : Exception { diff --git a/FileSystemIDandChk/ImagePlugins/TeleDisk.cs b/FileSystemIDandChk/ImagePlugins/TeleDisk.cs index 3a5e6c4b..279140b2 100644 --- a/FileSystemIDandChk/ImagePlugins/TeleDisk.cs +++ b/FileSystemIDandChk/ImagePlugins/TeleDisk.cs @@ -456,8 +456,7 @@ namespace FileSystemIDandChk.ImagePlugins { if (spt != 0) throw new FeatureUnsupportedImageException("Variable number of sectors per track. This kind of image is not yet supported"); - else - spt = TDTrack.sectors; + spt = TDTrack.sectors; } for (byte processedSectors = 0; processedSectors < TDTrack.sectors; processedSectors++) @@ -575,17 +574,17 @@ namespace FileSystemIDandChk.ImagePlugins public override UInt64 GetImageSize() { - return this.imageSizeWithoutHeaders; + return imageSizeWithoutHeaders; } public override UInt64 GetSectors() { - return (ulong)this.sectorsData.Count; + return (ulong)sectorsData.Count; } public override UInt32 GetSectorSize() { - return this.biggestSectorSize; + return biggestSectorSize; } public override byte[] ReadSector(UInt64 sectorAddress) @@ -601,12 +600,12 @@ namespace FileSystemIDandChk.ImagePlugins for (ulong i = sectorAddress; i < (sectorAddress + length); i++) { - if (!this.sectorsData.ContainsKey((uint)i)) + if (!sectorsData.ContainsKey((uint)i)) throw new ImageNotSupportedException(String.Format("Requested sector {0} not found", i)); byte[] sector; - if(!this.sectorsData.TryGetValue((uint)i, out sector)) + if(!sectorsData.TryGetValue((uint)i, out sector)) throw new ImageNotSupportedException(String.Format("Error reading sector {0}", i)); if (first) @@ -643,7 +642,7 @@ namespace FileSystemIDandChk.ImagePlugins public override string GetImageVersion() { - return this.telediskVersion; + return telediskVersion; } public override string GetImageApplication() @@ -653,38 +652,38 @@ namespace FileSystemIDandChk.ImagePlugins public override string GetImageApplicationVersion() { - return this.telediskVersion; + return telediskVersion; } public override DateTime GetImageCreationTime() { - return this.creationDate; + return creationDate; } public override DateTime GetImageLastModificationTime() { - return this.modificationDate; + return modificationDate; } public override string GetImageName() { - return this.imageName; + return imageName; } public override DiskType GetDiskType() { - switch (this.header.driveType) + switch (header.driveType) { case DriveType525DD: case DriveType525HD_DDDisk: case DriveType525HD: { - switch (this.totalDiskSize) + switch (totalDiskSize) { case 163840: { // Acorn disk uses 256 bytes/sector - if(this.biggestSectorSize == 256) + if(biggestSectorSize == 256) return DiskType.ACORN_525_SS_DD_40; else // DOS disks use 512 bytes/sector return DiskType.DOS_525_SS_DD_8; @@ -692,7 +691,7 @@ namespace FileSystemIDandChk.ImagePlugins case 184320: { // Atari disk uses 256 bytes/sector - if(this.biggestSectorSize == 256) + if(biggestSectorSize == 256) return DiskType.ATARI_525_DD; else // DOS disks use 512 bytes/sector return DiskType.DOS_525_SS_DD_9; @@ -700,7 +699,7 @@ namespace FileSystemIDandChk.ImagePlugins case 327680: { // Acorn disk uses 256 bytes/sector - if(this.biggestSectorSize == 256) + if(biggestSectorSize == 256) return DiskType.ACORN_525_SS_DD_80; else // DOS disks use 512 bytes/sector return DiskType.DOS_525_DS_DD_8; @@ -742,17 +741,16 @@ namespace FileSystemIDandChk.ImagePlugins default: { if (MainClass.isDebug) - Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 5,25\" disk with {0} bytes", this.totalDiskSize); + Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 5,25\" disk with {0} bytes", totalDiskSize); return DiskType.Unknown; } } - break; } case DriveType35DD: case DriveType35ED: case DriveType35HD: { - switch (this.totalDiskSize) + switch (totalDiskSize) { case 327680: return DiskType.DOS_35_SS_DD_8; @@ -788,14 +786,14 @@ namespace FileSystemIDandChk.ImagePlugins default: { if (MainClass.isDebug) - Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 3,5\" disk with {0} bytes", this.totalDiskSize); + Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 3,5\" disk with {0} bytes", totalDiskSize); return DiskType.Unknown; } } } case DriveType8inch: { - switch (this.totalDiskSize) + switch (totalDiskSize) { case 81664: return DiskType.IBM23FD; @@ -821,7 +819,7 @@ namespace FileSystemIDandChk.ImagePlugins case 512512: { // DEC disk uses 256 bytes/sector - if(this.biggestSectorSize == 256) + if(biggestSectorSize == 256) return DiskType.RX02; else // ECMA disks use 128 bytes/sector return DiskType.ECMA_59; @@ -837,7 +835,7 @@ namespace FileSystemIDandChk.ImagePlugins default: { if (MainClass.isDebug) - Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 8\" disk with {0} bytes", this.totalDiskSize); + Console.WriteLine("DEBUG (TeleDisk plugin): Unknown 8\" disk with {0} bytes", totalDiskSize); return DiskType.Unknown; } } @@ -845,12 +843,11 @@ namespace FileSystemIDandChk.ImagePlugins default: { if (MainClass.isDebug) - Console.WriteLine("DEBUG (TeleDisk plugin): Unknown drive type {1} with {0} bytes", this.totalDiskSize, this.header.driveType); + Console.WriteLine("DEBUG (TeleDisk plugin): Unknown drive type {1} with {0} bytes", totalDiskSize, header.driveType); return DiskType.Unknown; } } - throw new NotImplementedException("Not yet implemented."); } #region Private methods @@ -952,7 +949,6 @@ namespace FileSystemIDandChk.ImagePlugins if (Encoding == 0x00) { Length = encodedData[ins + 1]; - Piece = new byte[Length]; Array.Copy(encodedData, ins + 2, decodedData, outs, Length); ins += (2 + Length); outs += Length; diff --git a/FileSystemIDandChk/PartPlugins/PartPlugin.cs b/FileSystemIDandChk/PartPlugins/PartPlugin.cs index 63f54103..ac85d6eb 100644 --- a/FileSystemIDandChk/PartPlugins/PartPlugin.cs +++ b/FileSystemIDandChk/PartPlugins/PartPlugin.cs @@ -41,35 +41,49 @@ using System.Collections.Generic; namespace FileSystemIDandChk.PartPlugins { + /// + /// Abstract class to implement partitioning schemes interpreting plugins. + /// public abstract class PartPlugin { + /// Plugin name. public string Name; + /// Plugin UUID. public Guid PluginUUID; protected PartPlugin() { } + /// + /// Interprets a partitioning scheme. + /// + /// true, if partitioning scheme is recognized, false otherwise. + /// Disk image. + /// Returns list of partitions. public abstract bool GetInformation(ImagePlugins.ImagePlugin imagePlugin, out List partitions); } + /// + /// Partition structure. + /// public struct Partition { + /// Partition number, 0-started public ulong PartitionSequence; - // Partition number, 0-started + /// Partition type public string PartitionType; - // Partition type + /// Partition name (if the scheme supports it) public string PartitionName; - // Partition name (if the scheme supports it) + /// Start of the partition, in bytes public ulong PartitionStart; - // Start of the partition, in bytes + /// LBA of partition start public ulong PartitionStartSector; - // LBA of partition start + /// Length in bytes of the partition public ulong PartitionLength; - // Length in bytes of the partition + /// Length in sectors of the partition public ulong PartitionSectors; - // Length in sectors of the partition + /// Information that does not find space in this struct public string PartitionDescription; - // Information that does not find space in this struct } } \ No newline at end of file diff --git a/FileSystemIDandChk/Plugins/Plugin.cs b/FileSystemIDandChk/Plugins/Plugin.cs index f83c01de..2b5bd215 100644 --- a/FileSystemIDandChk/Plugins/Plugin.cs +++ b/FileSystemIDandChk/Plugins/Plugin.cs @@ -40,16 +40,34 @@ using System; namespace FileSystemIDandChk.Plugins { + /// + /// Abstract class to implement filesystem plugins. + /// public abstract class Plugin { + /// Plugin name. public string Name; + /// Plugin UUID. public Guid PluginUUID; protected Plugin() { } + /// + /// Identifies the filesystem in the specified LBA + /// + /// Disk image. + /// Partition offset (LBA). + /// true, if the filesystem is recognized, false otherwise. public abstract bool Identify(ImagePlugins.ImagePlugin imagePlugin, ulong partitionOffset); + + /// + /// Gets information about the identified filesystem. + /// + /// Disk image. + /// Partition offset (LBA). + /// Filesystem information. public abstract void GetInformation(ImagePlugins.ImagePlugin imagePlugin, ulong partitionOffset, out string information); } } diff --git a/FileSystemIDandChk/README.md b/FileSystemIDandChk/README.md index 86083302..3db19ef9 100644 --- a/FileSystemIDandChk/README.md +++ b/FileSystemIDandChk/README.md @@ -1,4 +1,4 @@ -FileSystemIDandChk v1.00 +FileSystemIDandChk v1.10 ============= Filesystem identifier and checker. @@ -17,9 +17,9 @@ Works under any operating system where there is Mono or .NET Framework. Tested w Features ======== -* Supports reading CDRWin cue/bin cuesheets and Apple DiskCopy 4.2 -* Supports traversing MBR, Apple and NeXT partitioning schemes -* Identifies HFS, HFS+, MFS, BeFS, ext/2/3/4, FAT12/16/32, FFS/UFS/UFS2, HPFS, ISO9660, LisaFS, MinixFS, NTFS, ODS11, Opera, PCEngine, SolarFS, System V and UnixWare boot filesystem +* Supports reading CDRWin cue/bin cuesheets, Apple DiskCopy 4.2 and TeleDisk disk images. +* Supports traversing MBR, Apple and NeXT partitioning schemes. +* Identifies HFS, HFS+, MFS, BeFS, ext/2/3/4, FAT12/16/32, FFS/UFS/UFS2, HPFS, ISO9660, LisaFS, MinixFS, NTFS, ODS11, Opera, PCEngine, SolarFS, System V and UnixWare boot filesystem. Changelog ========= diff --git a/Packages.mdproj b/Packages.mdproj index 6b41f032..638e2076 100644 --- a/Packages.mdproj +++ b/Packages.mdproj @@ -2,7 +2,7 @@ PackagingProject - 9.0.21022 + 8.0.30703 2.0 {8996EF59-09B9-4920-A3DE-2F8EA2EBBCFF} @@ -41,5 +41,6 @@ + 1.10 \ No newline at end of file