NET_BUFFER_LIST_CONTEXT 구조체(ndis/nbl.h)

NET_BUFFER_LIST_CONTEXT 구조체는 NET_BUFFER_LIST 구조에 대한 컨텍스트 정보를 저장합니다.

구문

typedef struct _NET_BUFFER_LIST_CONTEXT {
  NET_BUFFER_LIST_CONTEXT *Next;
  USHORT                  Size;
  USHORT                  Offset;
  UCHAR                   ContextData[];
} NET_BUFFER_LIST_CONTEXT, *PNET_BUFFER_LIST_CONTEXT;

멤버

Next

연결된 NET_BUFFER_LIST_CONTEXT 구조 목록의 다음 NET_BUFFER_LIST_CONTEXT 구조체에 대한 포인터입니다.

Size

사용된 컨텍스트 공간과 사용되지 않는 컨텍스트 공간을 포함하여 NET_BUFFER_LIST_CONTEXT 구조의 전체 컨텍스트 공간 크기(바이트)입니다.

Offset

컨텍스트 데이터 버퍼의 시작부터 NET_BUFFER_LIST_CONTEXT 구조의 컨텍스트 데이터 시작까지의 오프셋(바이트)입니다. Offset 멤버는 NET_BUFFER_LIST_CONTEXT 구조체에서 사용되지 않는 컨텍스트 공간의 크기(바이트)도 지정합니다.

ContextData

컨텍스트 데이터 버퍼입니다. 컨텍스트 데이터에는 드라이버에 필요한 모든 정보가 포함될 수 있습니다.

설명

모든 NET_BUFFER_LIST 구조에는 미리 할당된 NET_BUFFER_LIST_CONTEXT 구조가 포함될 수 있습니다. NET_BUFFER_LIST 구조체가 드라이버 스택을 통과하면 연결된 NET_BUFFER_LIST_CONTEXT 구조 목록이 확장되어 각 드라이버에 대한 추가 데이터 공간을 수용할 수 있습니다.

드라이버는 다음 NDIS 매크로 및 함수를 사용하여 NET_BUFFER_LIST_CONTEXT 구조의 멤버에 액세스하고 조작해야 합니다.

NET_BUFFER_LIST_CONTEXT 구조체의 ContextData 멤버는 NET_BUFFER_LIST_CONTEXT 구조체의 데이터 부분을 지정합니다. 시스템 성능을 향상시키기 위해 드라이버는 NET_BUFFER_LIST 구조체 풀을 할당할 때 필요한 컨텍스트 데이터 공간을 미리 할당해야 합니다. 이 데이터 공간을 미리 할당하기 위해 드라이버는 NdisAllocateNetBufferListPool 함수를 호출한 다음 ContextSize 매개 변수에 필요한 데이터 공간의 양을 지정합니다. 이 데이터 공간을 미리 할당하면 수신 및 송신 경로의 메모리 할당에서 NDIS가 저장됩니다.
참고 NDIS는 필요한 컨텍스트 데이터 공간을 예측하고 필요한 경우 전체 드라이버 스택에 대한 요구 사항을 충족하도록 할당된 데이터 공간을 조정합니다.
Offset 멤버는 NET_BUFFER_LIST_CONTEXT 구조에서 사용되지 않는 컨텍스트 공간의 양을 지정합니다. Offset 멤버는 또한 ContextData 멤버의 시작부터 사용된 컨텍스트 데이터 공간의 시작 부분까지의 오프셋을 나타냅니다.

NDIS 드라이버는 NdisAllocateNetBufferListContext 함수를 호출하여 NET_BUFFER_LIST_CONTEXT 구조체에 연속 버퍼 공간을 할당합니다. 필요한 경우 NDIS는 요청을 준수하기 위해 추가 공간이 있는 새 NET_BUFFER_LIST_CONTEXT 구조를 할당합니다. NDIS 드라이버는 NdisFreeNetBufferListContext 함수를 호출하여 버퍼 공간을 확보합니다.

NET_BUFFER_LIST_CONTEXT_DATA_SIZE 매크로를 사용하여 사용된 컨텍스트 공간의 크기를 가져옵니다. NET_BUFFER_LIST_CONTEXT_DATA_START 매크로를 사용하여 사용된 컨텍스트 공간의 시작 주소를 가져옵니다.

순 버퍼를 사용하는 방법에 대한 자세한 내용은 NET_BUFFER 아키텍처를 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 NDIS 6.0 이상에서 지원됩니다.
헤더 ndis/nbl.h(ndis.h 포함)

참고 항목

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT_DATA_SIZE

NET_BUFFER_LIST_CONTEXT_DATA_START

NdisAllocateNetBufferListContext

NdisAllocateNetBufferListPool

NdisFreeNetBufferListContext