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


Обслуживание стека сетевых интерфейсов

NDIS предоставляет службы для обслуживания таблицы стека интерфейса (ifStackTable в RFC 2863). NDIS поддерживает таблицу стека для мини-адаптеров NDIS, NDIS 5.x фильтрующих промежуточных драйверов и модулей фильтров NDIS. NDIS также предоставляет службы, позволяющие драйверам NDIS добавлять и удалять записи в этой таблице. Для промежуточных драйверов MUX NDIS не имеет доступа к связи между интерфейсом виртуального минипорта и нижним интерфейсом протокола. Поэтому промежуточные драйверы NDIS 6.0 MUX должны указывать эти внутренние связи интерфейса.

Чтобы определить отношение стека между двумя интерфейсами, любой драйвер NDIS может передать параметры HigherLayerIfIndex и LowerLayerIfIndex в функцию NdisIfAddIfStackEntry. Эти параметры указывают один сетевой интерфейс, который должен быть выше в стеке сетевых интерфейсов и один сетевой интерфейс, который должен быть ниже в стеке.

Драйвер, имеющий сведения о порядке стека для интерфейса, связанного с другим интерфейсом (например, внутренние привязки в промежуточном драйвере MUX, который не отображается для NDIS), вызывает NdisIfAddIfStackEntry для заполнения таблицы стека интерфейса. Эта функция возвращает NDIS_STATUS_SUCCESS, если запись стека успешно выполнена. Как правило, компонент, принадлежащий или являющийся поставщиком интерфейса для интерфейса более высокого уровня (который HigherLayerIfIndex идентифицирует) вызывает NdisIfAddIfStackEntry.

Чтобы удалить запись таблицы стека, драйвер передает параметры HigherLayerIfIndex и LowerLayerIfIndex в функцию NdisIfDeleteIfStackEntry.

Пример обслуживания стека интерфейса см. в примере драйвера MUX 6.0.