Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/windirstat.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'windirstat/stdafx.cpp')
-rw-r--r--windirstat/stdafx.cpp108
1 files changed, 76 insertions, 32 deletions
diff --git a/windirstat/stdafx.cpp b/windirstat/stdafx.cpp
index 3c5e83a..3970128 100644
--- a/windirstat/stdafx.cpp
+++ b/windirstat/stdafx.cpp
@@ -1,32 +1,76 @@
-// stdafx.cpp - source file that includes just the standard includes
-//
-// WinDirStat - Directory Statistics
-// Copyright (C) 2003-2005 Bernhard Seifert
-// Copyright (C) 2004-2017 WinDirStat Team (windirstat.net)
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-
-#include "stdafx.h"
-
-#if !defined(HAVE_WIN7_SDK) || !HAVE_WIN7_SDK
-# if _MSC_VER <= 1500
-# if !defined(_ANSISTRING) || !defined(ANSISTRING)
-# define _ANSISTRING(text) #text
-# define ANSISTRING(text) _ANSISTRING(text)
-# endif
-# pragma message (ANSISTRING(__FILE__) "(" ANSISTRING(__LINE__) ") : warning: You're building a feature-incomplete WinDirStat ('#define HAVE_WIN7_SDK' missing or 0). Refer to https://bitbucket.org/windirstat/windirstat/wiki/Building for details on how to build with this version of Visual Studio.")
-# endif // Visual C/C++ 2008 and below
-#endif // HAVE_WIN7_SDK
+// stdafx.cpp - source file that includes just the standard includes
+//
+// WinDirStat - Directory Statistics
+// Copyright (C) 2003-2005 Bernhard Seifert
+// Copyright (C) 2004-2017 WinDirStat Team (windirstat.net)
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+
+#include "stdafx.h"
+
+#if !defined(HAVE_WIN7_SDK) || !HAVE_WIN7_SDK
+# if _MSC_VER <= 1500
+# if !defined(_ANSISTRING) || !defined(ANSISTRING)
+# define _ANSISTRING(text) #text
+# define ANSISTRING(text) _ANSISTRING(text)
+# endif
+# pragma message (ANSISTRING(__FILE__) "(" ANSISTRING(__LINE__) ") : warning: You're building a feature-incomplete WinDirStat ('#define HAVE_WIN7_SDK' missing or 0). Refer to https://bitbucket.org/windirstat/windirstat/wiki/Building for details on how to build with this version of Visual Studio.")
+# endif // Visual C/C++ 2008 and below
+#endif // HAVE_WIN7_SDK
+
+#if (_WIN32_WINNT < _WIN32_WINNT_VISTA)
+namespace {
+ // Borrowed from: http://terryto-blog.tumblr.com/post/6722591298/gettickcount64-alternatives
+ static ULONGLONG WINAPI CompatibleGetTickCount64_()
+ {
+ static __declspec(thread) ULONGLONG high = 0;
+ static __declspec(thread) ULONG lastLow = 0;
+#pragma warning(suppress: 28159)
+ const ULONG low = GetTickCount();
+ if (lastLow > low)
+ { /* wrapped */
+ high += 0x100000000I64;
+ } /* else... not wrapped */
+ lastLow = low;
+ return high | (ULONGLONG)low;
+ }
+}
+
+typedef ULONGLONG(WINAPI *GetTickCount64_t)(void);
+EXTERN_C GetTickCount64_t _GetTickCount64 = NULL;
+
+void InitGetTickCount64()
+{
+ if (!_GetTickCount64)
+ {
+ static HMODULE hKernel32 = ::GetModuleHandle(_T("kernel32.dll"));
+ if (hKernel32)
+ {
+ GetTickCount64_t pfnGetTickCount64 = (GetTickCount64_t)::GetProcAddress(hKernel32, "GetTickCount64");
+ if (pfnGetTickCount64)
+ {
+ _GetTickCount64 = pfnGetTickCount64;
+ }
+ }
+ }
+ if (!_GetTickCount64)
+ {
+ // Fallback
+ _GetTickCount64 = CompatibleGetTickCount64_;
+ }
+}
+
+#endif /* (_WIN32_WINNT < _WIN32_WINNT_VISTA) */