2010-07-22 2 views
2

Pour Windows 32 bits, la déclaration suivante de la structure _SYSTEM_PROCESSES (informations système de classe 5) avec ZwQuerySystemInformation fonctionne correctement pour ma part afin de construire l'arborescence de processus.ZwQuerySystemInformation/NtQuerySystemInformation - Informations système Classe 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; 

D'autre part, il ne fonctionne pas bien dans Windows 64 bits. Si je déclare le comme ULONG64, alors les données pour viennent à droite. Le type de données défini pour la structure ci-dessus est-il correct pour Windows-64?

Répondre

4

Pour une raison étrange, id de processus et fil de sont 64bit dans le noyau et 32 ​​bits dans les fenêtres documentées api x64

Si vous regardez SYSTEM_PROCESS_INFORMATION @ ntinternals vous voyez qu'ils ont déclaré les années PID MANCHE (pointeur taille)

+0

Merci Anders. C'était utile. – Kartlee

Questions connexes