#include "array.h"
#include "eepolicy.h"
+#ifndef FEATURE_PAL
typedef void(WINAPI *pfnGetSystemTimeAsFileTime)(LPFILETIME lpSystemTimeAsFileTime);
extern pfnGetSystemTimeAsFileTime g_pfnGetSystemTimeAsFileTime;
{
pfnGetSystemTimeAsFileTime func = NULL;
-#ifndef FEATURE_PAL
HMODULE hKernel32 = WszLoadLibrary(W("kernel32.dll"));
if (hKernel32 != NULL)
{
}
}
if (func == NULL)
-#endif
{
func = &::GetSystemTimeAsFileTime;
}
- g_pfnGetSystemTimeAsFileTime = func;
- func(lpSystemTimeAsFileTime);
+ InterlockedCompareExchangeT(&g_pfnGetSystemTimeAsFileTime, func, &InitializeGetSystemTimeAsFileTime);
+
+ g_pfnGetSystemTimeAsFileTime(lpSystemTimeAsFileTime);
}
pfnGetSystemTimeAsFileTime g_pfnGetSystemTimeAsFileTime = &InitializeGetSystemTimeAsFileTime;
+#endif // FEATURE_PAL
FCIMPL0(INT64, SystemNative::__GetSystemTimeAsFileTime)
{
FCALL_CONTRACT;
INT64 timestamp;
+#ifndef FEATURE_PAL
g_pfnGetSystemTimeAsFileTime((FILETIME*)×tamp);
+#else
+ GetSystemTimeAsFileTime((FILETIME*)×tamp);
+#endif
#if BIGENDIAN
timestamp = (INT64)(((UINT64)timestamp >> 32) | ((UINT64)timestamp << 32));