empacotamento de dados NET_BUFFER
O empacotamento de dados foi reprojetado no NDIS 6.0. A arquitetura de envio e recebimento baseada na estrutura NDIS_PACKET foi substituída por uma arquitetura baseada em estruturas de NET_BUFFER e NET_BUFFER_LIST . Uma estrutura NET_BUFFER é o equivalente funcional de uma estrutura NDIS_PACKET. Uma estrutura de NET_BUFFER especifica um buffer (cadeia MDL) para dados de rede, bem como espaço reservado para NDIS, drivers de protocolo e drivers de miniporte. NET_BUFFER estruturas podem ser vinculadas em uma lista descrita por uma estrutura NET_BUFFER_LIST. Uma estrutura NET_BUFFER_LIST também fornece armazenamento para dados OOB (fora de banda) que se aplicam a todas as estruturas de NET_BUFFER na lista.
Todos os componentes na pilha de driver de rede da próxima geração da Microsoft, incluindo o transporte TCP/IP e o Winsock, usam NET_BUFFER empacotamento de dados. O empacotamento uniforme de dados em toda a pilha de driver elimina a necessidade de reempacotar dados, simplifica o tratamento de dados e reduz o número de chamadas de função.
Para acomodar drivers mais antigos que usam estruturas NDIS_PACKET, o NDIS 6.0 converte estruturas NDIS_PACKET para estruturas NET_BUFFER e vice-versa. Essa tradução é transparente para drivers NDIS.
O NDIS propaga os requisitos de backfill de dados de um driver para drivers de nível superior. Ao alocar estruturas de NET_BUFFER e NET_BUFFER_LIST para enviar dados, um driver de nível superior aloca espaço de dados suficiente para acomodar todos os drivers de nível inferior na pilha. Como resultado, os drivers de nível inferior não precisam alocar espaço de buffer adicional para acomodar cabeçalhos específicos da camada. Em vez disso, eles podem usar o espaço de backfill pré-alocado para essa finalidade.
Para obter mais informações sobre a arquitetura de NET_BUFFER, consulte Arquitetura NET_BUFFER.