Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetGetSystemTimeAsFileTimeFnPtr()

static unsafe delegate *unmanaged[SuppressGCTransition]< ulong *, void > System.DateTime.GetGetSystemTimeAsFileTimeFnPtr ( )
inlinestaticprivate

Definition at line 1562 of file DateTime.cs.

1563 {
1564 IntPtr handle = Interop.Kernel32.LoadLibraryEx("kernel32.dll", IntPtr.Zero, 2048);
1565 IntPtr intPtr = NativeLibrary.GetExport(handle, "GetSystemTimeAsFileTime");
1566 if (NativeLibrary.TryGetExport(handle, "GetSystemTimePreciseAsFileTime", out var address))
1567 {
1568 System.Runtime.CompilerServices.Unsafe.SkipInit(out long num);
1570 for (int i = 0; i < 10; i++)
1571 {
1572 ((delegate* unmanaged[SuppressGCTransition]<long*, void>)(void*)intPtr)(&num);
1573 ((delegate* unmanaged[SuppressGCTransition]<long*, void>)(void*)address)(&num2);
1574 if (Math.Abs(num2 - num) <= 1000000)
1575 {
1576 intPtr = address;
1577 break;
1578 }
1579 }
1580 }
1581 return (delegate* unmanaged[SuppressGCTransition]<ulong*, void>)(void*)intPtr;
1582 }
static IntPtr LoadLibraryEx(string libFilename, IntPtr reserved, int flags)
static IntPtr GetExport(IntPtr handle, string name)
static bool TryGetExport(IntPtr handle, string name, out IntPtr address)

References System.Math.Abs(), System.Runtime.Serialization.Dictionary, System.Runtime.InteropServices.NativeLibrary.GetExport(), System.handle, Interop.Kernel32.LoadLibraryEx(), System.Runtime.InteropServices.NativeLibrary.TryGetExport(), and System.IntPtr.Zero.