[pso] NtTerminateProcess?

Razvan Hobeanu mindphobia at yahoo.com
Sun Apr 2 19:20:07 EEST 2006


Salut,

Recitind imi dau seama ca am zis o prostie intr-o
parte din  explicatia pe care ti-am dat-o mai jos
(unde mi-o fi fost mintea?) pentru care imi cer scuze.
Am luat din nou la analizat NtTerminateProcess pentru
lamurire referitor la ce se intampla cand e apelata
chiar de procesul in cauza, iar rezultatele sunt
urmatoare:

- NtTerminateProcess returneaza numai in cazul in care
este o eroare (apelantul nu are suficiente drepturi
sau procesul este deja in curs de terminare). Daca
terminarea procesului reuseste fara erori, functia nu
mai returneaza. Consecinta fireasca e ca nu se poate
afla pid-ul procesului curent dupa apelarea lui
NtTerminateProcess (desi nici nu vad care ar fi
rostul).

Concluzia: Daca NtTerminateProcess apelat pentru
procesul care il apeleaza reuseste, dupa el nu se mai
executa nimic.

Razvan

--- Maximilian Machedon
<maximilian.machedon at gmail.com> wrote:

>         Multumesc de raspunsuri, e un pic mai clar
> acum... Dar tot e o
> problema: daca NtTerminateProcess returneaza, ce se
> executa pe urma?.. Adica
> daca este apelat de procesul care se termina, cand
> functia returneaza se
> executa cod? Ce cod? Ca in thread-ul care l-a apelat
> nu ar trebui sa mai 
> existe cod, deci se executa cod din kernel, nu?
> 
> 
> ----- Original Message ----- 
> From: "Razvan Hobeanu" <mindphobia at yahoo.com>
> To: "Proiectarea Sistemelor de Operare"
> <pso at cursuri.cs.pub.ro>
> Sent: Tuesday, March 28, 2006 2:39 PM
> Subject: Re: [pso] NtTerminateProcess?
> 
> 
> --- Maximilian Machedon
> <maximilian.machedon at gmail.com> wrote:
> >         Daca am intercepta apelul
> > "NtTerminateProcess", ce s-ar intampla?
> > Cand ar fi apelat
> "PsSetCreateProcessNotifyRoutine"?
> 
> Rutina callback inregistrata cu
> PsSetCreateProcessNotifyRoutine va fi apelata (in
> cazul terminarii procesului) dupa ce se va face exit
> ultimul thread al procesului, cand e sters obiectul
> procesului.
> 
> > Putem afla pid-ul
> > procesului curent dupa ce apelul returneaza, daca
> > procesul insusi a apelat
> > "NtTerminateProcess"? De fapt, mai returneaza
> > apelul?
> >
> 
> Se poate afla pid-ul procesului curent dupa ce
> NtTerminateProcess returneaza, deoarece obiectul
> proces nu a fost sters inca. Apelul returneaza
> deoarece NtTerminateProcess intern face terminate
> pentru toate thread-urile procesului cu exceptia
> celui
> in contextul caruia este apelat.
> 
> Razvan



__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


More information about the pso mailing list