diff options
author | Oliver Wolff <oliver.wolff@qt.io> | 2018-02-05 12:15:57 +0100 |
---|---|---|
committer | Oliver Wolff <oliver.wolff@qt.io> | 2018-02-06 07:30:18 +0000 |
commit | 74d718c001a81dcd32a11aebc8806618aa235267 (patch) | |
tree | 2408d5cab7b216513836696e7a32715eebbf982d /src/libs/utils/winutils.cpp | |
parent | 88a889d45a05dcd78e5aa1bec9f2e4aca20252bf (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.cpp | 21 |
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), |