aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/winutils.cpp
diff options
context:
space:
mode:
authorOliver Wolff <oliver.wolff@qt.io>2018-02-05 12:15:57 +0100
committerOliver Wolff <oliver.wolff@qt.io>2018-02-06 07:30:18 +0000
commit74d718c001a81dcd32a11aebc8806618aa235267 (patch)
tree2408d5cab7b216513836696e7a32715eebbf982d /src/libs/utils/winutils.cpp
parent88a889d45a05dcd78e5aa1bec9f2e4aca20252bf (diff)
Fix MinGW valgrind build
QueryFullProcessImageName is only available on Windows >= Vista. iSetting _WIN32_WINNT fixes availability on MinGW and moving the functionality to winutils avoids code duplication. Change-Id: I0ff1a12a1c092b1ad9cde75b636b52c5b959ce7d Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/libs/utils/winutils.cpp')
-rw-r--r--src/libs/utils/winutils.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/libs/utils/winutils.cpp b/src/libs/utils/winutils.cpp
index d41cb693cda..140d94977d6 100644
--- a/src/libs/utils/winutils.cpp
+++ b/src/libs/utils/winutils.cpp
@@ -26,10 +26,10 @@
#include "winutils.h"
#include "qtcassert.h"
-// Enable WinAPI Windows XP and later
+// Enable WinAPI Windows Vista and later
#ifdef Q_OS_WIN
#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0501
+#define _WIN32_WINNT 0x0600 // Needed for QueryFullProcessImageName
#include <windows.h>
#endif
@@ -168,6 +168,23 @@ QTCREATOR_UTILS_EXPORT bool is64BitWindowsBinary(const QString &binaryIn)
#endif
}
+QTCREATOR_UTILS_EXPORT QString imageName(quint32 processId)
+{
+ QString result;
+#ifdef Q_OS_WIN
+ HANDLE handle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, processId);
+ if (handle == NULL)
+ return result;
+
+ wchar_t path[MAX_PATH];
+ DWORD pathLen = MAX_PATH;
+ if (QueryFullProcessImageName(handle, 0, path, &pathLen))
+ result = QString::fromUtf16(reinterpret_cast<const ushort*>(path));
+ CloseHandle(handle);
+#endif
+ return result;
+}
+
WindowsCrashDialogBlocker::WindowsCrashDialogBlocker()
#ifdef Q_OS_WIN
: silenceErrorMode(SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS),