diff options
author | Stephen D. Huston <shuston@apache.org> | 2009-02-27 21:29:50 +0000 |
---|---|---|
committer | Stephen D. Huston <shuston@apache.org> | 2009-02-27 21:29:50 +0000 |
commit | 03f8b9d26654cacbb845498148659d291e209a1e (patch) | |
tree | b92b33564612537c90025c3263e714f27f053d64 | |
parent | a2ff4d04c0958a19859f7a621d641aa10e2bdea7 (diff) | |
download | qpid-python-03f8b9d26654cacbb845498148659d291e209a1e.tar.gz |
Merge in new SystemInfo methods from svn trunk r747577
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/qpid-1673@748709 13f79535-47bb-0310-9956-ffa450edef68
-rwxr-xr-x | qpid/cpp/src/qpid/sys/windows/SystemInfo.cpp | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/qpid/cpp/src/qpid/sys/windows/SystemInfo.cpp b/qpid/cpp/src/qpid/sys/windows/SystemInfo.cpp index dc5c56b6fb..3e2fcb1517 100755 --- a/qpid/cpp/src/qpid/sys/windows/SystemInfo.cpp +++ b/qpid/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 |