Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than Structures, prefix the name with the module name and a period.
FileTime (Structures)
.
C# Definition:
[StructLayout(LayoutKind.Sequential)]
public struct FILETIME {
public uint DateTimeLow;
public uint DateTimeHigh;
}
VB.Net Definition:
<StructLayout(LayoutKind.Sequential)> _
Public Structure FILETIME
Public dwLowDateTime As UInteger
Public dwHighDateTime As UInteger
Public ReadOnly Property Value() As ULong
Get
Return CType(dwHighDateTime << 32, ULong) + dwLowDateTime
End Get
End Property
End Structure
Actually, this is NOT working. The only solution I've found so far is using the API Kernel32.dll function FileTimeToSystemTime, then transforming from that into a regular DateTime.
The reason it was not working, is the + operator between "((long) high) << 32" and "low". I changed this to the | operator.
* Note that System.Runtime.InteropServices.FILETIME is now obsolete. Changed to use System.Runtime.InteropServices.ComTypes.FILETIME instead.
This works for me in vb.net:
Private Shared Function ConvertFileTimeToDateTime(input As FILETIME) As DateTime
Dim longTime As ULong = (CType(input.dwHighDateTime, ULong) << 32) Or input.dwLowDateTime
Return DateTime.FromFileTime(longTime)
End Function
-
Completely without any error-prone bit shift operations:
C#
[StructLayout(LayoutKind.Sequential)]
struct FILETIME {
private long timestamp;
public DateTime Local {
get { return DateTime.FromFileTime(this.timestamp); }
set { this.timestamp = value.ToFileTime(); }
}
public DateTime Utc {
get { return DateTime.FromFileTimeUtc(this.timestamp); }
set { this.timestamp = value.ToFileTimeUtc(); }
}
}