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