Revert "Added threads suspend, Edited suspendWcmSvc() func for Windows. Based on old SuspendProcess func."

This reverts commit 999087337e.
This commit is contained in:
pokamest 2021-06-16 20:09:49 +03:00
parent db543b62ba
commit e2f8f77adf
2 changed files with 2 additions and 57 deletions

View file

@ -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;
}

View file

@ -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: