ZwQuerySystemInformation / NtQuerySystemInformation - 系统信息类5

时间:2010-07-22 16:19:18

标签: windows winapi windows-vista sdk

对于32位Windows,在使用_SYSTEM_PROCESSES声明ZwQuerySystemInformation结构(系统信息类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?

1 个答案:

答案 0 :(得分:4)

出于一些奇怪的原因,进程和线程id在内核中是64位,在x64上记录的windows api中是32位

如果你看一下SYSTEM_PROCESS_INFORMATION @ntinternals,你会发现他们已经将PID声明为HANDLE(指针大小)