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