Поделиться через


структура 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 структуре и управления ими.

Элемент ContextData структуры NET_BUFFER_LIST_CONTEXT указывает часть данных структуры NET_BUFFER_LIST_CONTEXT. Чтобы повысить производительность системы, драйвер должен предварительно выделить любое требуемое пространство данных контекста, когда драйвер выделяет пул структуры NET_BUFFER_LIST. Чтобы предварительно выделить это пространство данных, драйвер вызывает функция NdisAllocateNetBufferListPool, а затем задает объем пространства данных, необходимого в параметре ContextSize. Предварительное размещение этого пространства данных позволяет NDIS распределить память в пути получения и отправки.
Примечание NDIS оценивает требуемое пространство данных контекста и при необходимости настраивает выделенное пространство данных в соответствии с требованиями для всего стека драйверов.
 
Элемент Offset указывает объем неиспользуемого пространства контекста в структуре NET_BUFFER_LIST_CONTEXT. Элемент смещения также указывает смещение с начала элемента 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 (include ndis.h)

См. также

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT_DATA_SIZE NET_BUFFER_LIST_CONTEXT_DATA_START NdisAllocateNetBufferListContext NdisAllocateNetBufferListPool

NdisFreeNetBufferListContext