NET_RING 구조체(ring.h)
하나 이상의 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
한 요소의 시작부터 다음 요소의 시작 부분까지의 읽기 전용 바이트 오프셋입니다. 다음 요소의 주소를 가져오는 데 사용합니다 ((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
예약되어 있습니다. 클라이언트 드라이버는 이 값을 읽거나 써서는 안됩니다.
BeginIndex
포괄 범위 [0, NumberOfElements - 1]에서 클라이언트 드라이버가 소유한 첫 번째 요소의 인덱스를 지정합니다.
NextIndex
처리가 필요한 다음 요소의 인덱스를 지정합니다. 클라이언트 드라이버에서 선택적으로 사용합니다.
Scratch
클라이언트 드라이버가 어떤 용도로든 사용할 수 있는 버퍼에 대한 포인터입니다.
Buffer
넷 링의 요소를 포함하는 바이트 배열입니다. 일반적으로 클라이언트 드라이버는 NetRingGetPacketAtIndex 또는 NetRingGetFragmentAtIndex 를 호출하여 링 버퍼의 요소에 액세스합니다.
설명
NET_RING 구조는 단일 스레드에서 효율적으로 액세스하기 위해 최적화된 제네릭 링 버퍼입니다. NET_RING NET_PACKET 또는 NET_FRAGMENT 요소를 포함합니다.
패킷 및 조각 링 버퍼에 대한 자세한 내용은 패킷 설명자 및 확장을 참조하세요.
Net 링 사용에 대한 자세한 내용은 Net 링 소개를 참조하세요.
요구 사항
| 최소 KMDF 버전 | 1.29 |
| 헤더 | ring.h |
피드백
다음에 대한 사용자 의견 제출 및 보기