public static bool GetFileInformationByHandleEx( SafeFileHandle hFile, out FILE_BASIC_INFO info ) { info = new FILE_BASIC_INFO(); return(GetFileInformationByHandleEx(hFile, FILE_INFO_BY_HANDLE_CLASS.FileBasicInfo, out info, (uint)Marshal.SizeOf(info))); }
public static DateTime GetFileChangeTime(string path) { using (var file = new FileStream(path, FileMode.Open)) { var fileInfo = new FILE_BASIC_INFO(); #pragma warning disable 618 GetFileInformationByHandleEx(file.Handle, 0, out fileInfo, (uint)Marshal.SizeOf(fileInfo)); #pragma warning restore 618 return(DateTime.FromFileTime(fileInfo.ChangeTime)); } }
public void SetBasicInfo( UInt32 FileAttributes, UInt64 CreationTime, UInt64 LastAccessTime, UInt64 LastWriteTime) { if (0 == FileAttributes) { FileAttributes = (UInt32)System.IO.FileAttributes.Normal; } if (null != Stream) { FILE_BASIC_INFO Info = default(FILE_BASIC_INFO); if (unchecked ((UInt32)(-1)) != FileAttributes) { Info.FileAttributes = FileAttributes; } if (0 != CreationTime) { Info.CreationTime = CreationTime; } if (0 != LastAccessTime) { Info.LastAccessTime = LastAccessTime; } if (0 != LastWriteTime) { Info.LastWriteTime = LastWriteTime; } if (!SetFileInformationByHandle(Stream.SafeFileHandle.DangerousGetHandle(), 0 /*FileBasicInfo*/, ref Info, (UInt32)Marshal.SizeOf(Info))) { ThrowIoExceptionWithWin32(Marshal.GetLastWin32Error()); } } else { if (unchecked ((UInt32)(-1)) != FileAttributes) { DirInfo.Attributes = (System.IO.FileAttributes)FileAttributes; } if (0 != CreationTime) { DirInfo.CreationTimeUtc = DateTime.FromFileTimeUtc((Int64)CreationTime); } if (0 != LastAccessTime) { DirInfo.LastAccessTimeUtc = DateTime.FromFileTimeUtc((Int64)LastAccessTime); } if (0 != LastWriteTime) { DirInfo.LastWriteTimeUtc = DateTime.FromFileTimeUtc((Int64)LastWriteTime); } } }
public static bool SetFileInformationByHandle(SafeFileHandle hFile, FILE_BASIC_INFO fileInformation) { var fih = new FileInformation { FILE_BASIC_INFO = fileInformation }; return(SetFileInformationByHandle( hFile, FILE_INFO_BY_HANDLE_CLASS.FileBasicInfo, ref fih, Marshal.SizeOf(fileInformation))); }
// Default values indicate "no change". Use defaults so that we don't force callsites to be aware of the default values internal unsafe static bool SetFileTime( SafeFileHandle hFile, long creationTime = -1, long lastAccessTime = -1, long lastWriteTime = -1, long changeTime = -1, uint fileAttributes = 0) { FILE_BASIC_INFO basicInfo = new FILE_BASIC_INFO() { CreationTime = creationTime, LastAccessTime = lastAccessTime, LastWriteTime = lastWriteTime, ChangeTime = changeTime, FileAttributes = fileAttributes }; return(SetFileInformationByHandle(hFile, FILE_INFO_BY_HANDLE_CLASS.FileBasicInfo, ref basicInfo, (uint)Marshal.SizeOf <FILE_BASIC_INFO>())); }
// Default values indicate "no change". Use defaults so that we don't force callsites to be aware of the default values internal unsafe static bool SetFileTime( SafeFileHandle hFile, long creationTime = -1, long lastAccessTime = -1, long lastWriteTime = -1, long changeTime = -1, uint fileAttributes = 0) { FILE_BASIC_INFO basicInfo = new FILE_BASIC_INFO() { CreationTime = creationTime, LastAccessTime = lastAccessTime, LastWriteTime = lastWriteTime, ChangeTime = changeTime, FileAttributes = fileAttributes }; return SetFileInformationByHandle(hFile, FILE_INFO_BY_HANDLE_CLASS.FileBasicInfo, ref basicInfo, (uint)Marshal.SizeOf<FILE_BASIC_INFO>()); }
public static void SetFileInformationToFileStream( FileStream stream, FileAttributes fileAttributes, DateTime?creationTime, DateTime?lastAccessTime, DateTime?lastWriteTime) { if (0 == fileAttributes) { fileAttributes = System.IO.FileAttributes.Normal; } FILE_BASIC_INFO info = default(FILE_BASIC_INFO); if (unchecked ((UInt32)(-1)) != (UInt32)fileAttributes) { info.FileAttributes = (UInt32)fileAttributes; } if (creationTime.HasValue) { info.CreationTime = (ulong)creationTime.Value.ToFileTimeUtc(); } if (lastAccessTime.HasValue) { info.LastAccessTime = (ulong)lastAccessTime.Value.ToFileTimeUtc(); } if (lastWriteTime.HasValue) { info.LastWriteTime = (ulong)lastWriteTime.Value.ToFileTimeUtc(); } if (!SetFileInformationByHandle(stream.SafeFileHandle.DangerousGetHandle(), 0 /*FileBasicInfo*/, ref info, (UInt32)Marshal.SizeOf(info))) { throw Marshal.GetExceptionForHR(Marshal.GetLastWin32Error()); } }
public static void SetBasicInfoToFileStream( FileStream stream, UInt32 fileAttributes, UInt64 creationTime, UInt64 lastAccessTime, UInt64 lastWriteTime) { if (0 == fileAttributes) { fileAttributes = (UInt32)System.IO.FileAttributes.Normal; } FILE_BASIC_INFO Info = default(FILE_BASIC_INFO); if (unchecked ((UInt32)(-1)) != fileAttributes) { Info.FileAttributes = fileAttributes; } if (0 != creationTime) { Info.CreationTime = creationTime; } if (0 != lastAccessTime) { Info.LastAccessTime = lastAccessTime; } if (0 != lastWriteTime) { Info.LastWriteTime = lastWriteTime; } if (!SetFileInformationByHandle(stream.SafeFileHandle.DangerousGetHandle(), 0 /*FileBasicInfo*/, ref Info, (UInt32)Marshal.SizeOf(Info))) { Utils.ThrowIoExceptionWithWin32(Marshal.GetLastWin32Error()); } }
internal static extern bool SetFileInformationByHandle(SafeFileHandle hFile, FILE_INFO_BY_HANDLE_CLASS FileInformationClass, ref FILE_BASIC_INFO lpFileInformation, uint dwBufferSize);
private static extern Boolean SetFileInformationByHandle( IntPtr hFile, Int32 FileInformationClass, ref FILE_BASIC_INFO lpFileInformation, UInt32 dwBufferSize);
static extern bool GetFileInformationByHandleEx(IntPtr hFile, int infoClass, out FILE_BASIC_INFO fileInfo, uint dwBufferSize);
public static extern bool GetFileInformationByHandleEx( SafeFileHandle hFile, FILE_INFO_BY_HANDLE_CLASS infoClass, out FILE_BASIC_INFO dirInfo, uint dwBufferSize);