WRK中KTHREAD
typedef struct _KTHREAD {
//
// The dispatcher header and mutant listhead are fairly infrequently
// referenced.
//
DISPATCHER_HEADER Header;//线程对象也是个分发器对象。
LIST_ENTRY MutantListHead;//指向一个链表头,该链表中包含了所有属于该线程的MUTEX对象
//
// The following fields are referenced during context switches and wait
// operatings. They have been carefully laid out to get the best cache
// hit ratios.
//
PVOID InitialStack;//原始栈位置
PVOID StackLimit;//记录栈的低地址
PVOID KernelStack;//记录了真正内核调用栈的开始位置
KSPIN_LOCK ThreadLock;//自旋锁,用于保护线程数据成员。
union {
KAPC_STATE ApcState;//指定了一个线程的APC信息。
struct {
UCHAR ApcStateFill[KAPC_STATE_ACTUAL_LENGTH];
BOOLEAN ApcQueueable;
volatile UCHAR NextProcessor;
volatile UCHAR DeferredProcessor;
UCHAR AdjustReason;
SCHAR AdjustIncrement;
};
};
KSPIN_LOCK ApcQueueLock;//自旋锁,用于保护APC队列的操作
#if !defined(_AMD64_)
ULONG ContextSwitches;//记录了该线程进行了多少次环境切换。
volatile UCHAR State;//该线程当前的状态。
UCHAR NpxState;//反应了浮点处处理器的状态
KIRQL WaitIrql;//和WaitNext一起使用,当WaitNext为True时,WaitIrql记录了原先的IRQL值
KPROCESSOR_MODE WaitMode;//记录了当线程等待时的处理器模式
#endif
LONG_PTR WaitStatus;//记录了等待的结果状态。
union {
PKWAIT_BLOCK WaitBlockList;//指向一个以KWAIT_BLOCK为元素的链表,
//其中的KAIT_BLOCK对象
内核线程结构--KTHREAD
最新推荐文章于 2022-07-27 05:42:55 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)