/// <summary> /// This method will write privateHeader to disk as well /// </summary> public static void WriteToDisk(Disk disk, PrivateHeader privateHeader, TOCBlock tocBlock) { privateHeader.UpdateSequenceNumber++; tocBlock.UpdateSequenceNumber++; byte[] bytes = tocBlock.GetBytes(); disk.WriteSectors((long)(privateHeader.PrivateRegionStartLBA + privateHeader.PreviousPrimaryTocLBA), bytes); disk.WriteSectors((long)(privateHeader.PrivateRegionStartLBA + privateHeader.PreviousSecondaryTocLBA), bytes); privateHeader.PrimaryTocLBA = privateHeader.PreviousPrimaryTocLBA; privateHeader.SecondaryTocLBA = privateHeader.PreviousSecondaryTocLBA; PrivateHeader.WriteToDisk(disk, privateHeader); }
/// <summary> /// This method will write privateHeader to disk as well /// </summary> public static void WriteToDisk(Disk disk, PrivateHeader privateHeader, TOCBlock tocBlock) { privateHeader.UpdateSequenceNumber++; tocBlock.UpdateSequenceNumber++; byte[] tocBytes = tocBlock.GetBytes(); if (disk.BytesPerSector > Length) { tocBytes = ByteUtils.Concatenate(tocBytes, new byte[disk.BytesPerSector - TOCBlock.Length]); } long alternatePrimaryTOCLBA = PrivateRegionHelper.FindUnusedLBAForPrimaryToc(privateHeader, tocBlock); long alternateSecondaryTOCLBA = PrivateRegionHelper.FindUnusedLBAForSecondaryToc(privateHeader, tocBlock); disk.WriteSectors(alternatePrimaryTOCLBA, tocBytes); disk.WriteSectors(alternateSecondaryTOCLBA, tocBytes); privateHeader.PrimaryTocLBA = (ulong)alternatePrimaryTOCLBA; privateHeader.SecondaryTocLBA = (ulong)alternateSecondaryTOCLBA; PrivateHeader.WriteToDisk(disk, privateHeader); }