Windows 如何在内核中检索线程的CPU时间?

Windows 如何在内核中检索线程的CPU时间?,windows,windows-kernel,Windows,Windows Kernel,从我的传统驱动程序中,我调用PSCreateSystemThreadAPI来创建几个线程。 由于此调用是从内核内部进行的,因此这些新创建的线程将在系统进程的上下文中运行 我的问题是这些线程的句柄,是否有任何API可以用来获取它们的CPU时间?我对线程实际执行某些操作的纯CPU时间感兴趣(类似于我们通过调用GetProcessTimes获得的kerneltime)。我知道有一个叫做GetThreadTimes的API,但那是从用户模式,我希望CPU时间在内核模式内 谢谢没有文档化的API来获取内核

从我的传统驱动程序中,我调用PSCreateSystemThreadAPI来创建几个线程。 由于此调用是从内核内部进行的,因此这些新创建的线程将在系统进程的上下文中运行

我的问题是这些线程的句柄,是否有任何API可以用来获取它们的CPU时间?我对线程实际执行某些操作的纯CPU时间感兴趣(类似于我们通过调用GetProcessTimes获得的kerneltime)。我知道有一个叫做GetThreadTimes的API,但那是从用户模式,我希望CPU时间在内核模式内


谢谢

没有文档化的API来获取内核中线程的CPU时间(因为我知道)。但是您可以访问
KTHREAD
结构的字段:
UserTime
KernelTime
。这种方法的问题主要是,
KTHREAD
没有正式的文档,并且可能随操作系统版本的不同而不同。

用户模式
GetThreadTimes
API实际上只调用
NtQueryInformationThread

您也可以这样做:

KERNEL\u USER\u次;
ZwQueryInformationThread(hThread,ThreadTimes,×,sizeof(times),NULL);
ThreadTimes
KERNEL\u USER\u TIMES
都在WDK的ntddk.h头中定义