estrutura NET_RING (ring.h)
Especifica um buffer composto por uma ou mais estruturas 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 de 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 anéis, 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 a [0, NumberOfElements). O cliente pode usar esse valor para calcular um índice que envolve o buffer de anéis. Use a identidade (x % NumberofElements) == (x & ElementIndexMask)
.
EndIndex
Especifica o índice somente leitura do último elemento que pertence ao driver cliente no intervalo inclusivo [0, NumberOfElements - 1].
DUMMYUNIONNAME
Uma união que contém os membros OSReserved0 e OSReserved2 .
DUMMYUNIONNAME.OSReserved0
Reservado. Os drivers de cliente não devem ler ou gravar nesse valor.
DUMMYUNIONNAME.OSReserved2[4]
Reservado. Os drivers de 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 do cliente.
Scratch
Um ponteiro para um buffer que o driver do 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 de cliente chama NetRingGetPacketAtIndex ou NetRingGetFragmentAtIndex para acessar os elementos do buffer de anéis.
Comentários
A estrutura NET_RING é um buffer de anéis 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 pacotes e anéis 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 |