Enumerazione di thread in Windows

Come posso enumerare tutti i thread in un processo dato un HANDLE al processo (o un ID di processo)? Sono interessato a fare questo in modo da poter ulteriormente eseguire un EnumThreadWindows su ogni thread.

Enumerazione di thread in un processo in MSDN Blog.

Snippet di codice da lì:

#include  #include  #include  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; } 

La libreria ToolHelp fornisce un’API per i processi di snapshotting e l’enumerazione dei loro thread (tra le altre proprietà). Vedi MSDN per i dettagli .