Compartilhar via


Gerenciamento de buffer do driver de protocolo

Um driver de protocolo deve gerenciar estruturas de pools NET_BUFFER_LIST e estruturas de pools 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 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 quando chamar NdisAllocateNetBufferListPool.

Os drivers de protocolo podem usar solicitações de 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 de preenchimento de fundo e contexto suficiente 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 de dados alocadas dos pools:

NdisFreeNetBufferList

NdisFreeNetBuffer

Os drivers devem liberar as estruturas NET_BUFFER alocadas com NdisAllocateNetBuffer antes de liberar a estrutura NET_BUFFER_LIST associada. Estruturas NET_BUFFER alocadas com NdisAllocateNetBufferAndNetBufferList são liberadas quando o driver chama NdisFreeNetBufferList para a NET_BUFFER_LIST associada.