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