Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
NDIS 6.0 e posteriores NET_BUFFER estruturas são análogas às estruturas NDIS_PACKET usadas pelo NDIS 5.x e drivers anteriores. Cada estrutura NET_BUFFER empacota um pacote de dados de rede.
A figura a seguir mostra os campos em uma estrutura NET_BUFFER.
A estrutura NET_BUFFER inclui uma estrutura NET_BUFFER_HEADER no membro NetBufferHeader. A estrutura NET_BUFFER_HEADER inclui uma estrutura NET_BUFFER_DATA no membro NetBufferData. Você deve usar macros NDIS para acessar NET_BUFFER membros da estrutura. Para obter uma lista completa dessas macros, consulte a página de referência da estrutura NET_BUFFER.
Alguns dos membros da estrutura NET_BUFFER são usados apenas pelo NDIS. Os membros que os drivers normalmente usam são:
ProtocolReserved
Reservado para uso por controladores de protocolo.
MiniportReservado
Reservado para uso por drivers de miniporta.
NdisPoolHandle
Especifica um identificador de pool que identifica o pool de NET_BUFFER do qual a estrutura de NET_BUFFER foi alocada.
Próxima
Especifica um ponteiro para a próxima estrutura NET_BUFFER em uma lista vinculada de estruturas NET_BUFFER. Se esta for a última estrutura NET_BUFFER na lista, este membro é NULL.
DataLength
Especifica o comprimento em bytes dos dados de rede na cadeia MDL.
DataOffset
Especifica o deslocamento, em bytes, desde o início da memória na cadeia MDL até o início dos dados de rede na cadeia MDL.
CurrentMdl
Especifica um ponteiro para o primeiro MDL que o driver atual está usando. Esse ponteiro fornece uma otimização que melhora o desempenho ignorando quaisquer MDLs que o driver atual não esteja usando.
CurrentMdlOffset
Especifica o deslocamento, em bytes, para o início do espaço de dados usado no MDL especificado pelo CurrentMdl membro da estrutura NET_BUFFER.
A figura a seguir mostra a relação entre o CurrentMdl, CurrentMdlOffset, DataOffsete DataLength membros e o espaço de dados.
O NDIS fornece funções para gerenciar o espaço de dados na cadeia MDL. A forma como os drivers usam o espaço de dados muda dinamicamente com o driver atual. Às vezes, há espaço de dados que não é usado atualmente pelo driver atual. Embora o espaço de dados não utilizado não seja utilizado no momento, ele pode conter dados válidos. Por exemplo, no caminho de recebimento, o de espaço de dados não utilizado pode conter informações de cabeçalho que foram usadas por um driver de nível inferior.
Os motoristas realizam operações de recuo e avanço para aumentar e diminuir o espaço de dados usado. Para obter mais informações sobre operações de recuo e avanço, consulte Retreat and Advance Operations.
Os seguintes termos e definições descrevem elementos do espaço de dados NET_BUFFER:
Espaço de dados usado
de espaço de dados usado contém dados que o driver atual está usando no momento atual. Os motoristas aumentam espaço de dados usado com operações de recuo e reduzem espaço de dados usado com operações antecipadas.
Espaço de dados não utilizado
O driver atual não está usando esse espaço de dados no momento atual.
Tamanho total dos dados
O tamanho total dos dados é a soma do tamanho do espaço de dados usado e espaço de dados não utilizado. Para calcular o tamanho total, adicione o DataOffset ao DataLength .
Retiro
As operações de retirada aumentam o tamanho do espaço de dados usado.
Advance
As operações antecipadas diminuem o tamanho do espaço de dados usado.