Dela via


Hantering av protokolldrivrutinsbuffert

En protokolldrivrutin måste hantera NET_BUFFER_LIST strukturpooler och NET_BUFFER strukturpooler för sändningsåtgärder. För att skapa dessa pooler anropar drivrutinerna följande funktioner:

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

Protokolldrivrutiner kan använda följande funktioner för att allokera strukturer från poolerna:

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisAllocateNetBuffer

Det är effektivare att anropa NdisAllocateNetBufferAndNetBufferList än att anropa NdisAllocateNetBufferList följt av NdisAllocateNetBuffer. Men NdisAllocateNetBufferAndNetBufferList skapar bara en NET_BUFFER-struktur på NET_BUFFER_LIST-strukturen. Om du vill använda NdisAllocateNetBufferAndNetBufferListmåste drivrutinen ange parametern AllocateNetBuffer till TRUE när den anropar NdisAllocateNetBufferListPool.

Protokolldrivrutiner kan använda OID-begäranden för att fråga om tilläggsbuffertar och kontextutrymmets behov hos de underliggande drivrutinerna. En protokolldrivrutin bör fastställa kraven på buffertfyllning och kontext för en bindning i tillstånden Öppning eller Omstart. Drivrutinen bör allokera tillräckligt med back-fill och kontextutrymme för hela stacken. Om det behövs kan en protokolldrivrutin frigöra poolerna och omallokera dem i omstartstillståndet .

Protokolldrivrutiner använder följande funktioner för att frigöra poolerna:

NdisFreeNetBufferListPool

NdisFreeNetBufferPool.

Protokolldrivrutiner använder följande funktioner för att frigöra de strukturer som allokerats från poolerna:

NdisFreeNetBufferList

NdisFreeNetBuffer

Drivrutiner bör frigöra NET_BUFFER-strukturer som har allokerats med NdisAllocateNetBuffer innan den associerade NET_BUFFER_LIST-strukturen frigörs. NET_BUFFER strukturer som allokeras med NdisAllocateNetBufferAndNetBufferList frigörs när drivrutinen anropar NdisFreeNetBufferList för den associerade NET_BUFFER_LIST strukturen.