public FatDirectoryEntry CreateSub(Fat fat) { var chain = new ClusterChain(fat, false); chain.SetChainLength(1); var entry = FatDirectoryEntry.Create(true); entry.SetStartCluster(chain.GetStartCluster()); var dir = new ClusterChainDirectory(chain, false); /* add "." entry */ var dot = FatDirectoryEntry.Create(true); dot.SetShortName(ShortName.Dot); dot.SetStartCluster(dir.GetStorageCluster()); CopyDateTimeFields(entry, dot); dir.AddEntry(dot); /* add ".." entry */ var dotDot = FatDirectoryEntry.Create(true); dotDot.SetShortName(ShortName.DotDot); dotDot.SetStartCluster(GetStorageCluster()); CopyDateTimeFields(entry, dotDot); dir.AddEntry(dotDot); dir.Flush(); return(entry); }
public static ClusterChainDirectory CreateRoot(Fat fat) { if (fat.GetFatType() != FatType.BaseFat32) { throw new ArgumentException( "only FAT32 stores root directory in a cluster chain"); } var bs = (Fat32BootSector)fat.GetBootSector(); var cc = new ClusterChain(fat, false); cc.SetChainLength(1); bs.SetRootDirFirstCluster(cc.GetStartCluster()); var result = new ClusterChainDirectory(cc, true); result.Flush(); return(result); }