Структуры сетевых данных

Сетевые данные состоят из пакетов данных, отправляемых или полученных по сети. NDIS предоставляет структуры данных для описания и упорядочивания таких данных. Основные сетевые структуры данных для NDIS 6.0 и более поздних версий:

На следующем рисунке показаны связи между этими структурами.

схема , иллюстрирующая структуры сетевых данных NDIS 6.0, включая NET_BUFFER, NET_BUFFER_LIST и NET_BUFFER_LIST_CONTEXT.

В NDIS 6.0 и более поздних версиях NET_BUFFER является основным стандартным блоком для упаковки сетевых данных. Каждая NET_BUFFER структура имеет цепочку MDL. MdLs сопоставляют адреса буферов данных с пространством данных, указанным структурами NET_BUFFER. Это сопоставление данных идентично цепочкам MDL, которые NDIS 5.x и более ранних драйверов, используемых в структуре NDIS_PACKET. NDIS предоставляет функции для управления цепочкой MDL.

К структуре NET_BUFFER_LIST можно подключить несколько структур NET_BUFFER. Структуры NET_BUFFER организованы в виде последовательного связанного списка, завершаемого значением NULL. Только драйвер, создающий структуру NET_BUFFER_LIST или NDIS, должен изменить связанный список непосредственно для вставки и удаления структур NET_BUFFER.

структуры NET_BUFFER LIST содержат сведения, описывающие все структуры NET_BUFFER, присоединенные к списку. Если драйверу требуется дополнительное пространство для контекстной информации, драйвер может хранить такие сведения в NET_BUFFER_LIST_CONTEXT структурах. NDIS предоставляет функции для выделения, освобождения и доступа к данным в структурах NET_BUFFER_LIST_CONTEXT.

Для создания списка структур NET_BUFFER_LIST можно присоединить несколько таких структур. Структуры NET_BUFFER_LIST организованы в виде последовательного связанного списка, завершаемого значением NULL. Драйверы могут изменять связанный список, непосредственно вставляя и удаляя структуры NET_BUFFER_LIST.

NET_BUFFER

Структура NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST структура

NET_BUFFER_LIST_CONTEXT

Структура NET_BUFFER_LIST_CONTEXT