Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt einen Puffer an, der aus einer oder mehreren NET_PACKET oder NET_FRAGMENT Strukturen besteht.
Syntax
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;
Angehörige
OSReserved1
Reserviert. Clienttreiber dürfen diesen Wert nicht lesen oder schreiben.
ElementStride
Ein schreibgeschützter Byteoffset vom Anfang eines Elements bis zum Anfang des nächsten Elements. Verwenden Sie ((BYTE*)p + ElementStride), um die Adresse des nächsten Elements abzurufen.
NumberOfElements
Ein schreibgeschützter Wert, der die Anzahl der Pakete im Ringpuffer angibt, die immer eine Potenz von zwei und größer als eins ist.
ElementIndexMask
Eine schreibgeschützte UINT32-Maske, die verwendet werden kann, um einen Index effizient zu [0, NumberOfElements). Der Client kann diesen Wert verwenden, um einen Index zu berechnen, der den Ringpuffer umschließt. Verwenden Sie die Identitäts-(x % NumberofElements) == (x & ElementIndexMask).
EndIndex
Gibt den schreibgeschützten Index des letzten Elements an, das dem Clienttreiber im inklusiven Bereich gehört [0, NumberOfElements - 1].
DUMMYUNIONNAME
Eine Vereinigung, die die OSReserved0 und OSReserved2 Mitglieder enthält.
DUMMYUNIONNAME.OSReserved0
Reserviert. Clienttreiber dürfen diesen Wert nicht lesen oder schreiben.
DUMMYUNIONNAME.OSReserved2[4]
Reserviert. Clienttreiber dürfen diesen Wert nicht lesen oder schreiben.
BeginIndex
Gibt den Index des ersten Elements an, das dem Clienttreiber im inklusiven Bereich gehört [0, NumberOfElements - 1].
NextIndex
Gibt den Index des nächsten Elements an, das verarbeitet werden muss. Für die optionale Verwendung durch den Clienttreiber.
Scratch
Ein Zeiger auf einen Puffer, den der Clienttreiber für jeden Zweck verwenden kann.
Buffer[ANYSIZE_ARRAY]
Ein Bytearray, das die Elemente im Netzring enthält. In der Regel ruft ein Clienttreiber NetRingGetPacketAtIndex- oder NetRingGetFragmentAtIndex- auf, um auf die Elemente des Ringpuffers zuzugreifen.
Bemerkungen
Die NET_RING-Struktur ist ein generischer Ringpuffer, der für den effizienten Zugriff über einen einzelnen Thread optimiert ist. Ein NET_RING enthält NET_PACKET oder NET_FRAGMENT Elemente.
Weitere Informationen zu Paket- und Fragmentringpuffern finden Sie unter Paketdeskriptoren und Erweiterungen.
Weitere Informationen zur Verwendung von Netzringen finden Sie unter Einführung in Netzringe.
Anforderungen
| Anforderung | Wert |
|---|---|
| Minimale KMDF-Version | 1.29 |
| Mindest-UMDF-Version | 2.33 |
| Header- | ring.h |