[pso] probleme liste windows
Razvan Hobeanu
mindphobia at yahoo.com
Mon Apr 2 23:55:09 EEST 2007
In Windows listele inlantuite (simplu sau dublu) sunt
implementate ca liste cu santinele (ceea ce aduce un
spor de performanta fata de modul traditional de
implementare a listelor cu care probabil sunteti
obisnuiti). Capul listei este intotdeauna un element
fals (santinela), de care sunt legate toate celelalte
elemente.
Problema ta e ca primul parametru al lui
ExInterlockedPopEntryList este un capat de lista.
Astfel, la apelul tau se elimina primul element din
lista al carui cap este considerat j. Prin urmare, se
va scoate i din lista. In plus, campul Next al lui i
se face NULL si astfel ti se opreste tie for-ul.
Pentru listele simplu inlantuite exista rutine de
scoatere a unui element din lista numai de la capul
listei, din motive evidente, deci
ExInterlockedPopEntryList nu te poate ajuta aici. Daca
vrei sa scoti elementul din lista, va trebui sa o faci
manual in modul traditional, tinand o referinta la
elementul anterior si modificand campul Next al
acestuia sa arate catre elementul indicat de campul
Next al obiectului pe care vrei sa-l stergi.
Alternativ, poti folosi o lista dublu-inlantuita
(adica LIST_ENTRY in loc de SINGLE_LIST_ENTRY) si
RemoveEntryList.
Numai bine,
Razvan
____________________________________________________________________________________
The fish are biting.
Get more visitors on your site using Yahoo! Search Marketing.
http://searchmarketing.yahoo.com/arp/sponsoredsearch_v2.php
More information about the pso
mailing list