NET_RING-Struktur (ring.h)
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;
Member
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, wobei immer eine Leistung von zwei und größer als eins ist.
ElementIndexMask
Eine schreibgeschützte UINT32-Maske, mit der ein Index effizient an [0, NumberOfElements] geklemmt werden kann. Der Client kann diesen Wert verwenden, um einen Index zu berechnen, der den Ringpuffer umschließt. Verwenden Sie die Identität (x % NumberofElements) == (x & ElementIndexMask)
.
EndIndex
Gibt den schreibgeschützten Index des letzten Elements an, das dem Clienttreiber im inklusiven Bereich [0, NumberOfElements - 1] gehört.
DUMMYUNIONNAME
Eine Union, die die Mitglieder OSReserved0 und OSReserved2 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 im Besitz des Clienttreibers im inklusiven Bereich [0, NumberOfElements - 1] an.
NextIndex
Gibt den Index des nächsten Elements an, das verarbeitet werden muss. Zur optionalen 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.
Hinweise
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 |
---|---|
KMDF-Mindestversion | 1.29 |
UMDF-Mindestversion | 2.33 |
Kopfzeile | ring.h |