Gestione del buffer dei driver di protocollo

Un driver di protocollo deve gestire NET_BUFFER_LIST pool di strutture e pool di strutture NET_BUFFER per le operazioni di invio. Per creare questi pool, i driver chiamano le funzioni seguenti:

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

I driver di protocollo possono usare le funzioni seguenti per allocare strutture dai pool:

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisAllocateNetBuffer

La chiamata a NdisAllocateNetBufferAndNetBufferList è più efficiente rispetto alla chiamata di NdisAllocateNetBufferList seguita da NdisAllocateNetBuffer. Tuttavia , NdisAllocateNetBufferAndNetBufferList crea solo una struttura NET_BUFFER nella struttura NET_BUFFER_LIST. Per usare NdisAllocateNetBufferAndNetBufferList, il driver deve impostare il parametro AllocateNetBuffer su TRUE quando chiama NdisAllocateNetBufferListPool.

I driver di protocollo possono usare le richieste OID per eseguire query sui requisiti di spazio back-fill e di contesto dei driver sottostanti. Un driver di protocollo deve determinare i requisiti di back-fill e contesto per un'associazione negli stati Apertura o Riavvio . Il driver deve allocare sufficiente spazio di riempimento e contesto per l'intero stack. Se necessario, un driver di protocollo può liberare i pool e riallocarli nello stato Riavvio .

I driver di protocollo usano le funzioni seguenti per liberare i pool:

NdisFreeNetBufferListPool

NdisFreeNetBufferPool.

I driver di protocollo usano le funzioni seguenti per liberare le strutture allocate dai pool:

NdisFreeNetBufferList

NdisFreeNetBuffer

I driver devono liberare strutture NET_BUFFER allocate con NdisAllocateNetBuffer prima di liberare la struttura di NET_BUFFER_LIST associata. NET_BUFFER strutture allocate con NdisAllocateNetBufferAndNetBufferList vengono liberate quando il driver chiama NdisFreeNetBufferList per la struttura di NET_BUFFER_LIST associata.