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 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 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.
Comentários
A estrutura NET_RING é um buffer de anel genérico, otimizado para acesso eficiente de um único thread. Uma 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 |
Cabeçalho | ring.h |
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de