Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um driver intermediário recebe NET_BUFFER_LIST estruturas com um ou mais MDLs associados de um driver de nível superior para enviar pela rede. O driver intermediário pode passar os dados para o driver subjacente chamando NdisSendNetBufferLists se o driver tiver uma borda inferior sem conexão ou chamando NdisCoSendNetBufferLists se o driver tiver uma borda inferior orientada à conexão. Como alternativa, o driver intermediário pode executar algumas ações para modificar o conteúdo dos buffers encadeados ou a ordenação ou o tempo dos dados de entrada em relação a outras transmissões.
Dependendo da finalidade do driver intermediário, esse driver pode reempacotar buffers encadeados a estruturas de NET_BUFFER_LIST de entrada. Por exemplo, um driver intermediário reempacota dados de rede nas seguintes circunstâncias:
O driver intermediário recebe um buffer de dados maior de um driver de protocolo superior do que pode ser enviado em um único buffer através do meio subjacente. Consequentemente, o driver intermediário deve dividir os dados de entrada em buffers menores.
O driver intermediário altera o comprimento ou o conteúdo dos dados de rede compactando ou criptografando os dados antes de encaminhar cada envio para o driver subjacente.
Para obter informações sobre a criação do gerenciamento de dados de rede, consulte Gerenciamento de Buffer de Driver de Protocolo.
O NDIS fornece interfaces para clonar e fragmentar estruturas de NET_BUFFER_LIST . Para obter mais informações sobre clonagem e fragmentação de estruturas, consulte Estruturas de NET_BUFFER_LIST Derivadas.
As estruturas NET_BUFFER_LIST podem ser alocadas conforme necessário, no momento da inicialização do driver ou na função ProtocolBindAdapterEx. Um desenvolvedor de driver intermediário pode, se necessário e por motivos de desempenho, alocar várias estruturas no momento da inicialização para que ProtocolReceiveNetBufferLists tenha recursos pré-alocados para copiar dados recebidos, indicando-os a um driver de nível superior, e para que MiniportSendNetBufferLists tenha estruturas NET_BUFFER_LIST disponíveis (e possivelmente buffers) para passar os dados de envio de rede recebidos ao próximo driver inferior.
Se um driver intermediário copiar dados enviados ou recebidos para um novo buffer ou buffers, e o tamanho dos dados reais no último buffer for menor que o tamanho alocado do buffer, o driver intermediário poderá chamar NdisAdjustMdlLength para ajustar o buffer ao comprimento real dos dados.
Um driver intermediário com uma camada inferior sem conexão sempre recebe dados recebidos de um adaptador de miniporto subjacente através de sua função ProtocolReceiveNetBufferLists.
Um driver intermediário com uma extremidade inferior orientada à conexão sempre recebe dados de entrada de um miniport adapter subjacente de sua função ProtocolCoReceiveNetBufferLists.