Промежуточные драйверы
Как показано на следующем рисунке, промежуточные драйверы обычно размещаются между драйверами мини-портов и драйверами транспортных протоколов.
Примечание
Дополнительные сведения о стеке драйверов NDIS и схема, показывающая связь между всеми четырьмя типами драйверов NDIS, см. в разделе Стек драйверов NDIS.
Из-за своего промежуточного положения в иерархии драйверов, промежуточный драйвер должен взаимодействовать как с драйверами более лежачих протоколов, так и с базовыми драйверами мини-порта, чтобы предоставить следующие сведения:
Точки входа протокола.
На нижней границе NDIS вызывает функции ProtocolXxx для передачи запросов от базовых драйверов мини-портов. Промежуточный драйвер выглядит как драйвер протокола для базового драйвера мини-порта.
Точки входа драйвера miniport.
На верхнем краю NDIS вызывает функции MiniportXxx для передачи запросов одного или нескольких драйверов протокола. Промежуточный драйвер выглядит как драйвер мини-порта с драйвером более пропорционального протокола.
Промежуточный драйвер экспортирует подмножество функций MiniportXxx по верхнему краю. Кроме того, он экспортирует один или несколько виртуальных адаптеров, к которым могут быть привязаны драйверы протоколов. Для драйвера протокола виртуальный адаптер, экспортируемый промежуточным драйвером, представляется физическим сетевым адаптером. Когда драйвер протокола отправляет пакеты или запросы виртуальному адаптеру, промежуточный драйвер распространяет эти пакеты и запросы на базовый драйвер мини-порта. Когда базовый драйвер мини-порта указывает полученные пакеты, отвечает на запросы драйвера протокола о предоставлении информации или указывает состояние, промежуточный драйвер распространяет такие пакеты, ответы и состояние на драйверы протокола, привязанные к виртуальному адаптеру.
Промежуточные драйверы можно использовать для:
Преобразование между разными сетевыми носителями.
Балансировка передачи пакетов между несколькими сетевыми картами. Драйвер балансировки нагрузки предоставляет один виртуальный адаптер для избыточных транспортных протоколов и распределяет пакеты отправки между несколькими сетевыми картами.