public static int ReadFrom(byte[] src, int offset, Encoding enc, out DirectoryRecord record) { int length = src[offset + 0]; record = new DirectoryRecord(); record.ExtendedAttributeRecordLength = src[offset + 1]; record.LocationOfExtent = IsoUtilities.ToUInt32FromBoth(src, offset + 2); record.DataLength = IsoUtilities.ToUInt32FromBoth(src, offset + 10); record.RecordingDateAndTime = IsoUtilities.ToUTCDateTimeFromDirectoryTime(src, offset + 18); record.Flags = (FileFlags)src[offset + 25]; record.FileUnitSize = src[offset + 26]; record.InterleaveGapSize = src[offset + 27]; record.VolumeSequenceNumber = IsoUtilities.ToUInt16FromBoth(src, offset + 28); byte lengthOfFileIdentifier = src[offset + 32]; record.FileIdentifier = IsoUtilities.ReadChars(src, offset + 33, lengthOfFileIdentifier, enc); return(length); }