From e2f8f77adfd6ee4e31c0770f6ef37c12f54abb5d Mon Sep 17 00:00:00 2001 From: pokamest Date: Wed, 16 Jun 2021 20:09:49 +0300 Subject: [PATCH] Revert "Added threads suspend, Edited suspendWcmSvc() func for Windows. Based on old SuspendProcess func." This reverts commit 999087337e19d5567ce65705948a2b400f65973b. --- service/server/router_win.cpp | 57 ++--------------------------------- service/server/router_win.h | 2 -- 2 files changed, 2 insertions(+), 57 deletions(-) diff --git a/service/server/router_win.cpp b/service/server/router_win.cpp index 0d3c1d35..d242821e 100644 --- a/service/server/router_win.cpp +++ b/service/server/router_win.cpp @@ -297,7 +297,7 @@ void RouterWin::suspendWcmSvc(bool suspend) DWORD wcmSvcPid = GetServicePid(std::wstring(L"wcmSvc").c_str()); //ListProcessThreads(wcmSvcPid); - BOOL ok = StopProcessThreads(suspend, wcmSvcPid); + BOOL ok = SuspendProcess(suspend, wcmSvcPid); if (ok) { m_suspended = suspend; } @@ -305,6 +305,7 @@ void RouterWin::suspendWcmSvc(bool suspend) qDebug() << "RouterWin::routeAddList" << (ok ? "succeed to" : "failed to") << (suspend ? "suspend wcmSvc" : "resume wcmSvc"); + } DWORD RouterWin::GetServicePid(LPCWSTR serviceName) @@ -372,50 +373,6 @@ BOOL RouterWin::ListProcessThreads( DWORD dwOwnerPID ) return( TRUE ); } -BOOL RouterWin::StopProcessThreads(BOOL fSuspend, DWORD dwOwnerPID ) -{ - HANDLE hThreadSnap = INVALID_HANDLE_VALUE; - THREADENTRY32 te32; - - //THREAD_INFORMATION_CLASS need check - - // Take a snapshot of current process - hThreadSnap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, GetCurrentProcessId() ); - if( hThreadSnap == INVALID_HANDLE_VALUE ) - return( FALSE ); - - // Fill in the size of the structure before using it. - te32.dwSize = sizeof(THREADENTRY32); - - // Retrieve information about the first thread, - // and exit if unsuccessful - if( !Thread32First( hThreadSnap, &te32 ) ) - { - CloseHandle( hThreadSnap ); // clean the snapshot object - return( FALSE ); - } - - do - { - if( te32.th32OwnerProcessID == dwOwnerPID ) - { - HANDLE threadHandle = OpenThread (PROCESS_QUERY_INFORMATION, FALSE, te32.th32ThreadID); - qDebug() << "Owner: "<< te32.th32OwnerProcessID << "OpenThread " - << te32.th32ThreadID << " GetLastError: " << GetLastError() << " handle: " << threadHandle; - ULONG64 cycles = 0; - BOOL ok = QueryThreadCycleTime(threadHandle, &cycles); - qDebug() << "QueryThreadCycleTime GetLastError:" << ok << GetLastError(); - - qDebug() << "Thread cycles:" << te32.th32ThreadID << cycles; - SuspendThread(fSuspend, te32.th32ThreadID); - CloseHandle(threadHandle); - } - } while( Thread32Next(hThreadSnap, &te32 ) ); - - CloseHandle( hThreadSnap ); - return( TRUE ); -} - BOOL RouterWin::EnableDebugPrivilege(VOID) { HANDLE hToken = NULL; @@ -465,13 +422,3 @@ BOOL RouterWin::SuspendProcess(BOOL fSuspend, DWORD dwProcessId) return ok; } -BOOL RouterWin::SuspendThread(BOOL fSuspend, DWORD dwThreadId) -{ - HANDLE pHandle = OpenThread(PROCESS_SUSPEND_RESUME, FALSE, dwThreadId); - if (pHandle == NULL) return false; - - bool ok = ((fSuspend ? NtSuspendProcess : NtResumeProcess)(pHandle) == STATUS_SUCCESS); - CloseHandle(pHandle); - - return ok; -} diff --git a/service/server/router_win.h b/service/server/router_win.h index 2a3b48f3..7b89fe40 100644 --- a/service/server/router_win.h +++ b/service/server/router_win.h @@ -49,11 +49,9 @@ private: DWORD GetServicePid(LPCWSTR serviceName); BOOL ListProcessThreads(DWORD dwOwnerPID); - BOOL StopProcessThreads(BOOL fSuspend, DWORD dwOwnerPID); BOOL EnableDebugPrivilege(); BOOL InitNtFunctions(); BOOL SuspendProcess(BOOL fSuspend, DWORD dwProcessId); - BOOL SuspendThread(BOOL fSuspend, DWORD dwThreadId); private: