[pso] Despre [tema1]Windows - KeServiceSystemTable

omar Chouydary chouydary at yahoo.com
Sun Mar 25 23:33:52 EEST 2007


Referitor la ls, avand in vedere ca in tema zice ca putem considera ca MY_SYSCALL_NO este mai mare decat nr. oricarui apel de sistem , putem spune ca ls=MY_SYSCALL_NO+1 sau gresesc?

Altceva care ma nelamureste, vreau sa testez si eu tema, sa vad daca macar functia mea my_syscall este apelata, adika sa vad ca am reusit sa pun noua tabela, etc (am folosit si WPON si tot)... Cred ca undeva gresesc pt ca nu prea vrea, adica imi returneaza ceva f. aiurea. Am facut in felul urmator:
Am copiat functiile din test.c adika syscall si vsyscall si am apelat vsyscall(MY_SYSCALL_NO, 3, 1, 2, 3) de ex. E ok asa?

Inca ceva, ca sa nu mai dau alt mail dupa. Pt copierea noilor tabele, este suficient sa imi fac o noua structura std cu noua tabela atat pt cea principala si pt cea shadow dupa care sa fac ceva de genul:
WPOFF();
KeServiceDescriptorTable[0]=newKSD;
KeServiceDescriptorTableShadow[0]=newKSDShadow;
WPON();
unde newKSD si newKSDShadow sunt noile tabele, cu tot cu my_syscall inclus

sau mai e ceva la mijloc?

Razvan Deaconescu <razvand at cs.pub.ro> wrote: omar Chouydary wrote:
> Puteti preciza exact semnificatia fiecarui camp din structura std? Am 
> cam facut tema.. dar nu stiu sigur ce semnificatie are fiecare camp din 
> cei definiti in sci.h:
> struct std {
>     void **st;    /* service table */ -> aici e clar
>     int *ct;        /* counter table */ -> aici sa inteleg ca e vb de 
> nr. tabelei (0-3) ?

nu, e vorba de un contor de apeluri; poti sa-l pui pe NULL; nu e folosit

>     int ls;            /* last service no */ -> aici e clar

vezi ca nu e indexul ultimului serviciu, ci numarul de apeluri valide

>     unsigned char *spt;    /* service parameter table */ -> aici nu stiu 
> cu cat trebuie initializat
> };
> 

spt - service parameter table - este un vector de dimensiune std.ls; 
fiecare element contine numarul de octeti ocupat de parametrii apelului 
asociat; altfel spus pe pozitia 0 a vectorului spt se gaseste spatiul 
ocupat (numar de octeti) de parametrii apelului de sistem cu indexul 0; 
pe Windows este nevoie de asa ceva din cauza faptului ca exista un numar 
mare de parametri ai apelurilor de sistem si nu pot fi transmisi prin 
registre

nici sursele nu sunt foarte "enlighting", dar pot oferi o noua 
perspectiva :-)
http://cs.pub.ro/~pso/lxr/source/base/ntos/inc/ke.h?v=wrk-1.2#579

Razvan
_______________________________________________
pso mailing list
pso at cursuri.cs.pub.ro
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso


 
---------------------------------
It's here! Your new message!
Get new email alerts with the free Yahoo! Toolbar.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20070325/53fe6f8b/attachment.htm


More information about the pso mailing list