private static unsafe void SetDateTime(string path, DateTime dateTime, DateTimeAttrib attrib, bool utc) { long rawFileTime = utc ? dateTime.ToFileTimeUtc() : dateTime.ToFileTime(); PathInternal.DllImport.FILETIME fileTime = new PathInternal.DllImport.FILETIME(); fileTime.dwLowDateTime = (uint)(rawFileTime & 0xFFFFFFFF); fileTime.dwHighDateTime = (uint)((rawFileTime >> 32) & 0xFFFFFFFF); IO.FileStream fs = OpenRead(path); switch (attrib) { case DateTimeAttrib.Access: PathInternal.DllImport.SetFileTime(fs.SafeFileHandle, (PathInternal.DllImport.FILETIME *) 0, &fileTime, (PathInternal.DllImport.FILETIME *) 0); break; case DateTimeAttrib.Creation: PathInternal.DllImport.SetFileTime(fs.SafeFileHandle, &fileTime, (PathInternal.DllImport.FILETIME *) 0, (PathInternal.DllImport.FILETIME *) 0); break; case DateTimeAttrib.Write: PathInternal.DllImport.SetFileTime(fs.SafeFileHandle, (PathInternal.DllImport.FILETIME *) 0, (PathInternal.DllImport.FILETIME *) 0, &fileTime); break; default: throw new Exception("Unknown DateTimeAttrib in File.SetDateTime() function"); } fs.Close(); }
private static unsafe void SetDateTime( string path, DateTime dateTime, DateTimeAttrib attrib, bool utc ) { long rawFileTime = utc ? dateTime.ToFileTimeUtc() : dateTime.ToFileTime(); PathInternal.DllImport.FILETIME fileTime = new PathInternal.DllImport.FILETIME(); fileTime.dwLowDateTime = (uint)( rawFileTime & 0xFFFFFFFF ); fileTime.dwHighDateTime = (uint)( ( rawFileTime >> 32 ) & 0xFFFFFFFF ); IO.FileStream fs = OpenRead( path ); switch ( attrib ) { case DateTimeAttrib.Access: PathInternal.DllImport.SetFileTime( fs.SafeFileHandle, (PathInternal.DllImport.FILETIME*)0, &fileTime, (PathInternal.DllImport.FILETIME*)0 ); break; case DateTimeAttrib.Creation: PathInternal.DllImport.SetFileTime( fs.SafeFileHandle, &fileTime, (PathInternal.DllImport.FILETIME*)0, (PathInternal.DllImport.FILETIME*)0 ); break; case DateTimeAttrib.Write: PathInternal.DllImport.SetFileTime( fs.SafeFileHandle, (PathInternal.DllImport.FILETIME*)0, (PathInternal.DllImport.FILETIME*)0, &fileTime ); break; default: throw new Exception( "Unknown DateTimeAttrib in File.SetDateTime() function" ); } fs.Close(); }