Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }