'How to query the thread count of a process using the regular Windows C/C++ APIs
Is there a way to query the number of threads that are currently running for a specific process using the standard Windows C/C++ APIs?
I already prowled through the MSDN docs but the only thing that comes near is
BOOL WINAPI GetProcessHandleCount(
__in HANDLE hProcess,
__inout PDWORD pdwHandleCount
);
which queries the number of system handles currently in use by a given process, which will include thread handles, but will not be limited to them.
Any insights would be greatly appreciated.
Thanks in advance.
Bjoern
Solution 1:[1]
See this example: http://msdn.microsoft.com/en-us/library/ms686852(v=VS.85).aspx
Solution 2:[2]
Just to be complete here is some sample code based on the code sample, which can be found under the link stated in the comments section of the accepted answer:
#if defined(_WIN32)
#include <windows.h>
#include <tlhelp32.h>
/**
Returns the thread count of the current process or -1 in case of failure.
*/
int GetCurrentThreadCount()
{
// first determine the id of the current process
DWORD const id = GetCurrentProcessId();
// then get a process list snapshot.
HANDLE const snapshot = CreateToolhelp32Snapshot( TH32CS_SNAPALL, 0 );
// initialize the process entry structure.
PROCESSENTRY32 entry = { 0 };
entry.dwSize = sizeof( entry );
// get the current process info.
BOOL ret = true;
ret = Process32First( snapshot, &entry );
while( ret && entry.th32ProcessID != id ) {
ret = Process32Next( snapshot, &entry );
}
CloseHandle( snapshot );
return ret
? entry.cntThreads
: -1;
}
#endif // _WIN32
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Ivo |
| Solution 2 | Don Reba |
