Suporte à divisão de Header-Data em drivers de protocolo e drivers de filtro

Drivers de protocolo NDIS 6.0 e posteriores e drivers de filtro devem dar suporte a indicações de recebimento com o cabeçalho e os dados em buffers não contíguos.

Você não deve assumir que há apenas um único MDL em uma estrutura NET_BUFFER . Drivers de protocolo e drivers de filtro não são necessários para fazer nada específico para dar suporte ao registro de divisão de dados de cabeçalho. No entanto, o código de tratamento de recebimento do driver deve lidar com mais de um MDL na cadeia de MDL e deve usar as seguintes macros de MDL do NDIS para acessar a cadeia de MDL:

Com buffers divididos, o comprimento de dados associado à estrutura NET_BUFFER (no membro DataLength da estrutura NET_BUFFER_DATA ) é dividido entre vários MDLs. Por exemplo, se um driver de protocolo tentasse acessar todo o buffer de dados no primeiro MDL, o driver poderia acessar dados inválidos.

Nota Depois que a chamada de indicação de recebimento retornar a um driver de miniporto, o driver de miniporto poderá recuperar os MDLs de cabeçalho. Os drivers em excesso ou seus clientes não devem acessar os MDLs de cabeçalho após a chamada de indicação de recebimento retornar ao driver de miniporto. Essa restrição também se aplica mesmo quando o driver de miniporta não está indicando os dados recebidos com uma status de NDIS_RECEIVE_FLAGS_RESOURCES.