Esempio n. 1
0
        /// <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();
                    }
                }
        }
Esempio n. 2
0
        /// <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);
                        }
                    }
                }
        }
Esempio n. 3
0
		/// <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 );
					}
				}
			}
		}
Esempio n. 4
0
		/// <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();
				}
			}
		}