可以写个程序统计每个线程占用的时间,根据内核对象指针得到当前进程列表,
遍历进程对象中的线程列表里面的每一个线程对象,
Thread data structures里面有两个成员,
DWORD dwUTime; // ??: user time
DWORD dwKTime; // ??: kernel time
这是CE6下面的,CE5下面好像是dwKernTime和dwUserTime,分别记录线程在Kernel和User模式下消耗的时间,用这些信息可以统计每个进程消耗的时间和其下每个线程分别消耗的时间,重点分析时间占用最多的几个线程。
线程结构里面有个成员
DWORD dwStartAddr; /* 5c: thread PC at creation, used to get thread name */
即线程的入口地址,然后枚举进程内所有已加载模块,最后判断线程入口地址落在哪个加载模块范围内。