内核线程结构--KTHREAD

WRK中KTHREADtypedef struct _KTHREAD { // // The dispatcher header and mutant listhead are fairly infrequently // referenced. // DISPATCHER_HEADER Header;//线程对象也是个分发器对象。 LIST
摘要由CSDN通过智能技术生成
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对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值