diff --git a/src/lib/platform/MSWindowsSession.cpp b/src/lib/platform/MSWindowsSession.cpp index 0e453092..b9001a8d 100644 --- a/src/lib/platform/MSWindowsSession.cpp +++ b/src/lib/platform/MSWindowsSession.cpp @@ -21,7 +21,6 @@ #include "synergy/XSynergy.h" #include "base/Log.h" -#include #include CMSWindowsSession::CMSWindowsSession() : @@ -72,6 +71,8 @@ CMSWindowsSession::isProcessInSession(const char* name, PHANDLE process = NULL) // if we can not acquire session associated with a specified process, // simply ignore it LOG((CLOG_ERR "could not get session id for process id %i", entry.th32ProcessID)); + gotEntry = nextProcessEntry(snapshot, &entry); + continue; } else { // only pay attention to processes in the active session @@ -89,17 +90,7 @@ CMSWindowsSession::isProcessInSession(const char* name, PHANDLE process = NULL) } // now move on to the next entry (if we're not at the end) - gotEntry = Process32Next(snapshot, &entry); - if (!gotEntry) { - - DWORD err = GetLastError(); - if (err != ERROR_NO_MORE_FILES) { - - // only worry about error if it's not the end of the snapshot - LOG((CLOG_ERR "could not get next process entry")); - throw XArch(new XArchEvalWindows()); - } - } + gotEntry = nextProcessEntry(snapshot, &entry); } std::string nameListJoin; @@ -161,3 +152,22 @@ CMSWindowsSession::updateActiveSession() { m_activeSessionId = WTSGetActiveConsoleSessionId(); } + + +BOOL +CMSWindowsSession::nextProcessEntry(HANDLE snapshot, LPPROCESSENTRY32 entry) +{ + BOOL gotEntry = Process32Next(snapshot, entry); + if (!gotEntry) { + + DWORD err = GetLastError(); + if (err != ERROR_NO_MORE_FILES) { + + // only worry about error if it's not the end of the snapshot + LOG((CLOG_ERR "could not get next process entry")); + throw XArch(new XArchEvalWindows()); + } + } + + return gotEntry; +} diff --git a/src/lib/platform/MSWindowsSession.h b/src/lib/platform/MSWindowsSession.h index c1ba8d9a..d30ce0b4 100644 --- a/src/lib/platform/MSWindowsSession.h +++ b/src/lib/platform/MSWindowsSession.h @@ -19,6 +19,7 @@ #define WIN32_LEAN_AND_MEAN #include +#include class CMSWindowsSession { public: @@ -39,6 +40,9 @@ public: void updateActiveSession(); +private: + BOOL nextProcessEntry(HANDLE snapshot, LPPROCESSENTRY32 entry); + private: DWORD m_activeSessionId; };