Gerenciamento de buffer do driver de protocolo

Um driver de protocolo deve gerenciar NET_BUFFER_LIST pools de estrutura e NET_BUFFER pools de estrutura 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 NdisAllocateNetBuffer. No entanto, NdisAllocateNetBufferAndNetBufferList cria apenas uma estrutura NET_BUFFER na estrutura NET_BUFFER_LIST. Para usar NdisAllocateNetBufferAndNetBufferList, o driver deve definir o parâmetro AllocateNetBuffer como TRUE ao 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 preenchimento e contexto para uma associação nos estados De abertura ou reinicialização . O driver deve alocar espaço suficiente de preenchimento e contexto para toda a pilha. Se necessário, um driver de protocolo pode liberar os pools e realocá-los no estado De reinicialização .

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 drivers devem liberar NET_BUFFER estruturas alocadas com NdisAllocateNetBuffer antes de liberar a estrutura de NET_BUFFER_LIST associada. NET_BUFFER estruturas alocadas com NdisAllocateNetBufferAndNetBufferList são liberadas quando o driver chama NdisFreeNetBufferList para a estrutura de NET_BUFFER_LIST associada.