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


структура 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. Элемент 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