упаковка данных 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 архитектура.