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


Общие сведения о драйверах протокола NDIS

Драйвер протокола NDIS экспортирует набор функций ProtocolXxx на его нижнем крае. Такой драйвер протокола взаимодействует с NDIS для отправки и получения сетевых данных. Драйвер протокола привязывается к базовому драйверу miniport или промежуточному драйверу, который экспортирует интерфейс MiniportXxx на верхнем краю.

Примечание Верхний край драйвера мини-порта промежуточного драйвера (виртуальный минипорт) не управляет физическими устройствами. Базовые драйверы мини-порта управляют физическими устройствами.

Драйверы протокола всегда используют функции, предоставляемые NDIS, для взаимодействия с базовыми драйверами NDIS для отправки и получения сетевых данных. Например, драйвер протокола с нижним краем без подключения (который взаимодействует с базовыми драйверами для носителя без подключения, например Ethernet), должен вызывать NdisSendNetBufferLists для отправки сетевых данных в базовый драйвер NDIS. Драйвер протокола может вызывать NdisOidRequest для запроса или задания идентификаторов OID, поддерживаемых базовыми драйверами без подключения. Драйвер протокола с нижним краем, ориентированным на подключение (который взаимодействует с базовыми драйверами для носителя, ориентированного на подключение, например ISDN), должен вызывать NdisCoSendNetBufferLists для отправки сетевых данных в драйвер NDIS более низкого уровня. Он также может вызывать NdisCoOidRequest для запроса или задания идентификаторов OID, поддерживаемых базовыми драйверами, ориентированными на подключение.

NDIS также предоставляет набор функций NdisXxx , которые скрывают сведения о базовой операционной системе. Например, драйвер протокола может вызвать NdisInitializeEvent , чтобы создать событие для синхронизации, и NdisInitializeListHead для создания связанного списка. Драйверы протоколов, использующие версии NDIS таких функций, более переносимы в операционных системах Майкрософт. Однако драйверы протоколов также могут вызывать подпрограммы поддержки режима ядра, такие как IoCreateDevice. Дополнительные сведения см. в разделе Сводка процедур поддержки Kernel-Mode.

Разработчики драйверов протоколов должны использовать те же рекомендации по программированию , которые применяются к другим драйверам NDIS.