RevisionHistory.txt 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. Revision History:
  2. -----------------
  3. 1.1.0 - LDM related bugfix.
  4. NTFS related bugfix and code clean up.
  5. 1.1.1 - Minor enhancements.
  6. 1.1.2 - Better handling of a corrupted LDM database.
  7. 1.1.3 - Disabled file system caching for virtual disks.
  8. 1.1.4 - Fixed GPT partition size detection bug.
  9. Allow reading from disks that are opened for write access by other applications.
  10. 1.1.5 - Improved disk detection mechanism.
  11. Added limited VMDK support (monolithic flat).
  12. 1.1.6 - Use the SetFileValidData() Windows API call to extend virtual disks faster.
  13. 1.1.7 - Fixed VMDK related bug (flat files that have a space in their filename).
  14. Added support for reading a monolithic sparse VMDK.
  15. 1.1.8 - Fixed NTFS related issues.
  16. 1.1.9 - Disks are now orderered according to disk number.
  17. Code clean up.
  18. 1.2.0 - NTFS related bugfixes.
  19. Write operations on readonly disks are no longer silently ignored and now raising exceptions, added missing readonly check to VMDK files.
  20. 1.2.1 - Minor enhancements and fixes.
  21. 1.2.2 - Minor NTFS changes.
  22. 1.2.3 - Fixed: LDM extent record now properly support the 0x40 flag.
  23. Added helper methods for taking a disk online/offline.
  24. 1.2.4 - NTFS related fixes.
  25. 1.2.5 - Added support for reading dynamic VHDs.
  26. 1.2.6 - More meaningful exceptions types are now thrown on errors.
  27. Dynamic VHD related bugfix.
  28. 1.2.7 - Minor improvements.
  29. 1.2.8 - Bugfix: CRC32 was not updated when GPT partition was extended.
  30. - Bugfix: Invalid protective MBR partition was written during GPT disk initialization.
  31. - Bugfix: A few usable sectors may have been marked as unusable during GPT disk initialization.
  32. - Bugfix: VHD was not extended to the correct size.
  33. 1.2.9 - We now use the same caching policy for virtual disk read and write operations. (Workaround for hosts without KB981166).
  34. - Bugfix: GPT header checksum verification failed if the size of the partition entries was not a multiple of sector size.
  35. 1.3.0 - Fixed a bug related to the RESUME boot sector.
  36. 1.3.1 - Adding a disk to RAID-5 volume is now faster thanks to multithreaded parity calculation (when applicable).
  37. 1.3.2 - Adding a disk to RAID-5 volume now use less read / write cache so it requires less RAM.
  38. 1.3.3 - Better handling of removable disks.
  39. 1.3.4 - Disk images can now be locked for exclusive access.
  40. 1.3.5 - We now use noncached I/O operations when working with virtual disks.
  41. 1.3.6 - Improved handling of disk read errors.
  42. API to retrieve disk description and serial number.
  43. 1.3.7 - Proper handling of disks with no serial number.
  44. 1.3.8 - Minor improvements.
  45. 1.3.9 - Minor improvements.
  46. 1.4.0 - API improvements.
  47. 1.4.1 - Improved volume locking mechanism.
  48. 1.4.2 - Support for disks with 4KB sectors.
  49. Minor improvements and bugfixes to DiskImage and inheriting classes.
  50. Bugfix: RawDiskImage.Extend had issue with closing the filestream.
  51. Bugfix: allocation within the private region of a dynamic disk did not function properly.
  52. API: Added RAM-Disk implementation.
  53. API: Added RawDiskImage.Create method.
  54. API: Added BasicDiskHelper.GetUnallocatedExtents method.
  55. 1.4.3 - Bugfix: MirroredVolume.BytesPerSector reported wrong number of bytes per sector when the first volume was not operational.
  56. Bugfix: DynamicDiskHelper.IsMoveLocationValid ignored allocated extents.
  57. API: Added DiskGroupGuid property to DynamicDisk.
  58. 1.4.4 - Bugfix: DynamicVolumeHelper looked for volume extents outside of the disk group.
  59. Bugfix: RetainHelper.IsVolumeRetained did not properly iterate components of mirrored volume.
  60. NTFS: Properly trim result array when caller tries to read more bytes than the record contains.
  61. NTFS: Return empty byte array when trying to read from offset larger than file length.
  62. LockHelper.LockAllVolumesOrNone will attempt to lock only mounted volumes.
  63. API improvements.
  64. 1.4.5 - IFileSystem: Added FileOptions parameter to OpenFile.
  65. DeviceInterfaceUtils: Added GetDeviceList method.
  66. Minor changes and improvements.
  67. 1.4.6 - Win32Errors enum: Added ERROR_INVALID_DATA
  68. Bugfix: The second KLOG page was not read.
  69. Minor changes and improvements.
  70. Corrected documentation.
  71. 1.4.7 - Bugfix: NTFS File Records that exceeded 511 bytes were corrupted during write.
  72. Minor improvements to NTFS Data Run record implementation.
  73. 1.4.8 - NTFS: ClusterUsageBitmap: Cosmetic improvements.
  74. NTFS: Throw InvalidDataException if FILE or INDX record signature is invalid.
  75. NTFS: NonResidentAttributeRecord: Minor optimization.
  76. NTFS: NonResidentAttributeRecord: Added GetClustersInUse() method.
  77. VHD: BlockAllocationTable: Improved implementation.
  78. VHD: DynamicDiskHeader: Improved implementation.
  79. VHD: Implemented dynamic VHD write functionality.
  80. Minor changes and improvements.
  81. 1.4.9 - NTFS: AttributeListEntry: throw InvalidDataException when length is invalid.
  82. NTFS: NTFSVolume: Added GetFileRecordsInDirectoryFromMft() method for recovery purposes.
  83. VHD: CreateDynamicDisk now accepts any multiple of sector size as disk size.
  84. VHD: Create renamed to CreateFixedDisk, checks that disk size is a multiple of sector size.
  85. VHD: Added AreSectorsInUse() method.
  86. RawDiskImage: Circumvented FileStream buffering which resulted in reading more sectors than required.
  87. 1.5.0 - Bugfix: IOExceptions thrown had Win32 error code set instead of HResult.
  88. Better handling of broken disk drivers (e.g. Dataram RAMDisk v4.4.0 RC36).
  89. IOExceptionHelper: Moved ThrowIOError() method from FileStreamEx class to IOExceptionHelper class.
  90. IOExceptionHelper: Added GetWin32ErrorCode() and GetExceptionHResult() methods.
  91. NTFS: Major implementation improvements.
  92. Win32Error: Corrected underlying type to ushort.
  93. Win32Error: Added file system related error codes.
  94. FileStreamEx: Optimized implementation.
  95. FileStreamEx: Added ReadOverlapped() and WriteOverlapped() methods.
  96. FileStreamEx: Added SetValidLength() method.
  97. FileStreamEx: Added flushToDisk parameter to Flush() implementation.
  98. Disk: Marked IsReadOnly property as virtual.
  99. RawDiskImage: Added option to use overlapped IO.
  100. VirtualHardDisk: Added option to use overlapped IO.
  101. VirtualMachineDisk: Bugfix: Extent opened for write when IsReadOnly was true.
  102. Added DiskFullException implementation.
  103. Added AlreadyExistsException implementation.
  104. Added DirectoryNotEmptyException implementation.
  105. 1.5.1 - PhysicalDisk: Added isReadOnly constructor parameter.
  106. DiskExtent: Added IsReadOnly property.
  107. Volume: Added IsReadOnly virtual property.
  108. VirtualMachineDisk: Bugfix: IsReadOnly always returned false.
  109. VMDK: Improved implementation.
  110. DiskImage: Added ExclusiveLock() overload for overlapped IO
  111. NTFS: NTFSVolume: Added IsReadOnly property.
  112. NTFS: Major improvements to logging implementation.
  113. NTFS: Log changes to MFT data and changes to Bitmap attributes.
  114. NTFS: MasterFileTable: GetFileRecord, GetFileRecordSegment: throw InvalidDataException if SequenceNumber does not match FileRecordSegment.
  115. NTFS: VolumeInformationRecord: Added IsDirty property.
  116. NTFS: NTFSVolume: throw exception in the constructor if the volume is invalid or not supported.
  117. NTFS: FileRecordSegment: Bugfix: Alignment of EndMarkerLength to 8-byte boundary was not taken into account.
  118. NTFS: NTFSVolume: Changed RootDirSegmentReference property from protected internal to public.
  119. NTFS: IndexHelper: Bugfix: Correctly set BlocksPerIndexRecord when BytesPerIndexRecord > BytesPerCluster.
  120. NTFS: NTFSVolume: Added support for multithreading.