estrutura NET_BUFFER (ndis/nbl.h)
A estrutura NET_BUFFER especifica dados transmitidos ou recebidos pela rede.
Sintaxe
typedef struct _NET_BUFFER {
union {
struct {
NET_BUFFER *Next;
MDL *CurrentMdl;
ULONG CurrentMdlOffset;
union {
ULONG DataLength;
SIZE_T stDataLength;
};
MDL *MdlChain;
ULONG DataOffset;
};
SLIST_HEADER Link;
NET_BUFFER_HEADER NetBufferHeader;
};
USHORT ChecksumBias;
USHORT Reserved;
NDIS_HANDLE NdisPoolHandle;
PVOID NdisReserved[2];
PVOID ProtocolReserved[6];
PVOID MiniportReserved[4];
PHYSICAL_ADDRESS DataPhysicalAddress;
union {
NET_BUFFER_SHARED_MEMORY *SharedMemoryInfo;
SCATTER_GATHER_LIST *ScatterGatherList;
};
} NET_BUFFER, *PNET_BUFFER;
Membros
Next
Um ponteiro para a próxima estrutura NET_BUFFER em uma lista vinculada de estruturas de NET_BUFFER. Se essa estrutura for a última estrutura NET_BUFFER na lista, esse membro será NULL.
CurrentMdl
Um ponteiro para o primeiro MDL que o driver atual está usando. Esse membro fornece uma otimização que melhora o desempenho ignorando quaisquer MDLs que o driver atual não esteja usando.
CurrentMdlOffset
O deslocamento, em bytes, para o início do espaço de dados usado no MDL especificado pelo membro CurrentMdl .
DataLength
O comprimento, em bytes, do espaço de dados usado na cadeia de MDL. O comprimento máximo é 0xFFFFFFFF bytes.
stDataLength
O comprimento, em bytes, do espaço de dados usado na cadeia de MDL. O comprimento máximo é 0xFFFFFFFF bytes. Esse membro é o mesmo que DataLength, mas seu tipo é SIZE_T em vez de ULONG.
MdlChain
Um ponteiro para uma lista vinculada de MDLs que mapeiam um buffer de dados. O buffer de dados armazena os dados de rede.
DataOffset
O deslocamento, em bytes, desde o início da cadeia de MDL até o início dos dados de rede na cadeia de MDL. Esse deslocamento também é o tamanho, em bytes, do espaço de dados não utilizado.
Link
Reservado para NDIS.
NetBufferHeader
Uma estrutura NET_BUFFER_HEADER . Essa é uma duplicata da união acima, por motivos de compatibilidade.
ChecksumBias
O número de bytes a serem ignoradas desde o início do buffer de dados ao calcular uma soma de verificação. Esse membro é usado pelo protocolo TCP/IP.
Reserved
Reservado para uso futuro.
NdisPoolHandle
Um identificador de pool que identifica o pool de NET_BUFFER do qual a estrutura NET_BUFFER foi alocada.
NdisReserved[2]
Reservado para NDIS.
ProtocolReserved[6]
Reservado para uso por drivers de protocolo. Os drivers de protocolo e os drivers intermediários do NDIS podem usar essa área para suas próprias finalidades. Os drivers intermediários só poderão usar esse membro se ele ainda não estiver em uso.
MiniportReserved[4]
Reservado para uso por miniportores. Os drivers de miniport e os drivers intermediários do NDIS podem usar essa área para suas próprias finalidades.
DataPhysicalAddress
SharedMemoryInfo
Um ponteiro para um NET_BUFFER_SHARED_MEMORY estrutura.
ScatterGatherList
A estrutura SCATTER_GATHER_LIST descreve uma lista de dispersão/coleta para DMA.
Comentários
Os drivers NDIS podem chamar as seguintes funções para alocar e inicializar uma estrutura de NET_BUFFER:
Os drivers NDIS podem chamar o Função NdisAllocateNetBufferListPool e, em seguida, defina o membro fAllocateNetBuffer da estrutura NET_BUFFER_LIST_POOL_PARAMETERS como TRUE ao alocar um pool de estrutura NET_BUFFER_LIST . Nesse caso, uma estrutura de NET_BUFFER é pré-alocada com cada estrutura NET_BUFFER_LIST que o driver aloca do pool.Encadeados a cada estrutura NET_BUFFER são um ou mais descritores de buffer que mapeiam buffers que contêm dados de pacotes de rede. Esses descritores de buffer são especificados como uma cadeia de MDL no membro NetBufferHeader . Esses dados de pacote de rede foram recebidos ou serão transmitidos.
Para acessar espaço de dados adicional na cadeia de MDL, os drivers NDIS podem chamar as seguintes funções:
Normalmente, os drivers NDIS usam os membros MiniportReserved ou ProtocolReserved da estrutura NET_BUFFER para manter NET_BUFFER informações de contexto de estrutura.Para obter mais informações sobre como usar buffers de rede, consulte Arquitetura de NET_BUFFER.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte no NDIS 6.0 e posterior. |
Cabeçalho | ndis/nbl.h (inclua ndis.h) |
Confira também
NET_BUFFER_LIST_POOL_PARAMETERS
NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool NdisMSendNetBufferListsComplete NdisRetreatNetBufferDataStart NdisRetreatNetBufferListDataStart