[pso] De ce exista notiunea de pseudo-HANDLE?
Bercea Gabriel
gamitech at gmail.com
Sun Apr 12 13:18:38 EEST 2009
Andrei,
PseudoHandle-urile gen cel returnat de GetCurrentProcess, nu este un handle
real. Stiu ca parca era (HANDLE)-1, nu stiu se poate schimba nu e bine sa
hardcodezi asa ceva.
Drumul pana in kernel intradevar nu se se face pentru ca nu e creat de fapt
nici un handle.
In kernel astea sunt deja hadrcodate cu ZwCurrentProcess() si
ZwCurrentThread() , care tot (HANDLE)-1 sunt (nu folositi functiile care au
prefixul Nt in kernel mode).
In principiu ti-ai raspuns singur la intrebare. Bine de stiut, este ca au
AccessMode = PROCESS_ALL_ACCESS, si se pot duplica in handleuri reale, cu
DuplicateHandle. In kernel mode nu exista nici o rutina documentata care sa
permita duplicarea de handleuri insa se poate face foarte usor folosind
ObjectManagerul, si se pot crea handleuri UserMode si KernelMode, (you
choose the process context :) long live APC's)
Cu respect,
Bercea Gabriel 342 C2
Mobile contact: (+40)0740049634
eMail: gamitech at gmail.com
-----Original Message-----
From: pso-bounces at cursuri.cs.pub.ro [mailto:pso-bounces at cursuri.cs.pub.ro]
On Behalf Of Andrei Ismail
Sent: Sunday, April 12, 2009 12:00 AM
To: pso at cursuri.cs.pub.ro
Subject: [pso] De ce exista notiunea de pseudo-HANDLE?
Salut,
Pe Windows, anumite functii, cum ar fi GetCurrentProcess(), intorc un
pseudo-HANDLE. Intrebarea mea este, de ce exista aceasta notiune?
Banuiala mea este ca pseudo-HANDLES au acelasi scop cu VDSO-urile pe Linux:
optimizarea apelurilor de sistem "light", pentru a evita un drum pana in
kernel si inapoi. Probabil ca s-a preferat introducerea unui if() in plus in
celelalte apeluri de sistem (if h == PSEUDO_HANDLE_FOR_CURRENT_PROCESS),
daca per total se obtine o viteza mai buna. Am dreptate?
Andrei
_______________________________________________
pso mailing list
pso at cursuri.cs.pub.ro
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
More information about the pso
mailing list