c ++ - Sådan får du en liste over trådhåndtag fra en win32-proces?

Indlæg af Hanne Mølgaard Plasc

Problem



Er det muligt at få en liste over trådhåndtag til enhver tid for den aktuelle proces på win32 (i c ++)?

Bedste reference


Du finder denne artikel til hjælp. Det giver koden for trådtælling med de små nuancer, der følger med værktøjshjælpebiblioteket. [3] [4]


For nemheds skyld (løftet fra artiklen):


#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
",
             te.th32OwnerProcessID, te.th32ThreadID);
     }
   te.dwSize = sizeof(te);
   } while (Thread32Next(h, &te));
  }
  CloseHandle(h);
 }
 return 0;
}

Andre referencer 1



  • Win32: Hvordan opregner jeg alle tråde, der tilhører en proces i C ++?

  • [6] OpenThread for at konvertere identifikatorer til håndtag