【发布时间】:2018-04-28 06:39:40
【问题描述】:
有人能解释一下PROCESS_EXTENDED_BASIC_INFORMATION 中的所有这些位代表什么吗?
typedef struct _PROCESS_EXTENDED_BASIC_INFORMATION {
SIZE_T Size; // Ignored as input, written with structure size on output
PROCESS_BASIC_INFORMATION BasicInfo;
union {
ULONG Flags;
struct {
ULONG IsProtectedProcess : 1;
ULONG IsWow64Process : 1;
ULONG IsProcessDeleting : 1;
ULONG IsCrossSessionCreate : 1;
ULONG IsFrozen : 1;
ULONG IsBackground : 1;
ULONG IsStronglyNamed : 1;
ULONG IsSecureProcess : 1;
ULONG IsSubsystemProcess : 1;
ULONG SpareBits : 23;
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
} PROCESS_EXTENDED_BASIC_INFORMATION, *PPROCESS_EXTENDED_BASIC_INFORMATION;
微软在this article 中显示了这个struct,但没有解释这些标志代表什么。
【问题讨论】:
-
位标志的名称非常清楚。例如,您当然可以理解 IsWow64Process 的含义。
-
@DavidHeffernan:当然,如果你想让我列出那些我不清楚的。给你:
IsProtectedProcess,IsProcessDeleting,IsCrossSessionCreate,IsFrozen,IsBackground,IsStronglyNamed,IsSubsystemProcess。对不起,如果我是唯一不知道这些意思的人。 -
好吧,
IsProtectedProcess标识了一个受保护的进程,依此类推。这是简单的英语。所以我想下一个问题是你在寻找什么信息。以及为什么您认为可以在这个未记录的结构中找到答案。 -
天哪,我想你已经掌握了这个窍门。那么,你在寻找什么信息。要求定义这 9 个不同的过程状态过于宽泛。您正在寻找哪些具体信息导致您使用此结构?
-
用户对受保护进程的访问权限最小;即使调试权限也不会授予完全访问权限。常见的示例是系统进程,例如 smss.exe、csrss.exe、wininit.exe 和 services.exe。一旦终止,一个进程将处于删除状态(但由于有句柄而尚未收割)。跨会话创建是指父进程在不同的会话中——通常是会话 0 服务,例如任务调度程序。冻结的进程被挂起。 UWP 应用程序包可以在后台运行并具有强名称。 NT 子系统有一个服务器进程,例如 csrss.exe(每个会话)。