Упаковка данных 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.