This repository was archived by the owner on Jan 23, 2023. It is now read-only.
File tree 1 file changed +25
-2
lines changed
src/classlibnative/bcltype
1 file changed +25
-2
lines changed Original file line number Diff line number Diff line change @@ -41,14 +41,37 @@ typedef BOOL (*pfnGetPhoneVersion)(LPOSVERSIONINFO lpVersionInformation);
41
41
pfnGetPhoneVersion g_pfnGetPhoneVersion = NULL ;
42
42
#endif
43
43
44
+ typedef void (WINAPI *pfnGetSystemTimeAsFileTime)(LPFILETIME lpSystemTimeAsFileTime);
45
+ extern pfnGetSystemTimeAsFileTime g_pfnGetSystemTimeAsFileTime;
46
+
47
+ void WINAPI InitializeGetSystemTimeAsFileTime (LPFILETIME lpSystemTimeAsFileTime)
48
+ {
49
+ pfnGetSystemTimeAsFileTime func = NULL ;
50
+
51
+ #ifndef FEATURE_PAL
52
+ HMODULE hKernel32 = WszLoadLibrary (W (" kernel32.dll" ));
53
+ if (hKernel32 != NULL )
54
+ {
55
+ func = (pfnGetSystemTimeAsFileTime)GetProcAddress (hKernel32, " GetSystemTimePreciseAsFileTime" );
56
+ }
57
+ if (func == NULL )
58
+ #endif
59
+ {
60
+ func = &::GetSystemTimeAsFileTime;
61
+ }
62
+
63
+ g_pfnGetSystemTimeAsFileTime = func;
64
+ func (lpSystemTimeAsFileTime);
65
+ }
66
+
67
+ pfnGetSystemTimeAsFileTime g_pfnGetSystemTimeAsFileTime = &InitializeGetSystemTimeAsFileTime;
44
68
45
69
FCIMPL0 (INT64, SystemNative::__GetSystemTimeAsFileTime)
46
70
{
47
71
FCALL_CONTRACT;
48
72
49
73
INT64 timestamp;
50
-
51
- ::GetSystemTimeAsFileTime ((FILETIME*)×tamp);
74
+ g_pfnGetSystemTimeAsFileTime ((FILETIME*)×tamp);
52
75
53
76
#if BIGENDIAN
54
77
timestamp = (INT64)(((UINT64)timestamp >> 32 ) | ((UINT64)timestamp << 32 ));
You can’t perform that action at this time.
0 commit comments