estrutura NET_RING (ring.h)
Especifica um buffer composto por uma ou mais estruturas de NET_PACKET ou NET_FRAGMENT.
Sintaxe
typedef struct _NET_RING {
UINT16 OSReserved1;
UINT16 ElementStride;
UINT32 NumberOfElements;
UINT32 ElementIndexMask;
UINT32 EndIndex;
union {
UINT32 OSReserved0;
void *OSReserved2[4];
} DUMMYUNIONNAME;
UINT32 BeginIndex;
UINT32 NextIndex;
void *Scratch;
unsigned char Buffer[ANYSIZE_ARRAY];
} NET_RING;
Membros
OSReserved1
Reservado. Os drivers cliente não devem ler ou gravar nesse valor.
ElementStride
Um deslocamento de bytes somente leitura do início de um elemento para o início do próximo. Use ((BYTE*)p + ElementStride)
para obter o endereço do próximo elemento.
NumberOfElements
Um valor somente leitura que indica o número de pacotes no buffer de anel, que é sempre uma potência de dois e maior que um.
ElementIndexMask
Uma máscara UINT32 somente leitura que pode ser usada para fixar com eficiência um índice para [0, NumberOfElements). O cliente pode usar esse valor para calcular um índice que envolve o buffer de anel. Use o (x % NumberofElements) == (x & ElementIndexMask)
de identidade.
EndIndex
Especifica o índice somente leitura do último elemento que pertence ao driver cliente no intervalo inclusivo [0, NumberOfElements - 1].
DUMMYUNIONNAME
Um sindicato que contém os membros OSReserved0 e OSReserved2.
DUMMYUNIONNAME.OSReserved0
Reservado. Os drivers cliente não devem ler ou gravar nesse valor.
DUMMYUNIONNAME.OSReserved2[4]
Reservado. Os drivers cliente não devem ler ou gravar nesse valor.
BeginIndex
Especifica o índice do primeiro elemento pertencente ao driver cliente no intervalo inclusivo [0, NumberOfElements - 1].
NextIndex
Especifica o índice do próximo elemento que precisa de processamento. Para uso opcional pelo driver cliente.
Scratch
Um ponteiro para um buffer que o driver cliente pode usar para qualquer finalidade.
Buffer[ANYSIZE_ARRAY]
Uma matriz de bytes que contém os elementos no anel de rede. Normalmente, um driver cliente chama NetRingGetPacketAtIndex ou NetRingGetFragmentAtIndex para acessar os elementos do buffer de anel.
Observações
A estrutura NET_RING é um buffer de anel genérico, otimizado para acesso eficiente de um único thread. Um NET_RING contém elementos NET_PACKET ou NET_FRAGMENT.
Para obter mais informações sobre buffers de pacote e de anel de fragmento, consulte descritores de pacote e extensões.
Para obter mais informações sobre como usar anéis de rede, consulte Introdução aos anéis de rede.
Requisitos
Requisito | Valor |
---|---|
versão mínima do KMDF | 1.29 |
versão mínima do UMDF | 2.33 |
cabeçalho | ring.h |