[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