Partilhar via


Gerenciamento de buffer de driver de protocolo

Um driver de protocolo deve gerenciar pools de estrutura NET_BUFFER_LIST e pools de estrutura NET_BUFFER para operações de envio. Para criar esses pools, os drivers chamam as seguintes funções:

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

Os drivers de protocolo podem usar as seguintes funções para alocar estruturas dos pools:

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisAllocateNetBuffer

Chamar NdisAllocateNetBufferAndNetBufferList é mais eficiente do que chamar NdisAllocateNetBufferList seguido por chamar NdisAllocateNetBuffer. No entanto, NdisAllocateNetBufferAndNetBufferList cria apenas uma estrutura NET_BUFFER na estrutura NET_BUFFER_LIST. Para utilizar NdisAllocateNetBufferAndNetBufferList, o driver deve definir o parâmetro AllocateNetBuffer como TRUE quando chamar NdisAllocateNetBufferListPool.

Os drivers de protocolo podem usar solicitações OID para consultar os requisitos de preenchimento e espaço de contexto dos drivers subjacentes. Um driver de protocolo deve determinar os requisitos de combinação e contexto para uma associação nos estados Opening ou Restarting. O driver deve alocar espaço suficiente para preenchimento retroativo e de contexto para toda a pilha. Se necessário, um driver de protocolo pode liberar os pools e realocá-los no estado de Reiniciando.

Os drivers de protocolo usam as seguintes funções para liberar os pools:

NdisFreeNetBufferListPool

NdisFreeNetBufferPool.

Os drivers de protocolo usam as seguintes funções para liberar as estruturas alocadas dos pools:

NdisFreeNetBufferList

NdisFreeNetBuffer

Os controladores devem libertar as estruturas NET_BUFFER alocadas com NdisAllocateNetBuffer antes de libertar a estrutura associada NET_BUFFER_LIST. estruturas NET_BUFFER alocadas com NdisAllocateNetBufferAndNetBufferList são libertadas quando o driver chama NdisFreeNetBufferList para a estrutura NET_BUFFER_LIST associada.