日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

Windows进程与线程学习笔记(三)—— KPCR

發(fā)布時(shí)間:2025/3/21 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows进程与线程学习笔记(三)—— KPCR 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Windows進(jìn)程與線(xiàn)程學(xué)習(xí)筆記(三)—— KPCR

    • KPCR
      • +0x000 NtTib : _NT_TIB
      • +0x120 PrcbData : _KPRCB

KPCR

描述:CPU控制區(qū)(Processor Control Region)

  • 當(dāng)線(xiàn)程進(jìn)入0環(huán)時(shí),FS:[0]指向KPCR (3環(huán)時(shí)FS:[0]指向TEB)
  • 每個(gè)CPU都有一個(gè)KPCR結(jié)構(gòu)體(一個(gè)核一個(gè)KPCR)
  • KPCR中存儲(chǔ)了CPU本身要用的一些重要數(shù)據(jù):GDT、IDT以及線(xiàn)程相關(guān)的一些信息
  • 在WinDbg中查看:

    SelfPcr:指向自身,方便尋址

    Prcb:指向拓展結(jié)構(gòu)體PRCB(PrcbData)

    IDT:IDT表基址

    GDT:GDT表基址

    TSS:指針,指向TSS,每個(gè)CPU都有一個(gè)TSS

    Number:CPU編號(hào)(0、1、2、3、4、5…)

    PrcbData:拓展結(jié)構(gòu)體

    +0x000 NtTib : _NT_TIB

    描述:KPCR結(jié)構(gòu)體的成員之一

    在WinDbg中查看

    ExceptionList:異常鏈表

  • 3環(huán)中,ExceptionList存儲(chǔ)著所有的異常處理函數(shù)
  • 0環(huán)中,也有自己的異常處理函數(shù),也存在這個(gè)鏈表里
  • StackBase&StackLimit:當(dāng)前線(xiàn)程棧的基址和大小

    Self:指向_NT_TIB自身,作用是方便定位自身

    +0x120 PrcbData : _KPRCB

    描述:KPCR結(jié)構(gòu)體的成員之一,也是拓展結(jié)構(gòu)體

    在WinDbg中查看

    ntdll!_KPRCB+0x000 MinorVersion : Uint2B+0x002 MajorVersion : Uint2B+0x004 CurrentThread : Ptr32 _KTHREAD+0x008 NextThread : Ptr32 _KTHREAD+0x00c IdleThread : Ptr32 _KTHREAD+0x010 Number : Char+0x011 Reserved : Char+0x012 BuildType : Uint2B+0x014 SetMember : Uint4B+0x018 CpuType : Char+0x019 CpuID : Char+0x01a CpuStep : Uint2B+0x01c ProcessorState : _KPROCESSOR_STATE+0x33c KernelReserved : [16] Uint4B+0x37c HalReserved : [16] Uint4B+0x3bc PrcbPad0 : [92] UChar+0x418 LockQueue : [16] _KSPIN_LOCK_QUEUE+0x498 PrcbPad1 : [8] UChar+0x4a0 NpxThread : Ptr32 _KTHREAD+0x4a4 InterruptCount : Uint4B+0x4a8 KernelTime : Uint4B+0x4ac UserTime : Uint4B+0x4b0 DpcTime : Uint4B+0x4b4 DebugDpcTime : Uint4B+0x4b8 InterruptTime : Uint4B+0x4bc AdjustDpcThreshold : Uint4B+0x4c0 PageColor : Uint4B+0x4c4 SkipTick : Uint4B+0x4c8 MultiThreadSetBusy : UChar+0x4c9 Spare2 : [3] UChar+0x4cc ParentNode : Ptr32 _KNODE+0x4d0 MultiThreadProcessorSet : Uint4B+0x4d4 MultiThreadSetMaster : Ptr32 _KPRCB+0x4d8 ThreadStartCount : [2] Uint4B+0x4e0 CcFastReadNoWait : Uint4B+0x4e4 CcFastReadWait : Uint4B+0x4e8 CcFastReadNotPossible : Uint4B+0x4ec CcCopyReadNoWait : Uint4B+0x4f0 CcCopyReadWait : Uint4B+0x4f4 CcCopyReadNoWaitMiss : Uint4B+0x4f8 KeAlignmentFixupCount : Uint4B+0x4fc KeContextSwitches : Uint4B+0x500 KeDcacheFlushCount : Uint4B+0x504 KeExceptionDispatchCount : Uint4B+0x508 KeFirstLevelTbFills : Uint4B+0x50c KeFloatingEmulationCount : Uint4B+0x510 KeIcacheFlushCount : Uint4B+0x514 KeSecondLevelTbFills : Uint4B+0x518 KeSystemCalls : Uint4B+0x51c SpareCounter0 : [1] Uint4B+0x520 PPLookasideList : [16] _PP_LOOKASIDE_LIST+0x5a0 PPNPagedLookasideList : [32] _PP_LOOKASIDE_LIST+0x6a0 PPPagedLookasideList : [32] _PP_LOOKASIDE_LIST+0x7a0 PacketBarrier : Uint4B+0x7a4 ReverseStall : Uint4B+0x7a8 IpiFrame : Ptr32 Void+0x7ac PrcbPad2 : [52] UChar+0x7e0 CurrentPacket : [3] Ptr32 Void+0x7ec TargetSet : Uint4B+0x7f0 WorkerRoutine : Ptr32 void +0x7f4 IpiFrozen : Uint4B+0x7f8 PrcbPad3 : [40] UChar+0x820 RequestSummary : Uint4B+0x824 SignalDone : Ptr32 _KPRCB+0x828 PrcbPad4 : [56] UChar+0x860 DpcListHead : _LIST_ENTRY+0x868 DpcStack : Ptr32 Void+0x86c DpcCount : Uint4B+0x870 DpcQueueDepth : Uint4B+0x874 DpcRoutineActive : Uint4B+0x878 DpcInterruptRequested : Uint4B+0x87c DpcLastCount : Uint4B+0x880 DpcRequestRate : Uint4B+0x884 MaximumDpcQueueDepth : Uint4B+0x888 MinimumDpcRate : Uint4B+0x88c QuantumEnd : Uint4B+0x890 PrcbPad5 : [16] UChar+0x8a0 DpcLock : Uint4B+0x8a4 PrcbPad6 : [28] UChar+0x8c0 CallDpc : _KDPC+0x8e0 ChainedInterruptList : Ptr32 Void+0x8e4 LookasideIrpFloat : Int4B+0x8e8 SpareFields0 : [6] Uint4B+0x900 VendorString : [13] UChar+0x90d InitialApicId : UChar+0x90e LogicalProcessorsPerPhysicalProcessor : UChar+0x910 MHz : Uint4B+0x914 FeatureBits : Uint4B+0x918 UpdateSignature : _LARGE_INTEGER+0x920 NpxSaveArea : _FX_SAVE_AREA+0xb30 PowerState : _PROCESSOR_POWER_STATE

    CurrentThread:當(dāng)前CPU正在跑哪個(gè)線(xiàn)程

    NextThread:即將切換到的線(xiàn)程是誰(shuí)

    IdleThread:當(dāng)沒(méi)有需要切換的線(xiàn)程時(shí),將要跑的空閑線(xiàn)程

    總結(jié)

    以上是生活随笔為你收集整理的Windows进程与线程学习笔记(三)—— KPCR的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。