[pso] [Tema1][Win] GetUserOf

Marius Viorel Grigoras grigorasmariusviorel at gmail.com
Sat Mar 27 18:54:41 EET 2010


GetUserOf va intoarce mereu STATUS_SUCCESS, daca procesul cu pid-ul dat ca
argument s-a terminat.
Intr-adevar, GetUserOf da diferit de STATUS_SUCCESS, atunci cand pid-ul dat
ca argument nu s-a folosit nu a fost atribuit niciodata de exemplu sau este
un numar negativ. Dar daca acesta este/a fost folosit in sistem, va returna
mereu STATUS_SUCCESS.
Doar PsSetCreateProcessNotifyRoutine iti spune atunci cand un proces s-a
terminat, adica un pid nu mai este valid.

În data de 27 martie 2010, 18:49, Marius Poke <mariusp55 at yahoo.com> a scris:

> 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
>>
>>
>
>
> _______________________________________________
> 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/1a9ab8be/attachment-0001.htm>


More information about the pso mailing list