Драйверы мини-портов

Драйвер мини-порта NDIS имеет две основные функции:

  • Управление сетевым интерфейсом карта (NIC), включая отправку и получение данных через сетевую карту.

  • Взаимодействие с драйверами более высокого уровня, такими как драйверы фильтров, промежуточные драйверы и драйверы протокола.

Драйвер мини-порта взаимодействует со своими сетевыми адаптерами и драйверами более высокого уровня через библиотеку NDIS. Библиотека NDIS экспортирует полный набор функций (NdisMXxx и другие функции NdisXxx ), которые инкапсулируют все функции операционной системы, которые должен вызывать драйвер мини-порта. Драйвер мини-порта, в свою очередь, должен экспортировать набор точек входа (функции MiniportXxx), которые NDIS вызывает для собственных целей или от имени драйверов более высокого уровня для доступа к драйверу мини-порта.

Примечание

Дополнительные сведения о стеке драйверов NDIS и схема, показывающая связь между всеми четырьмя типами драйверов NDIS, см. в разделе Стек драйверов NDIS.

Следующие операции отправки и получения иллюстрируют взаимодействие драйверов мини-порта с NDIS и драйверами более высокого уровня.

  • Когда драйвер транспорта имеет пакет для передачи, он вызывает функцию NdisXxx , экспортированную библиотекой NDIS. Затем NDIS передает пакет драйверу мини-порта, вызывая соответствующую функцию MiniportXxx, экспортированную драйвером мини-порта. Затем драйвер мини-порта перенаправит пакет на сетевой адаптер для передачи, вызывая соответствующие функции NdisXxx .

  • Когда сетевой адаптер получает пакет, адресованный себе, он может опубликовать аппаратное прерывание, которое обрабатывается NDIS или драйвером мини-порта сетевой карты. NDIS уведомляет драйвер мини-порта сетевой карты, вызывая соответствующую функцию MiniportXxx . Драйвер мини-порта настраивает передачу данных с сетевого адаптера, а затем указывает на наличие полученного пакета для привязанных драйверов более высокого уровня, вызывая соответствующую функцию NdisXxx .

Драйверы мини-портов без подключения и Connection-Oriented

NDIS поддерживает драйверы мини-портов как для сред без подключения, так и для сред, ориентированных на подключение.

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

Примечание Все драйверы NDIS 6.0 и более поздних версий десериализируются.

  • Десериализованные драйверы сериализуют работу собственных функций MiniportXxx и внутренне помещают в очередь все входящие пакеты отправки. Это приводит к значительно более высокой полнодуплексной производительности при условии, что критически важные разделы драйвера (код, который может выполняться только один поток за раз) сохраняются небольшими.

  • Сериализованные драйверы используют NDIS для сериализации вызовов функций MiniportXxx и управления очередями отправки.

Драйверы мини-портов, ориентированные на подключение , управляют сетевыми картами для сетевых носителей, ориентированных на подключение, таких как ISDN. Драйверы мини-портов, ориентированные на подключение, всегда десериализируются. Они всегда сериализуют работу собственных функций MiniportXxx и помещают в очередь все входящие пакеты отправки.

Драйвер мини-порта NDIS может иметь нижнюю границу, не относясь к NDIS (см. следующий рисунок).

Схема, показывающая драйвер мини-порта NDIS с нижним краем без NDIS.

В нижней части, отличной от NDIS, водитель минипорта использует интерфейс класса для шины, например универсальную последовательную шину (USB) для управления устройством в шине. Драйвер мини-порта взаимодействует с устройством, отправляя пакеты запросов ввода-вывода (IRP) в шину или непосредственно на удаленные устройства, подключенные к шине. На верхнем краю драйвера минипорта предоставляется стандартный интерфейс драйвера мини-порта NDIS, который позволяет драйверу минипорта взаимодействовать с более рывками NDIS.

NDIS Miniport Drivers

Справочник по драйверам NDIS Miniport