我使用ZwQuerySystemInformation()
来枚举所有流程,并且可以获取有关每个流程的所有信息,我也可以获得SYSTEM_THREAD_INFORMATION
。
typedef struct _SYSTEM_THREAD_INFORMATION
{
LARGE_INTEGER KernelTime;
LARGE_INTEGER UserTime;
LARGE_INTEGER CreateTime;
DWORD WaitTime;
PVOID StartAddress;
CLIENT_ID ClientId;
KPRIORITY Priority;
LONG BasePriority;
DWORD ContextSwitches;
DWORD ThreadState;
DWORD WaitReason;
} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
但是这个结构不包含线程ID,为什么呢?我怎么能得到这个id?
还有一个问题:我得到SYSTEM_PROCESS_INFORMATION
结构,它包含指向进程中所有线程的指针:SYSTEM_THREAD_INFORMATION Threads[1];
但是我怎么知道这个进程中有多少个线程?
PS:我在内核模式下工作
答案 0 :(得分:2)
嗯,如果你仔细查看 SYSTEM_THREAD_INFORMATION 的 CLIENT_ID 成员,它就会包含主题ID。
您是否看到 SYSTEM_PROCESS_INFORMATION 的第二个成员?
如果是,则将其命名为 NumberOfThreads ,这样您就可以猜出它的意思是什么,万岁 - >线程数 - > SYSTEM_THREAD_INFORMATION 结构的数量。