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


Отправка пакетов из минипорт-драйвера CoNDIS WAN

Драйвер верхнего уровня вызывает NdisCoSendNetBufferLists для отправки пакетов сетевых данных в базовый драйвер минипорта CoNDIS WAN в списке структур NET_BUFFER_LIST. Промежуточный драйвер NDISWAN перенаправит эти NET_BUFFER_LIST структуры из драйвера верхнего уровня. NDISWAN перепаковывает структуры перед отправкой. NDISWAN перенаправит пакеты в новых структурах NET_BUFFER_LIST.

Промежуточный драйвер NDISWAN вызывает NDIS для пересылки новых структур NET_BUFFER_LIST, NDIS вызывает функцию miniport driver WAN MiniportCoSendNetBufferLists.

Драйвер минипорта CoNDIS WAN владеет как структурами NET_BUFFER_LIST, так и связанными данными до завершения отправки. Чтобы завершить запрос на отправку, драйвер минипорта должен позже вызвать NdisMSendNetBufferListsComplete.

Вызов завершения не обязательно указывает на передачу сетевых данных; однако за исключением интеллектуальных сетевых адаптеров, сетевые данные обычно передаются. Однако вызов завершения указывает, что драйвер минипорта готов освободить владение NET_BUFFER_LIST структур.

После получения драйвера минипорта CoNDIS WAN NET_BUFFER_LIST структуры, содержащей пакет сетевых данных, он должен отправлять пакет на активное виртуальное подключение (VC).

Драйвер минипорта CoNDIS WAN указывает количество невыполненных пакетов, которые он может иметь на VC в члене MaxSendWindow структуры NDIS_WAN_CO_INFO. Драйвер минипорта предоставляет эту структуру, когда драйвер минипорта отвечает на запрос OID_WAN_CO_GET_INFO от драйвера протокола. Однако минипорт-драйвер может динамически настраивать это число и на основе каждого VC с помощью элемента SendWindow в структуре WAN_CO_LINKPARAMS . Минипорт-драйвер передает эту структуру функции NdisMCoIndicateStatusEx . NDISWAN использует текущее значение SendWindow в качестве ограничения на невыполненные отправки. Минипорт-драйвер может задать значение элемента SendWindow равным нулю, чтобы указать, что он не может обрабатывать невыполненные пакеты. То есть, если для элемента SendWindow задано значение нулю, окно отправки завершается, а NDISWAN останавливает отправку пакетов для конкретного VC.

Пакеты, отправляемые драйвером мини-порта глобальной сети, содержат простые кадры PPP HDLC, если настроена рама PPP. Для обрамления S пакет интерфейса пользователя или RAS пакеты содержат только часть данных без обрамления. Дополнительные сведения о обрамления пакетов глобальной сети см. в статье об обрамления пакетов глобальной сети.

Драйвер мини-порта глобальной сети не должен пытаться обеспечить обратный цикл программного обеспечения или безудержительный цикл в режиме. Оба этих типа обратного цикла полностью поддерживаются драйвером NDISWAN.