public MicrosoftExFatRootDirFileDirectoryEntry(byte[] directoryEntry) { this.EntryType = directoryEntry[0]; this.SecondaryCount = directoryEntry[1]; this.SetChecksum = ParseFile.ReadUshortLE(directoryEntry, 2); this.FileAttributes = ParseFile.ReadUshortLE(directoryEntry, 4); this.Reserved1 = ParseFile.ReadUshortLE(directoryEntry, 6); this.Create = ParseFile.ReadUintLE(directoryEntry, 8); this.LastModified = ParseFile.ReadUintLE(directoryEntry, 0x0C); this.LastAccessed = ParseFile.ReadUintLE(directoryEntry, 0x10); this.Create10ms = directoryEntry[0x14]; this.LastModified10ms = directoryEntry[0x15]; this.CreateTZOffset = directoryEntry[0x16]; this.LastModifiedTZOffset = directoryEntry[0x17]; this.LastAccessTZOffset = directoryEntry[0x18]; this.Reserved2 = ParseFile.SimpleArrayCopy(directoryEntry, 0x19, 7); this.IsInUse = ((this.EntryType & 0x80) == 0x80); this.IsDirectory = ((this.FileAttributes & 0x10) == 0x10); }
private void ProcessRootDirectoryVolumeLabelEntry(byte[] volumeLabelEntry) { byte characterCount = volumeLabelEntry[1]; // chars, not bytes int nameLength = characterCount *= 2; // multiple by 2 to get bytes since these are Unicode Chars byte[] labelBytes = ParseFile.SimpleArrayCopy(volumeLabelEntry, 2, nameLength); this.VolumeIdentifier = Encoding.Unicode.GetString(labelBytes); }
public MicrosoftExFatRootDirFileNameExtensionEntry(byte[] fileNameExtensionEntry) { byte[] fileNameChunkBytes; this.EntryType = fileNameExtensionEntry[0]; this.GeneralSecondaryFlags = fileNameExtensionEntry[1]; fileNameChunkBytes = ParseFile.SimpleArrayCopy(fileNameExtensionEntry, 2, 30); this.FileNameChunk = Encoding.Unicode.GetString(fileNameChunkBytes); }