struktur NET_RING (ring.h)
Menentukan buffer yang terdiri dari satu atau beberapa struktur NET_PACKET atau NET_FRAGMENT .
Sintaks
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;
Anggota
OSReserved1
Dicadangkan. Driver klien tidak boleh membaca atau menulis ke nilai ini.
ElementStride
Offset byte baca-saja dari awal satu elemen ke awal elemen berikutnya. Gunakan ((BYTE*)p + ElementStride)
untuk mendapatkan alamat elemen berikutnya.
NumberOfElements
Nilai baca-saja yang menunjukkan jumlah paket dalam buffer cincin, yang selalu merupakan kekuatan dua, dan lebih besar dari satu.
ElementIndexMask
Masker UINT32 baca-saja yang dapat digunakan untuk menjepit indeks secara efisien ke [0, NumberOfElements). Klien dapat menggunakan nilai ini untuk menghitung indeks yang membungkus buffer cincin. Gunakan identitas (x % NumberofElements) == (x & ElementIndexMask)
.
EndIndex
Menentukan indeks baca-saja dari elemen terakhir yang dimiliki oleh driver klien dalam rentang inklusif [0, NumberOfElements - 1].
DUMMYUNIONNAME
Serikat yang berisi anggota OSReserved0 dan OSReserved2 .
DUMMYUNIONNAME.OSReserved0
Dicadangkan. Driver klien tidak boleh membaca atau menulis ke nilai ini.
DUMMYUNIONNAME.OSReserved2[4]
Dicadangkan. Driver klien tidak boleh membaca atau menulis ke nilai ini.
BeginIndex
Menentukan indeks elemen pertama yang dimiliki oleh driver klien dalam rentang inklusif [0, NumberOfElements - 1].
NextIndex
Menentukan indeks elemen berikutnya yang perlu diproses. Untuk penggunaan opsional oleh driver klien.
Scratch
Pointer ke buffer yang dapat digunakan driver klien untuk tujuan apa pun.
Buffer[ANYSIZE_ARRAY]
Array byte yang berisi elemen dalam cincin bersih. Biasanya, driver klien memanggil NetRingGetPacketAtIndex atau NetRingGetFragmentAtIndex untuk mengakses elemen buffer cincin.
Keterangan
Struktur NET_RING adalah buffer cincin generik, dioptimalkan untuk akses yang efisien dari satu utas. NET_RING berisi elemen NET_PACKET atau NET_FRAGMENT.
Untuk informasi selengkapnya tentang buffer paket dan cincin fragmen, lihat Deskriptor paket dan ekstensi.
Untuk informasi selengkapnya tentang menggunakan cincin bersih, lihat Pengantar cincin bersih.
Persyaratan
Persyaratan | Nilai |
---|---|
Versi KMDF minimum | 1.29 |
Versi UMDF minimum | 2.33 |
Header | ring.h |