[pso] tema1 [Win] - Alocare de memorie!

Irina Tirdea ynuka13 at gmail.com
Mon Apr 14 20:07:37 EEST 2008


Salut.

 

Nu aloci cata memorie ai nevoie, din cauza macrodefinitiei. 

La preprocesare, macrodefinitia se va inlocui exact asa cum e definita,
adica:

 

NR_SYSCALLS*sizeof(int) = MY_SYSCALL_NO+1*sizeof(int) = MY_SYSCALL_NO + 4



Ca sa functioneze asa cum trebuie, ai nevoie de niste paranteze:

 

#define NR_SYSCALLS       (MY_SYSCALL_NO+1)

 

Irina

 

From: pso-bounces at cursuri.cs.pub.ro [mailto:pso-bounces at cursuri.cs.pub.ro]
On Behalf Of Flucus Andrei
Sent: Monday, 14 April, 2008 13:57
To: pso at cursuri.cs.pub.ro
Subject: [pso] tema1 [Win] - Alocare de memorie!

 

Buna ,

Incerc sa rulez tema 1 de windows dar de fiecare data cand incarc  modulul
in crapa masina virtuala si apare faimosul blue screen. Am facut putin
debugging si am descoperit cu stupoare ca problema ar fi de  la alocarea
dinamica a unui vector .Ma chinui de vreo 2 zile sa inteleg de ce nu merge ,
si nu pot sa imi dau seama unde gresesc , ar putea cineva sa imi spuna unde
gresesc . Acesta este codul pe care il execut :

#define NR_SYSCALLS       MY_SYSCALL_NO+1

int*  intercepted_syscall_vector ;

// undeva intr-o fct  de initializare ce se apeleaza la incarcarea modului
rulez urmatorul cod
//alocam spatiu pt vectorul ce retine date despre apelurile interceptate
    intercepted_syscall_vector = ExAllocatePoolWithTag(NonPagedPool ,
NR_SYSCALLS*sizeof(int),'1gat');
    if (!intercepted_syscall_vector)
    {
           DbgPrint("Could not allocate memory for
intercepted_syscall_vector \n" );
           return STATUS_NO_MEMORY;
    }

Ideea e ca daca nu il aloc dinamic , merge(daca e alocat static) , dar pe
langa acest vector mai incerc sa aloc spatiu si pt noua tabela de apeluri de
sistem si pt noul vector ce retine numarul de parametri pt fiecare apel .
Cum nici pe acestia nu ii pot aloca dinamic , i-am alocat static , dar tot
imi apare blue screen si in mesajul de pe ecran apare printre altele si
urmatorul mesaj : " Check to be sure you have adequate disk space" si imi
zice si o adresa din cadrul modulului unde crapa.

Nu se pot aloca zone de memorie relativ mari(2-5k) in kernel folosind
ExAllocatePool? sau gresesc eu undeva.

PS: Mentionez ca folosesc masina virtuala de windows de anu' trecut , nu pe
ceea de anul acesta(mie mi se par a fi identice).

Orice ajutor e binevenit ,

Flucus Andrei

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20080414/395f232b/attachment.htm 


More information about the pso mailing list