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:
Os drivers de protocolo podem usar as seguintes funções para alocar estruturas dos pools:
NdisAllocateNetBufferAndNetBufferList
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:
Os drivers de protocolo usam as seguintes funções para liberar as estruturas alocadas dos pools:
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.