[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