我的文件路径很长,因此只能使用SafeFileHandle
.
想要获取创建日期时间。
当尝试获得 Millies 然后转换时,DateTime
它会减少 1600 年。
代码:
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
static extern SafeFileHandle CreateFile(string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile);
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
internal static extern bool GetFileTime(SafeFileHandle hFile, ref long lpCreationTime, ref long lpLastAccessTime, ref long lpLastWriteTime);
void fnc(String file){
var filePath = @"\\?\" + file;
var fileObj = CreateFile(filePath, Constants.SafeFile.GENERIC_READ, 0, IntPtr.Zero, Constants.SafeFile.OPEN_EXISTING, 0, IntPtr.Zero);
long millies = 0, l1 = 0, l2 = 0;
if(GetFileTime(fileObj, ref millies, ref l1, ref l2))
{
DateTime creationTime = new DateTime(millies, DateTimeKind.Local);
上面creationTime
少了1600年。而不是 2019 年,而是 0419。
然后我不得不这样做
DateTime creationTime = new DateTime(millies, DateTimeKind.Local).AddYears(1600);
}
}
以上creationTime
是正确的,因为我添加了 1600 年。
是什么让日期减少了 1600 年?
我做错什么了吗?