[pso] probleme liste windows

Mihai Florian my_mihai_florian at yahoo.com
Mon Apr 2 20:04:05 EEST 2007


Problema este ca atunci cand faci pop nu trebuie sa avansezi cu j-ul
(poti sa te uiti la PopEntryList
http://cs.pub.ro/~pso/lxr/source/public/sdk/inc/ntrtl.h?v=wrk-1.2#447
ca sa vezi exact ce se intampla acolo) si in plus i-ul nu mai are nici
o semnificatie pentru ca tocmai l-ai scos din lista (accesezi memorie
pe care ai eliberat-o deja), deci in nici un caz nu poti face j = i; si
i = i->Next;

Un cod care ar trebui sa mearga:

for ( j = &SciMonList, i = SciMonList.Next; i; )
{
    mple = CONTAINING_RECORD( i, struct MonProcList, lh);
    if ( mple->syscall == syscall)
    {
         DbgPrint( "SCI: SciDelMonitor: 0 deleting syscall %d pid
%d\n",
         mple->syscall, mple->pid);
         ExInterlockedPopEntryList( j, &SciMonListLock);
         ExFreePoolWithTag( mple, 'mple');
         i = j->Next;
    }
    else
    {
         j = i;
         i = i->Next;
    }
}


 
____________________________________________________________________________________
Sucker-punch spam with award-winning protection. 
Try the free Yahoo! Mail Beta.
http://advision.webevents.yahoo.com/mailbeta/features_spam.html


More information about the pso mailing list