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


Указание полученных кадров Ethernet

Драйвер протокола TCP/IP для Windows предъявляет ряд требований к приему кадров Ethernet. Любой драйвер, который является источником, получает признаки кадров Ethernet или модифицирует получение признаков базовых драйверов, должен поддерживать общие требования, которые предъявляет TCP/IP. К этим драйверам относятся драйверы ethernet miniport, промежуточные драйверы MUX и драйверы фильтров.

Примечание Если драйвер не соответствует этим требованиям, превышение драйверов (таких как транспорт TCP/IP, промежуточные драйверы мультиплексирования и драйверы фильтров) может вести себя непредсказуемо.

Драйверы, которые являются источниками данных о получении Ethernet, должны поддерживать следующие требования:

  • Драйвер должен выделить структуру NET_BUFFER_LIST для полученного кадра Ethernet. Каждая структура NET_BUFFER_LIST должна включать данные вне диапазона (OOB), определенные в элементе NetBufferListInfoNET_BUFFER_LIST , необходимых для конкретного использования.

  • Драйвер должен выделить NET_BUFFER структуру для кадра и связать ее со структурой NET_BUFFER_LIST . При указании полученных данных минипорт Ethernet должен назначить ровно одну NET_BUFFER структуру NET_BUFFER_LIST . Это ограничение применяется только к пути получения Ethernet. Это неприменимо к другим типам носителей, таким как собственный интерфейс беспроводной локальной сети 802.11. или NDIS в целом.

  • Начиная с NDIS 6.1, в некоторых сценариях структура NET_BUFFER может быть связана с несколькими списками дескрипторов памяти (MDL) для полученного кадра Ethernet. Несмотря на то, что структура NET_BUFFER_LIST должна содержать одну NET_BUFFER структуру, использование нескольких многомерных выражений позволяет драйверу разделить полученные данные пакетов на отдельные буферы.

    Например, драйверы Ethernet, поддерживающие интерфейс разделения заголовков и данных, разделяют полученный кадр Ethernet, используя связанный список нескольких многомерных библиотек, связанных с одной NET_BUFFER структурой. Дополнительные сведения см. в разделе Разделение заголовков и данных.

    Для простоты и производительности настоятельно рекомендуется, чтобы драйверы, которые не поддерживают разделение заголовков и данных, использовали только один MDL для каждой структуры NET_BUFFER .

    Примечание В NDIS 6.0 для Windows Vista каждая структура NET_BUFFER должна содержать только один MDL.

  • Драйверы не должны разделять полученные кадры Ethernet в середине ip-заголовка, параметров IPv4, заголовков IPsec, заголовков расширения IPv6 или заголовков протокола верхнего уровня, если только первый MDL содержит по крайней мере столько байтов, сколько NDIS указано для размера lookahead.

Драйверы протокола NDIS и фильтров должны поддерживать разделенные кадры Ethernet в индикаторах получения, если такие разделенные кадры соответствуют ограничениям, определенным в предыдущем элементе списка. Ограничения гарантируют совместимость драйверов протокола и фильтров с будущими версиями Windows.