Partager via


structure NET_RING (ring.h)

Spécifie une mémoire tampon composée d’une ou plusieurs structures NET_PACKET ou NET_FRAGMENT.

Syntaxe

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;

Membres

OSReserved1

Réservé. Les pilotes clients ne doivent pas lire ou écrire dans cette valeur.

ElementStride

Décalage d’octet en lecture seule entre le début d’un élément et le début de l’élément suivant. Utilisez ((BYTE*)p + ElementStride) pour obtenir l’adresse de l’élément suivant.

NumberOfElements

Valeur en lecture seule qui indique le nombre de paquets dans la mémoire tampon en anneau, qui est toujours une puissance de deux et supérieure à une.

ElementIndexMask

Masque UINT32 en lecture seule qui peut être utilisé pour limiter efficacement un index à [0, NumberOfElements). Le client peut utiliser cette valeur pour calculer un index qui entoure la mémoire tampon en anneau. Utilisez l’identité (x % NumberofElements) == (x & ElementIndexMask).

EndIndex

Spécifie l’index en lecture seule du dernier élément appartenant au pilote client dans la plage inclusive [0, NumberOfElements - 1].

DUMMYUNIONNAME

Union qui contient les membres OSReserved0 et OSReserved2.

DUMMYUNIONNAME.OSReserved0

Réservé. Les pilotes clients ne doivent pas lire ou écrire dans cette valeur.

DUMMYUNIONNAME.OSReserved2[4]

Réservé. Les pilotes clients ne doivent pas lire ou écrire dans cette valeur.

BeginIndex

Spécifie l’index du premier élément appartenant au pilote client dans la plage inclusive [0, NumberOfElements - 1].

NextIndex

Spécifie l’index de l’élément suivant qui a besoin de traitement. Pour une utilisation facultative par le pilote client.

Scratch

Pointeur vers une mémoire tampon que le pilote client peut utiliser à tout usage.

Buffer[ANYSIZE_ARRAY]

Tableau d’octets qui contient les éléments de l’anneau net. En règle générale, un pilote client appelle NetRingGetPacketAtIndex ou NetRingGetFragmentAtIndex pour accéder aux éléments de la mémoire tampon en anneau.

Remarques

La structure NET_RING est une mémoire tampon d’anneau générique, optimisée pour un accès efficace à partir d’un seul thread. Un NET_RING contient des éléments NET_PACKET ou NET_FRAGMENT.

Pour plus d’informations sur les mémoires tampons d’anneau de paquets et de fragments, consultez descripteurs et extensions de paquets.

Pour plus d’informations sur l’utilisation des anneaux nets, consultez Présentation des anneaux nets.

Exigences

Exigence Valeur
version minimale de KMDF 1.29
version minimale de UMDF 2.33
d’en-tête ring.h