/// <summary> /// Set the data from the raw values provided. /// </summary> /// <param name="data">The raw data to extract values from.</param> /// <param name="index">The index to start extracting values from.</param> /// <param name="count">The number of bytes available.</param> public void SetData(byte[] data, int index, int count) { using (MemoryStream ms = new MemoryStream(data, index, count, false)) using (BlubbZipHelperStream helperStream = new BlubbZipHelperStream(ms)) { // bit 0 if set, modification time is present // bit 1 if set, access time is present // bit 2 if set, creation time is present flags_ = (Flags)helperStream.ReadByte(); if (((flags_ & Flags.ModificationTime) != 0) && (count >= 5)) { int iTime = helperStream.ReadLEInt(); modificationTime_ = (new System.DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime() + new TimeSpan(0, 0, 0, iTime, 0)).ToLocalTime(); } if ((flags_ & Flags.AccessTime) != 0) { int iTime = helperStream.ReadLEInt(); lastAccessTime_ = (new System.DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime() + new TimeSpan(0, 0, 0, iTime, 0)).ToLocalTime(); } if ((flags_ & Flags.CreateTime) != 0) { int iTime = helperStream.ReadLEInt(); createTime_ = (new System.DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime() + new TimeSpan(0, 0, 0, iTime, 0)).ToLocalTime(); } } }
/// <summary> /// Set the data from the raw values provided. /// </summary> /// <param name="data">The raw data to extract values from.</param> /// <param name="index">The index to start extracting values from.</param> /// <param name="count">The number of bytes available.</param> public void SetData(byte[] data, int index, int count) { using (MemoryStream ms = new MemoryStream(data, index, count, false)) using (BlubbZipHelperStream helperStream = new BlubbZipHelperStream(ms)) { helperStream.ReadLEInt(); // Reserved while (helperStream.Position < helperStream.Length) { int ntfsTag = helperStream.ReadLEShort(); int ntfsLength = helperStream.ReadLEShort(); if (ntfsTag == 1) { if (ntfsLength >= 24) { long lastModificationTicks = helperStream.ReadLELong(); lastModificationTime_ = DateTime.FromFileTime(lastModificationTicks); long lastAccessTicks = helperStream.ReadLELong(); lastAccessTime_ = DateTime.FromFileTime(lastAccessTicks); long createTimeTicks = helperStream.ReadLELong(); createTime_ = DateTime.FromFileTime(createTimeTicks); } break; } else { // An unknown NTFS tag so simply skip it. helperStream.Seek(ntfsLength, SeekOrigin.Current); } } } }
/// <summary> /// Set the data from the raw values provided. /// </summary> /// <param name="data">The raw data to extract values from.</param> /// <param name="index">The index to start extracting values from.</param> /// <param name="count">The number of bytes available.</param> public void SetData( byte[] data, int index, int count ) { using( MemoryStream ms = new MemoryStream( data, index, count, false ) ) using( BlubbZipHelperStream helperStream = new BlubbZipHelperStream( ms ) ) { helperStream.ReadLEInt(); // Reserved while( helperStream.Position < helperStream.Length ) { int ntfsTag = helperStream.ReadLEShort(); int ntfsLength = helperStream.ReadLEShort(); if( ntfsTag == 1 ) { if( ntfsLength >= 24 ) { long lastModificationTicks = helperStream.ReadLELong(); lastModificationTime_ = DateTime.FromFileTime( lastModificationTicks ); long lastAccessTicks = helperStream.ReadLELong(); lastAccessTime_ = DateTime.FromFileTime( lastAccessTicks ); long createTimeTicks = helperStream.ReadLELong(); createTime_ = DateTime.FromFileTime( createTimeTicks ); } break; } else { // An unknown NTFS tag so simply skip it. helperStream.Seek( ntfsLength, SeekOrigin.Current ); } } } }
/// <summary> /// Set the data from the raw values provided. /// </summary> /// <param name="data">The raw data to extract values from.</param> /// <param name="index">The index to start extracting values from.</param> /// <param name="count">The number of bytes available.</param> public void SetData( byte[] data, int index, int count ) { using( MemoryStream ms = new MemoryStream( data, index, count, false ) ) using( BlubbZipHelperStream helperStream = new BlubbZipHelperStream( ms ) ) { // bit 0 if set, modification time is present // bit 1 if set, access time is present // bit 2 if set, creation time is present flags_ = (Flags)helperStream.ReadByte(); if( ( ( flags_ & Flags.ModificationTime ) != 0 ) && ( count >= 5 ) ) { int iTime = helperStream.ReadLEInt(); modificationTime_ = ( new System.DateTime( 1970, 1, 1, 0, 0, 0 ).ToUniversalTime() + new TimeSpan( 0, 0, 0, iTime, 0 ) ).ToLocalTime(); } if( ( flags_ & Flags.AccessTime ) != 0 ) { int iTime = helperStream.ReadLEInt(); lastAccessTime_ = ( new System.DateTime( 1970, 1, 1, 0, 0, 0 ).ToUniversalTime() + new TimeSpan( 0, 0, 0, iTime, 0 ) ).ToLocalTime(); } if( ( flags_ & Flags.CreateTime ) != 0 ) { int iTime = helperStream.ReadLEInt(); createTime_ = ( new System.DateTime( 1970, 1, 1, 0, 0, 0 ).ToUniversalTime() + new TimeSpan( 0, 0, 0, iTime, 0 ) ).ToLocalTime(); } } }