Минипорт драйверы
Драйвер мини-порта NDIS имеет две основные функции:
Управление сетевой картой (сетевой картой), включая отправку и получение данных через сетевую карту.
Взаимодействие с драйверами более высокого уровня, такими как драйверы фильтров, промежуточные драйверы и драйверы протокола.
Минипорт-драйвер взаимодействует с сетевыми адаптерами и с драйверами более высокого уровня через библиотеку NDIS. Библиотека NDIS экспортирует полный набор функций (NdisMXxx и другие функции NdisXxx), которые инкапсулируют все функции операционной системы, которые должен вызывать мини-драйвер. Минипорт-драйвер, в свою очередь, должен экспортировать набор точек входа (функции MiniportXxx), которые NDIS вызывается в своих собственных целях или от имени драйверов более высокого уровня, чтобы получить доступ к минипорту.
Примечание.
Дополнительные сведения о стеке драйверов NDIS и схеме, демонстрирующую связь между всеми четырьмя типами драйверов NDIS, см. в стеке драйверов NDIS.
Следующие операции отправки и получения демонстрируют взаимодействие драйверов мини-порта с NDIS и более высоким уровнем драйверов:
Когда драйвер транспорта имеет пакет для передачи, он вызывает функцию NdisXxx, экспортируемую библиотекой NDIS. Затем NDIS передает пакет драйверу мини-порта, вызвав соответствующую функцию MiniportXxx , экспортируемую мини-драйвером. Затем мини-драйвер перенаправит пакет в сетевой адаптер для передачи, вызвав соответствующие функции NdisXxx .
Когда сетевой адаптер получает к себе пакет, он может отправлять аппаратные прерывания, которые обрабатываются NDIS или мини-драйвером сетевого адаптера. NDIS уведомляет мини-драйвер сетевого адаптера, вызвав соответствующую функцию MiniportXxx. Минипорт-драйвер настраивает передачу данных из сетевого адаптера, а затем указывает на наличие полученного пакета для привязки драйверов более высокого уровня путем вызова соответствующей функции NdisXxx .
Драйверы минипорта без подключения и подключения
NDIS поддерживает мини-драйверы как для сред без подключения, так и для сред, ориентированных на подключение.
Драйверы мини-порта без подключения управляют сетевыми адаптерами для бессерверных сетевых носителей, таких как Ethernet. Драйверы мини-порта без подключения также делятся на десериализированные и сериализованные драйверы:
Обратите внимание, что все драйверы NDIS 6.0 и более поздних версий десериализируются.
Десериализированные драйверы сериализуют операцию своих собственных функций MiniportXxx и внутренней очереди всех входящих пакетов отправки. Это приводит к значительно лучшей полно дуплексной производительности, если критически важные разделы драйвера (код, который может выполняться только один поток за раз) сохраняются небольшими.
Сериализованные драйверы используют NDIS для сериализации вызовов функций MiniportXxxx и управления очередями отправки.
Сетевые адаптеры , ориентированные на подключение, управляют сетевыми адаптерами для сетевых носителей, ориентированных на подключение, например ISDN. Драйверы минипорта, ориентированные на подключение, всегда десериализируются. Они всегда сериализуют операцию собственных функций MiniportXxxx и очереди внутри всех входящих пакетов отправки.
Драйвер минипорта NDIS может иметь нижнее крае, отличное от NDIS (см. на следующем рисунке).
Через его нижний край, отличный от NDIS, минипорт-драйвер использует интерфейс класса для шины, например универсальной последовательной шины (USB) для управления устройством на шине. Драйвер минипорта взаимодействует с устройством, отправляя пакеты запросов ввода-вывода (IRPs) в шину или непосредственно на удаленные устройства, подключенные к шине. На верхнем краю минипорт-драйвер предоставляет стандартный интерфейс драйвера мини-порта NDIS, который позволяет минипорту драйверу взаимодействовать с избыточными драйверами NDIS.