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