Exemple #1
0
		/// <summary>
		/// Get a RAPIFileTime structure for the specified file
		/// </summary>
		/// <param name="FileName">Name of the file to check</param>
		/// <param name="DesiredTime">A RAPIFileTime</param>
		/// <returns>The DateTime for the specified value</returns>
		public DateTime GetDeviceFileTime(string FileName, RAPIFileTime DesiredTime)
		{
			CheckConnection();

			IntPtr hFile = IntPtr.Zero;
			long created = 0;
			long modified = 0;
			long accessed = 0;

			hFile = CeCreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
			if((int)hFile == INVALID_HANDLE_VALUE)
			{
				throw new RAPIException("Could not open remote file");
			}

			if(! Convert.ToBoolean(CeGetFileTime(hFile, ref created, ref modified, ref accessed)))
			{
				CeCloseHandle(hFile);
				throw new RAPIException("Could not get file time");
			}

			CeCloseHandle(hFile);

			switch(DesiredTime)
			{
				case RAPIFileTime.CreateTime:
					return DateTime.FromFileTime(created);
				case RAPIFileTime.LastAccessTime:
					return DateTime.FromFileTime(accessed);
				case RAPIFileTime.LastModifiedTime:
					return DateTime.FromFileTime(modified);
				default:
					throw new RAPIException("Invalid DesiredTime parameter");
			}
		}
Exemple #2
0
		/// <summary>
		/// Modified a FileTime for the specified file
		/// </summary>
		/// <param name="FileName">File to modify</param>
		/// <param name="DesiredTime">Time to modify</param>
		/// <param name="NewTime">New time to set</param>
		public void SetDeviceFileTime(string FileName, RAPIFileTime DesiredTime, DateTime NewTime)
		{
			CheckConnection();

			IntPtr hFile = IntPtr.Zero;

			hFile = CeCreateFile(FileName, GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
			if((int)hFile == INVALID_HANDLE_VALUE)
			{
				throw new RAPIException("Could not open remote file");
			}

			SYSTEMTIME st = new SYSTEMTIME(NewTime);
			long ft = (long)st;

			long empty = 0; 
			switch(DesiredTime)
			{
				case RAPIFileTime.CreateTime:
					if(! Convert.ToBoolean(CeSetFileTime(hFile, ref ft, ref empty, ref empty)))
					{
						CeCloseHandle(hFile);
						throw new RAPIException("Could not get file time");
					}
					break;
				case RAPIFileTime.LastAccessTime:
					if(! Convert.ToBoolean(CeSetFileTime(hFile, ref empty, ref ft, ref empty)))
					{
						CeCloseHandle(hFile);
						throw new RAPIException("Could not get file time");
					}
					break;
				case RAPIFileTime.LastModifiedTime:
					if(! Convert.ToBoolean(CeSetFileTime(hFile, ref empty, ref empty, ref ft)))
					{
						CeCloseHandle(hFile);
						throw new RAPIException("Could not get file time");
					}
					break;
				default:
					throw new RAPIException("Invalid DesiredTime parameter");
			}

			CeCloseHandle(hFile);
		}
Exemple #3
0
        /// <summary>
        /// Modified a FileTime for the specified file
        /// </summary>
        /// <param name="FileName">File to modify</param>
        /// <param name="DesiredTime">Time to modify</param>
        /// <param name="NewTime">New time to set</param>
        public bool SetDeviceFileTime(string FileName, RAPIFileTime DesiredTime, DateTime NewTime)
        {
            CheckConnection();

            IntPtr hFile = IntPtr.Zero;

            hFile = CeCreateFile(FileName, GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
            if((int)hFile == INVALID_HANDLE_VALUE)
            {
                return false;
            }

            SYSTEMTIME st = new SYSTEMTIME(NewTime);
            long ft = (long)st;

            long empty = 0;
            switch(DesiredTime)
            {
                case RAPIFileTime.CreateTime:
                    if(! Convert.ToBoolean(CeSetFileTime(hFile, ref ft, ref empty, ref empty)))
                    {
                        CeCloseHandle(hFile);
                        return false;
                    }
                    break;
                case RAPIFileTime.LastAccessTime:
                    if(! Convert.ToBoolean(CeSetFileTime(hFile, ref empty, ref ft, ref empty)))
                    {
                        CeCloseHandle(hFile);
                        return false;
                    }
                    break;
                case RAPIFileTime.LastModifiedTime:
                    if(! Convert.ToBoolean(CeSetFileTime(hFile, ref empty, ref empty, ref ft)))
                    {
                        CeCloseHandle(hFile);
                        return false;
                    }
                    break;
                default:
                    return false;
            }

            CeCloseHandle(hFile);
            return true;
        }