吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2880|回复: 0
收起左侧

[其他转载] KPROCESS结构参考windows内核原理与实现 win10

[复制链接]
古月不傲 发表于 2019-12-6 12:19
本帖最后由 古月不傲 于 2019-12-6 12:30 编辑

[C] 纯文本查看 复制代码
typedef struct _KAFFINITY_EX
{
	USHORT Count;
	USHORT Size;
	ULONG Reserved;
	ULONG64 Bitmap[20];
}KAFFINITY_EX, *PKAFFINITY_EX;

typedef struct _KEXECUTE_OPTIONS
{
	union
	{
		struct
		{
			UCHAR ExecuteDisable : 1;
			UCHAR ExecuteEnable : 1;
			UCHAR DisableThunkEmulation : 1;
			UCHAR Permanent : 1;
			UCHAR ExecuteDispatchEnable : 1;
			UCHAR ImageDispatchEnable : 1;
			UCHAR DisableExceptionChainValidation : 1;
			UCHAR Spare : 1;
		};
		UCHAR ExecuteOptions;
		UCHAR ExecuteOptionsNV;
	};
}KEXECUTE_OPTIONS, *PKEXECUTE_OPTIONS;

typedef struct _KSTACK_COUNT
{
	union
	{
		LONG Value;
		struct
		{
			LONG State : 3;
			LONG StackCount : 29;
		};
	};
}KSTACK_COUNT, *PKSTACK_COUNT;

typedef struct _KPROCESS
{
	struct _DISPATCHER_HEADER Header;			// 分发器对象
	struct _LIST_ENTRY ProfileListHead;			// 该进程参与进程分析时,作为一个节点加入到一个KiProfileListHead中    (全局进程分析链表)
	ULONG64 DirectoryTableBase;					// 指向页目录表基址和超空间页目录表基址
	struct _LIST_ENTRY ThreadListHead;			// 双向链表 该链表记录了该进程的所有线程 当一个链表被创建时加入到该链表中 移除时从该链表移除
	ULONG ProcessLock;							// 自旋锁 用于保护数据同步
	ULONG ProcessTimerDelay;
	ULONG64 DeepFreezeStartTime;
	struct _KAFFINITY_EX Affinity;				// 表示该进程的线程可以在哪些CPU上运行
	struct _LIST_ENTRY ReadyListHead;			// 双向链表 指向KTHREAD的WaitListEntry 处于就绪状态但尚未加入全局就绪链表
	struct _SINGLE_LIST_ENTRY SwapListEntry;	// 单向链表 当一个进程被换出内存时 通过该成员加入到KiProcessOutSwapListHead中 当一个进程被换人内存时 通过该成员加入到KiProcessInSwapListHead中
	struct _KAFFINITY_EX ActiveProcessors;		// 该进程当前正在哪些CPU上运行
	union
	{
		struct
		{
			LONG AutoAlignment : 1;				// 内存访问对齐 该域会传到线程中
			LONG DisableBoost : 1;				// 线程的优先级设置
			LONG DisableQuantum : 1;			// 线程的时限设置
			LONG DeepFreeze : 1;
			LONG TimerVirtualization : 1;
			LONG CheckStackExtents : 1;
			LONG CacheIsolationEnabled : 1;
			LONG PpmPolicy : 3;
			LONG VaSpaceDeleted : 1;
			LONG ReservedFlags : 21;			
		};
		LONG ProcessFlags;						// 进程的状态
	};
	ULONG ActiveGroupsMask;
	CHAR BasePriority;							// 线程的基本优先级 所有的线程在启动时会继承这个值
	CHAR QuantumReset;							// 线程的时限重置位
	CHAR Visited;								// 未使用
	struct _KEXECUTE_OPTIONS Flags;				// 内存执行选项
	USHORT ThreadSeed[20];						// 线程理想使用的CPU
	USHORT IdealProcessor[20];
	USHORT IdealNode[20];						// 选择优先的处理器节点
	USHORT IdealGlobalNode;
	USHORT Spare1;
	struct _KSTACK_COUNT StackCount;			// 线程栈的个数
	struct _LIST_ENTRY ProcessListEntry;		// 双向链表 下一个或上一个当前系统中活动线程的进程 链表头KiProcessListHead
	ULONG64 CycleTime;
	ULONG64 ContextSwitches;
	struct _KSCHEDULING_GROUP *SchedulingGroup;
	ULONG FreezeCount;
	ULONG KernelTime;		// 内核模式运行所花的时间
	ULONG UserTime;			// 用户模式运行所花的时间
	ULONG ReadyTime;
	ULONG64 UserDirectoryTableBase;
	UCHAR AddressPolicy;
	UCHAR Spare2[71];
	PVOID InstrumentationCallback;
	ULONG SecureState;
}KPROCESS, *PKPROCESS;

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
wushaominkk + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-29 21:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表