Delen via


Bufferbeheer voor filterstuurprogramma's

Filterstuurprogramma's maken buffers om netwerkgegevens te kopiëren die zijn verkregen uit andere stuurprogramma's of om verzend- of ontvangstbewerkingen te initiëren.

Als een filterstuurprogramma geen buffers maakt, beheert het stuurprogramma geen buffergroepen. Een dergelijke bestuurder geeft simpelweg de buffers door die het ontvangt van andere stuurprogramma's.

Een filterstuurprogramma dat buffers maakt ter ondersteuning van verzend- of ontvangstbewerkingen, moet NET_BUFFER_LIST structuurgroepen en NET_BUFFER structuurgroepen beheren.

Als u deze pools wilt maken, roepen stuurprogramma's de volgende functies aan:

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

Filterstuurprogramma's kunnen de volgende functies gebruiken om structuren toe te wijzen uit de pools:

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisAllocateNetBuffer

Het aanroepen van NdisAllocateNetBufferAndNetBufferList is efficiënter dan het aanroepen van NdisAllocateNetBufferList gevolgd door NdisAllocateNetBuffer. NdisAllocateNetBufferAndNetBufferList maakt echter slechts één NET_BUFFER-structuur aan binnen de NET_BUFFER_LIST-structuur. Om NdisAllocateNetBufferAndNetBufferListte gebruiken, moet de driver de AllocateNetBuffer parameter instellen op TRUE wanneer hij NdisAllocateNetBufferListPoolaanroept.

Filterstuurprogramma's die verzendverzoeken initiëren, moeten de context- en de vereisten voor de backfillruimte van de onderliggende stuurprogramma's bepalen. Filterstuurprogramma's gebruiken kenmerken voor opnieuw opstarten om de backfillvereisten van onderliggende stuurprogramma's te bepalen. Een filterstuurprogramma moet de vereisten voor backfill en context bepalen in de toestand Opnieuw Opstarten. Het stuurprogramma moet voldoende backfill en contextruimte toewijzen voor de hele stack. Indien nodig, kan een filterstuurprogramma de pools vrijmaken en opnieuw toewijzen in de opnieuw opstarten modus .

Filterstuurprogramma's gebruiken de volgende functies om de pools vrij te maken:

NdisFreeNetBufferListPool

NdisFreeNetBufferPool

Filterstuurprogramma's gebruiken de volgende functies om de structuren vrij te maken die zijn toegewezen uit de pools:

NdisFreeNetBufferList

NdisFreeNetBuffer

Stuurprogramma's moeten NET_BUFFER-structuren, die zijn toegewezen met NdisAllocateNetBuffer, vrijmaken voordat de bijbehorende NET_BUFFER_LIST-structuur wordt vrijgemaakt. NET_BUFFER structuren die zijn toegewezen met NdisAllocateNetBufferAndNetBufferList worden vrijgemaakt wanneer het stuurprogramma NdisFreeNetBufferList aanroept voor de bijbehorende NET_BUFFER_LIST structuur.