Reputation: 1959
Is it possible to get a list of thread handles at any given time for the current process on win32 (in c++)?
Upvotes: 5
Views: 12295
Reputation: 24457
You will find this article helpful. It gives the code for thread enumeration with the small nuances that come with using the tool help library.
For convenience (lifted from the article):
#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>
int __cdecl main(int argc, char **argv)
{
HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
if (h != INVALID_HANDLE_VALUE) {
THREADENTRY32 te;
te.dwSize = sizeof(te);
if (Thread32First(h, &te)) {
do {
if (te.dwSize >= FIELD_OFFSET(THREADENTRY32, th32OwnerProcessID) +
sizeof(te.th32OwnerProcessID)) {
printf("Process 0x%04x Thread 0x%04x\n",
te.th32OwnerProcessID, te.th32ThreadID);
}
te.dwSize = sizeof(te);
} while (Thread32Next(h, &te));
}
CloseHandle(h);
}
return 0;
}
Upvotes: 11
Reputation: 69706
OpenThread
to convert identifiers to handlesUpvotes: 4