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


Упаковка данных NET_BUFFER

Упаковка данных была переработана в NDIS 6.0. Архитектура отправки и получения, основанная на структуре NDIS_PACKET , была заменена архитектурой, основанной на NET_BUFFER и NET_BUFFER_LIST структурах. Структура NET_BUFFER является функциональным эквивалентом структуры NDIS_PACKET. Структура NET_BUFFER определяет буфер (цепочку MDL) для сетевых данных, а также зарезервированное пространство для NDIS, драйверов протоколов и драйверов мини-портов. NET_BUFFER структуры могут быть связаны друг с другом в списке, описанном NET_BUFFER_LIST структурой. Структура NET_BUFFER_LIST также предоставляет хранилище для данных вне диапазона (OOB), которое применяется ко всем NET_BUFFER структурам в списке.

Все компоненты стека сетевых драйверов следующего поколения Майкрософт, включая транспорт TCP/IP и Winsock, используют NET_BUFFER упаковки данных. Единая упаковка данных в стеке драйверов устраняет необходимость в перепаковке данных, упрощает обработку данных и сокращает количество вызовов функций.

Для размещения старых драйверов, использующих структуры NDIS_PACKET, NDIS 6.0 преобразует NDIS_PACKET структуры в NET_BUFFER структуры и наоборот. Этот перевод является прозрачным для драйверов NDIS.

NDIS распространяет требования к заполнению данных драйвера к драйверам более высокого уровня. При выделении NET_BUFFER и NET_BUFFER_LIST структур для отправки данных драйвер более высокого уровня выделяет достаточно места для данных для размещения всех драйверов более низкого уровня в стеке. В результате драйверам более низкого уровня не нужно выделять дополнительное буферное пространство для размещения заголовков слоев. Вместо этого они могут использовать предварительно отраспределированное пространство для заполнения.

Дополнительные сведения об архитектуре NET_BUFFER см. в разделе Архитектура NET_BUFFER.