[pso] [tema1][win]iterare peste lista de procese

Razvan Deaconescu razvand at cs.pub.ro
Sat Mar 17 01:01:24 EET 2007


Andrei Popa wrote:
> On Sat, 2007-03-17 at 00:15 +0200, Andrei Popa wrote:
> 
>>On Fri, 2007-03-16 at 14:36 -0700, Florin wrote:
>>
>>>Ok, atunci reformulez : se poate ca , in Windows , intr-un modul de
>>>kernel, sa pot itera peste lista de procese ce sunt "active" in
>>>sistem?
>>
>>ZwQuerySystemInformation() ?
> 
> 
> sau te plimbi direct prin lista de procese a windowsului:
> 
> http://cs.pub.ro/~pso/lxr/source/base/ntos/inc/ps.h?v=wrk-1.2#238
> 
> aici e definita structura pe care o obtii prin PsGetCurrentProcess() 
> si ai o intrare "LIST_ENTRY ActiveProcessLinks" care este o lista dublu
> inlantuita prin care te plimbi cu Flink(forward) si Blink(backward).
> 

din pacate, nu e asa de simplu; am incercat sa facem acest lucru ca 
exercitiu de laborator 2 echivalent cu exercitiul de laborator de Linux 
in care se parcurgeau procesele din sistem

totusi, pe Windows, nu ai acces la tipul structura EPROCESS; ai acces la 
pointer-ul la tip (adica PEPROCESS(, dar nu la tipul EPROCESS si, drept 
urmare, nu poti sa investighezi procesele curente; cu alte cuvinte nu 
poti obtine elementul ActiveProcessLinks dintr-o astfel de structura, 
intrucat nu poti obtine nici macar tipul structurii; kernel-ul de 
Windows este destul de "inchis"; iti permite accesul limitat la 
resursele kernel-ului de obicei pe baza functiilor din DDK

Razvan


More information about the pso mailing list