[pso] [tema1][win] GetUserOf
Octavian Voicu
octavian.voicu at gmail.com
Wed Apr 1 16:33:28 EEST 2009
Ca sa intelegi cum se folosesc, cel mai bine te uiti la sursa ca sa vezi
semnificatia parametrilor.
In implementarea GetUserOf din sci_win.h, parametrul al doilea este pasat
functiei ZwQueryInformationToken:
static NTSTATUS GetUserOf(HANDLE pid, TOKEN_USER **user)
...
if (!(*user=ExAllocatePoolWithTag(NonPagedPool, len, 'ot1t'))) {
status=STATUS_NO_MEMORY; goto out; } if
((status=ZwQueryInformationToken(token, TokenUser, *user, len, &len)) !=
STATUS_SUCCESS)
Dupa cum vezi, functia aloca bufferul si stocheaza pointerul catre memoria
alocata la adresa primita ca parametru.
Deci modul de folosire trebuie sa fie:
TOKEN_USER *user;
if (GetUserOf(pid, &user) != STATUS_SUCCESS) // err
// ...
ExFreePoolWithTag(user, 'ot1t');
Adica pasam functiei adresa unui pointer, si functia ne aloca un buffer si
scrie adresa pointerului catre zona de memorie alocata la adresa pe care
i-am dat-o noi (adresa variabilei user).
Free-ul se da pentru ca functia aloca un buffer, deci e responsabilitatea
codului apelant sa-l elibereze dupa ce a terminat de lucrat cu el, de
preferat folosind tag-ul cu care a fost alocata memoria.
Similar pentru GetCurrentUser.
2009/4/1 Mihai Bucicoiu <mihai.bucicoiu at gmail.com>
> nu prea inteleg cum se folosesc GetUserOf, si getCurrentuser;
>
> eu am facut asa, 2 token-uri pentru user curent si cel al unui pid
>
>
> TOKEN_USER **user;
> TOKEN_USER **user_current;
>
> user = ExAllocatePoolWithTag(NonPagedPool,sizeof(TOKEN_USER *),'1usr');
> user_current = ExAllocatePoolWithTag(NonPagedPool,sizeof(TOKEN_USER
> *),'2usr');
>
> in mom in care apelez ceva de genul
> *
> if (GetUserOf(pid,user) != STATUS_SUCCESS)
> {
> return STATUS_INVALID_PARAMETER;
> }*
>
> intra mereu pe return .... unde gresesc ?
>
> mentionez ca pid = 0, syscall = primu din teste NtOpenMutant
>
> Mihai
>
> _______________________________________________
> pso mailing list
> pso at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>
>
--
Octavian Voicu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/pso/attachments/20090401/83066177/attachment.htm>
More information about the pso
mailing list