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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

KPROCESS 结构体属性介绍

發(fā)布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 KPROCESS 结构体属性介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
typedef struct _KPROCESS {//// The dispatch header and profile listhead are fairly infrequently// referenced.//// 存在 DISPATCHER_HEADER 表明 KPROCESS 是分發(fā)器對象,可以被“等待”// 所謂等待,就是指某個線程可以調(diào)用 WaitForSingleObject 函數(shù)來等待這個 KPROCESS ,// 然后該線程就會處于阻塞(等待)狀態(tài)。// 進(jìn)程退出時會變成有信號狀態(tài),等待就算成功,線程就繼續(xù)執(zhí)行了。DISPATCHER_HEADER Header;// 當(dāng)該進(jìn)程參與性能分析時,作為一個節(jié)點加入到全局性能分析進(jìn)程列表 KiProfileListHead 中LIST_ENTRY ProfileListHead;//// The following fields are referenced during context switches.//// 第一項指向頁目錄表基址;第二項指向超空間(hyper space)的頁目錄表基址ULONG_PTR DirectoryTableBase[2];#if defined(_X86_)KGDTENTRY LdtDescriptor; // LDT描述符KIDTENTRY Int21Descriptor; // 21號中斷描述符,用于兼容dos的系統(tǒng)調(diào)用USHORT IopmOffset; // IOPM(I/O權(quán)限表)的偏移UCHAR Iopl; // I/O優(yōu)先級BOOLEAN Unused;#endif#if defined(_AMD64_)USHORT IopmOffset;#endif// 32位整數(shù),表示當(dāng)前進(jìn)程正在哪些處理器上運行volatile KAFFINITY ActiveProcessors;//// The following fields are referenced during clock interrupts.//// 初始為0,僅當(dāng)一個線程結(jié)束時才更新其進(jìn)程的這兩個時間值ULONG KernelTime; // 所屬線程在內(nèi)核模式下花的時間ULONG UserTime; // 所屬線程在用戶模式下花的時間//// The following fields are referenced infrequently.//// 當(dāng)進(jìn)程被換出內(nèi)存后,其所屬線程一旦就緒,則被掛到此鏈表中,并要求換入該進(jìn)程// 然后將 ReadyListHead 中的所有線程加入到系統(tǒng)全局就緒鏈表 KiDispatcherReadyListHead 中// 這個操作是在 KiInSwapProcesses 函數(shù)中完成的LIST_ENTRY ReadyListHead;// 進(jìn)程換出內(nèi)存時,通過此域掛入 KiProcessOutSwapListHead 全局鏈表// 進(jìn)程換入內(nèi)存時,通過此域掛入 KiProcessInSwapListHead 全局鏈表SINGLE_LIST_ENTRY SwapListEntry;#if defined(_X86_)// 指向處理 Ctrl+C 中斷的函數(shù),僅用于VDM(虛擬DOS機(jī))環(huán)境下運行的16位程序PVOID VdmTrapcHandler;#elsePVOID Reserved1;#endif// 存儲了當(dāng)前進(jìn)程所有子線程的鏈表LIST_ENTRY ThreadListHead;// 自旋鎖對象,用于對進(jìn)程數(shù)據(jù)的同步訪問KSPIN_LOCK ProcessLock;// 指定了該進(jìn)程的線程可以在哪些CPU上運行,這是32或64位整數(shù),每個位都對應(yīng)一個處理器(或核)KAFFINITY Affinity;//// N.B. The following bit number definitions must match the following// bit field.//// N.B. These bits can only be written with interlocked operations.//#define KPROCESS_AUTO_ALIGNMENT_BIT 0 #define KPROCESS_DISABLE_BOOST_BIT 1 #define KPROCESS_DISABLE_QUANTUM_BIT 2union {struct {LONG AutoAlignment : 1; // 內(nèi)存對齊設(shè)置,x86不檢查此位LONG DisableBoost : 1; // 優(yōu)先級提升和時限分配相關(guān)LONG DisableQuantum : 1; // 優(yōu)先級提升和時限分配相關(guān)LONG ReservedFlags : 29;};LONG ProcessFlags;};SCHAR BasePriority; // 線程基本優(yōu)先級,默認(rèn)是8SCHAR QuantumReset; // 線程基本時限重置值,默認(rèn)是6,每次時鐘中斷減3// 是否在內(nèi)存中,共有6種可能的狀態(tài):// ProcessInMemory 、ProcessOutOfMemory 、ProcessInTransition 、// ProcessOutTransition、ProcessInSwap 和ProcessOutSwapUCHAR State;// 線程初始化時,用 ThreadSeed 設(shè)置其理想的處理器,然后更新 ThreadSeed 以供下一個線程使用UCHAR ThreadSeed;UCHAR PowerState; // 記錄電源狀態(tài)UCHAR IdealNode; // 優(yōu)先處理器節(jié)點,進(jìn)程初始化時設(shè)定BOOLEAN Visited; // WRK 未使用union {KEXECUTE_OPTIONS Flags;UCHAR ExecuteOptions; // 內(nèi)存執(zhí)行選項,用于支持NX(內(nèi)存不可執(zhí)行)};#if !defined(_X86_) && !defined(_AMD64_)PALIGNMENT_EXCEPTION_TABLE AlignmentExceptionTable;#endifULONG_PTR StackCount;// 當(dāng)前系統(tǒng)所有活動進(jìn)程的鏈表,鏈表頭是 KiProcessListHead / PsActiveProcessHeadLIST_ENTRY ProcessListEntry; } KPROCESS, *PKPROCESS, *PRKPROCESS;

總結(jié)

以上是生活随笔為你收集整理的KPROCESS 结构体属性介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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