Megosztás:


Szűrőillesztő pufferkezelése

A szűrőillesztők puffereket hoznak létre a más illesztőprogramoktól beszerzett hálózati adatok másolásához, illetve a küldési vagy fogadási műveletek kezdeményezéséhez.

Ha egy szűrőillesztő nem hoz létre puffereket, az illesztőprogram nem kezeli a pufferkészleteket. Egy ilyen illesztőprogram egyszerűen átadja a más illesztőprogramoktól kapott puffereket.

A küldési vagy fogadási műveletek támogatására puffereket létrehozó szűrőillesztőnek kezelnie kell NET_BUFFER_LIST struktúrakészleteket és NET_BUFFER struktúrakészleteket.

A készletek létrehozásához az illesztőprogramok a következő függvényeket hívják meg:

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

A szűrőillesztők a következő függvényekkel foglalhatnak le struktúrákat a készletekből:

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisAllocateNetBuffer

A NdisAllocateNetBufferAndNetBufferList hívása hatékonyabb, mint NdisAllocateNetBufferList hívása, majd NdisAllocateNetBuffer. Azonban NdisAllocateNetBufferAndNetBufferList csak egy NET_BUFFER struktúrát hoz létre a NET_BUFFER_LIST struktúrán. A NdisAllocateNetBufferAndNetBufferListhasználatához az illesztőprogramnak a AllocateNetBuffer paramétert TRUE értékre kell állítania, amikor meghívja a NdisAllocateNetBufferListPoolfüggvényt.

A küldési kérelmekből származó szűrőillesztőknek meg kell határozniuk az alapul szolgáló illesztőprogramok környezet- és háttérterület-követelményeit. A szűrőillesztők újraindítási jellemzőket használnak az alapul szolgáló illesztőprogramok visszatöltési követelményeinek meghatározására. A szűrőillesztőknek a újraindítási állapotában kell meghatározniuk a visszatöltési és környezeti követelményeket. Az illesztőprogramnak elegendő tartalékterületet és kontextushelyet kell lefoglalnia a teljes verem számára. Szükség esetén a szűrőillesztők felszabadíthatják a készleteket, és újra eloszthatják őket az újraindítási állapotban.

A szűrőillesztők a következő függvényekkel szabadítják fel a memóriaterületeket:

NdisFreeNetBufferListPool

NdisFreeNetBufferPool

A szűrőillesztők a következő függvényekkel szabadítják fel a készletekből lefoglalt struktúrákat:

NdisFreeNetBufferList

NdisFreeNetBuffer

Az illesztőprogramoknak a NdisAllocateNetBuffer által lefoglalt NET_BUFFER struktúrákat a kapcsolódó NET_BUFFER_LIST struktúra felszabadítása előtt kell felszabadítaniuk. NET_BUFFER NdisAllocateNetBufferAndNetBufferList által lefoglalt struktúrák felszabadulnak, amikor az illesztőprogram meghívja NdisFreeNetBufferList a társított NET_BUFFER_LIST struktúrához.