diff options
author | Stephen D. Huston <shuston@apache.org> | 2009-02-24 22:14:51 +0000 |
---|---|---|
committer | Stephen D. Huston <shuston@apache.org> | 2009-02-24 22:14:51 +0000 |
commit | 74fad234873bfb83831ee221ca38a45e8eb94cc8 (patch) | |
tree | 2150fa0e6bd240be36f92c603406f1bf973f18ba /cpp/src | |
parent | 5e467832952670cc6eebeca2c4f0becbd6f8e0e9 (diff) | |
download | qpid-python-74fad234873bfb83831ee221ca38a45e8eb94cc8.tar.gz |
Implement process id and name methods for Windows
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@747577 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rwxr-xr-x | cpp/src/qpid/sys/windows/SystemInfo.cpp | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/cpp/src/qpid/sys/windows/SystemInfo.cpp b/cpp/src/qpid/sys/windows/SystemInfo.cpp index dc5c56b6fb..3e2fcb1517 100755 --- a/cpp/src/qpid/sys/windows/SystemInfo.cpp +++ b/cpp/src/qpid/sys/windows/SystemInfo.cpp @@ -29,6 +29,7 @@ #include <winsock2.h> #include <ws2tcpip.h> #include <windows.h> +#include <tlhelp32.h> #ifndef HOST_NAME_MAX # define HOST_NAME_MAX 256 @@ -155,25 +156,43 @@ void SystemInfo::getSystemId (std::string &osName, machine = "unknown"; break; } +} uint32_t SystemInfo::getProcessId() { - // TODO: Provide Windows implementation - return 0; + return static_cast<uint32_t>(::GetCurrentProcessId()); } uint32_t SystemInfo::getParentProcessId() { - // TODO: Provide Windows implementation - return 0; + // Only want info for the current process, so ask for something specific. + // The module info won't be used here but it keeps the snapshot limited to + // the current process so a search through all processes is not needed. + HANDLE snap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, 0); + if (snap == INVALID_HANDLE_VALUE) + return 0; + PROCESSENTRY32 entry; + entry.dwSize = sizeof(entry); + if (!Process32First(snap, &entry)) + entry.th32ParentProcessID = 0; + CloseHandle(snap); + return static_cast<uint32_t>(entry.th32ParentProcessID); } std::string SystemInfo::getProcessName() { - // TODO: Provide Windows implementation - return std::string(); -} - + // Only want info for the current process, so ask for something specific. + // The module info won't be used here but it keeps the snapshot limited to + // the current process so a search through all processes is not needed. + HANDLE snap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, 0); + if (snap == INVALID_HANDLE_VALUE) + return 0; + PROCESSENTRY32 entry; + entry.dwSize = sizeof(entry); + if (!Process32First(snap, &entry)) + entry.szExeFile[0] = '\0'; + CloseHandle(snap); + return std::string(entry.szExeFile); } }} // namespace qpid::sys |