NET_RING構造体 (ring.h)
1 つ以上の NET_PACKET または NET_FRAGMENT 構造体で構成されるバッファーを指定します。
構文
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;
メンバーズ
OSReserved1
引っ込み思案。 クライアント ドライバーでは、この値を読み取ったり書き込んだりすることはできません。
ElementStride
1 つの要素の先頭から次の要素の先頭までの読み取り専用バイト オフセット。
((BYTE*)p + ElementStride)
を使用して、次の要素のアドレスを取得します。
NumberOfElements
リング バッファー内のパケットの数を示す読み取り専用の値。これは常に 2 の累乗であり、1 より大きい値です。
ElementIndexMask
インデックスを効率的にクランプして [0, NumberOfElements) をするために使用できる読み取り専用 UINT32 マスク。 クライアントはこの値を使用して、リング バッファーを囲むインデックスを計算できます。 ID (x % NumberofElements) == (x & ElementIndexMask)
を使用します。
EndIndex
クライアント ドライバーが所有する最後の要素の読み取り専用インデックスを、包括範囲 [0, NumberOfElements - 1] で指定します。
DUMMYUNIONNAME
OSReserved0 と OSReserved2 メンバーを含む共用体。
DUMMYUNIONNAME.OSReserved0
引っ込み思案。 クライアント ドライバーでは、この値を読み取ったり書き込んだりすることはできません。
DUMMYUNIONNAME.OSReserved2[4]
引っ込み思案。 クライアント ドライバーでは、この値を読み取ったり書き込んだりすることはできません。
BeginIndex
クライアント ドライバーが所有する最初の要素のインデックスを、包括範囲 [0, NumberOfElements - 1] で指定します。
NextIndex
処理が必要な次の要素のインデックスを指定します。 クライアント ドライバーでオプションで使用する場合。
Scratch
クライアント ドライバーが任意の目的で使用できるバッファーへのポインター。
Buffer[ANYSIZE_ARRAY]
ネット リング内の要素を含むバイト配列。 通常、クライアント ドライバーは、NetRingGetPacketAtIndex または NetRingGetFragmentAtIndex を呼び出して、リング バッファーの要素にアクセスします。
備考
NET_RING 構造体は汎用リング バッファーであり、単一スレッドからの効率的なアクセス用に最適化されています。 NET_RING には、NET_PACKET または NET_FRAGMENT 要素が含まれています。
パケットおよびフラグメント リング バッファーの詳細については、「パケット記述子と拡張を参照してください。
ネット リングの使用方法の詳細については、「ネット リングの概要」を参照してください。
必要条件
要件 | 価値 |
---|---|
最小 KMDF バージョン | 1.29 |
UMDF の最小バージョン を する | 2.33 |
ヘッダー | ring.h |