对于32位视窗,使用ZwQuerySystemInformation声明_SYSTEM_PROCESSES结构(系统信息类5)可以很好地构建进程树。
typedef struct _SYSTEM_PROCESSES
{ // System Information Class 5
ULONG NextEntryDelta;
ULONG ThreadCount;
ULONG Reserved1[6];
LARGE_INTEGER CreateTime;
LARGE_INTEGER UserTime;
LARGE_INTEGER KernelTime;
UNICODE_STRING ProcessName;
ULONG BasePriority;
ULONG ProcessId;
ULONG InheritedFromProcessId;
ULONG HandleCount;
ULONG Reserved2[2];
} SYSTEM_PROCESSES, * PSYSTEM_PROCESSES; 另一方面,它在64位Windows中不能很好地工作。如果我将ProcessId声明为ULONG64,那么ProcessId的数据就正确了。为上述结构定义的数据类型是否适用于Windows-64?
发布于 2010-07-23 04:01:18
出于某种奇怪的原因,进程和线程id在内核中为64位,在x64上的文档中为32位。
如果你查看SYSTEM_PROCESS_INFORMATION @ ntinternals,你会看到它们已经将PID声明为句柄(指针大小)
https://stackoverflow.com/questions/3310992
复制相似问题