2010-09-20 16 views
7

C'è un modo per interrogare il numero di thread attualmente in esecuzione per un processo specifico utilizzando le API standard di Windows C/C++?Come interrogare il conteggio thread di un processo utilizzando le normali API C/C++ di Windows

ho già aggirava attraverso la documentazione MSDN, ma l'unica cosa che si avvicina è

BOOL WINAPI GetProcessHandleCount(
    __in  HANDLE hProcess, 
    __inout PDWORD pdwHandleCount 
); 

che interroga il numero di sistema gestisce attualmente in uso da un dato processo, che includerà handle del thread, ma non lo farò essere limitato a loro.

Eventuali approfondimenti sarebbero molto apprezzati.

Grazie in anticipo.

Bjoern

risposta

5
+2

Grazie per il suggerimento, mi ha inviato nella giusta direzione. In realtà questo campione corrispondeva ancora di più a ciò di cui avevo bisogno: http://msdn.microsoft.com/en-us/library/ms686701(v=VS.85).aspx – Bjoern

+0

Felice di aiutare, gentile a inviare anche una risposta. – Ivo

5

Giusto per essere completa Ecco qualche esempio di codice in base al codice di esempio, che si trova sotto il link indicato nella sezione commenti della risposta accettata:

#if defined(_WIN32) 

#include <windows.h> 
#include <tlhelp32.h> 

/** 
Returns the thread copunt 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 first 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 
Problemi correlati