다음을 통해 공유


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