2010-07-22 132 views
2

對於32位Windows,聲明_SYSTEM_PROCESSES結構(系統信息類5)ZwQuerySystemInformation對於構建進程樹的目的正常工作。ZwQuerySystemInformation/NtQuerySystemInformation - 系統信息類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中無法正常工作。如果我聲明ProcessIdULONG64,那麼ProcessId的數據就是正確的。爲上述結構定義的數據類型是否適合Windows-64?

回答

4

出於某種奇怪的原因,進程和線程ID是在64

內核和32位中介紹了Windows API的64位如果你看一下SYSTEM_PROCESS_INFORMATION @ ntinternals你看,他們已經宣佈了PID的作爲手柄(指針大小)

+0

謝謝安德斯。這很有幫助。 – Kartlee 2010-07-23 07:23:26