[pso] [Tema1][Win] GetUserOf
Marius Poke
mariusp55 at yahoo.com
Sat Mar 27 18:49:21 EET 2010
Oki, iti imaginezi ca am vazut ca s-a mai vorbit despre asta si ca sa vezi chiar am citit ce s-a discutat. Alexandra a deschis firul de discutie cu o intrebare la care din cate am vazut eu nu a primit raspuns. Zi-mi te rog ce legatura are PsSetCreateProcessNotifyRoutine, cu intrebarea mea? La fel si pentru intrebarea Alexandrei, ce legatura are? Am folosit rutina respectiva care inregistreaza un handler care se apeleaza la crearea/moartea unui proces. In rutina respectiva pt. create == false (deci cand moare un proces) scoti pid-ul procesului respectiv din lista de procese monitorizate. Dupa ce fac acest lucru incepe testul urmator care incearca sa-mi opreasca monitorizarea pt. pid-ul procesului care ocmai a murit. In functia my_syscall pe case-ul cu REQUEST_STOP_MONITOR incep sa fac verificari de consistenta:
- daca pid = 0 si userul nu e privilegiat;
- daca pid != 0:
- verific daca pid-ul este valid (acest lucru il fac cu functia GetUserOf, functie care pentru un pid a unui proces care tocmai a murit imi da STATUS_SUCCESS);
Intrebarea mea este, cum pot sa verific validitatea unui pid ca sa nu am aceasta problema ??
Mersi,
Marius
PS: scuze tonul dar chiar sunt putin nervos ;)
________________________________
From: Marius Viorel Grigoras <grigorasmariusviorel at gmail.com>
To: Proiectarea Sistemelor de Operare <pso at cursuri.cs.pub.ro>
Sent: Sat, March 27, 2010 6:27:28 PM
Subject: Re: [pso] [Tema1][Win] GetUserOf
Salut,
Trebuie sa folosesti PsSetCreateProcessNotifyRoutine.
S-a mai discutat pe tema asta aici[1].
Spor,
Vio.
[1] http://cursuri.cs.pub.ro/pipermail/pso/2010-March/003867.html
În data de 27 martie 2010, 18:13, Marius Poke <mariusp55 at yahoo.com> a scris:
>
>Putem folosi GetUserOf() pentru a verifica validitatea unui pid? Presupun ca functia intoarce ceva diferit de STATUS_SUCCESS in cazul in care pidul nu exista.
>>
>Daca se poate folosi asa atunci am o problema:
>
>Verifica daca mai exista pid-ul pid:
>if ( (status = GetUserOf(pid, &pid_user)) != STATUS_SUCCESS) { ... }
>
>Verificare daca procesul curent are acelasi utilizator cu procesul cu pid-ul pid:
>>
>if (!CheckUsers(crt_user, pid_user)) {...} // crt_user este o variabila de tip PTOKEN_USER
>
>Ei, dupa ce un proces este sters, intra in handlerul respectiv, dupa care in urmatorul test (cel cu stop last_child) trece de prima verificare (cea pt. pid valid) dar nu trece de a doua.
>
>Poate sa-mi explice cineva ce gresesc?
>
>Mersi,
>Marius
>
>
>_______________________________________________
>>pso mailing list
>pso at cursuri.cs.pub.ro
>http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/lurker/list/pso.html/attachments/20100327/4d2648b0/attachment.htm>
More information about the pso
mailing list