Собственно, как и обещал, начинаю цикл статей о подсистеме NDIS и о том, что с ней связано. Решил связать его с процессом собственного обучения на своей первой работе. Если цикла не получится, значит меня загрузили по самые уши, или вообще уволился.
Вступление
Для чего, вообще этот NDIS? Зачем его придумали, если и всё и так хорошо?
NDIS — это одна из подсистем ядра Windows, которая имеет прямое отношение к спектру начиная от драйверов сетевых карт и заканчивая интерфейсами для протоколов сетевого уровня. NDIS состоит из т.н. стека драйверов (хотя, как по мне, так это никакой не стек, а очередь), но для общего понимания лучше представлять себе это так:
Хорошо, но мне этого мало!
Если копнуть поглубже, то NDIS состоит из обязательной части — самого себя (файл NDIS.SYS), и теоретически неограниченного количества пользовательских драйверов, которые этот самый NDIS.SYS оборачивает. При этом драйвер, обязан выполнить некоторые действия, чтобы подсистема NDIS вообще посчитала его местным, и смогла интегрировать в свой «стек», который очередь. Минимальные условия это:
Драйвер должен себя зарегистрировать. Это означает то, что драйвер при загрузке указывает ядру, чтО он есть на самом деле и какого он типа;
Драйвер должен предоставлять минимальный набор интерфейсных функций, которые он предоставляет NDIS'у. Собственно, за эти функции NDIS и будет тягать этот самый драйвер;
Так же драйвер дожен, в зависимости от своего типа, реализовать функции управления собой, которые так же тягаются во время выполнения. Отличие от предыдущего пункта в том, что эти функции для каждого типа драйвера уникальные.
Все эти драйверы делятся на несколько типов, а именно:
Драйверы минипорта;
Драйверы протокола;
Промежуточные драйверы;
Драйверы-фильтры.
Зачастую на практике пишутся драйверы-фильтры и промежуточные драйверы, т.к. в остальных потребность есть у небольшого круга компаний выпускающих собственные сетевые решения. Во времена XP разработчики часто использовали промежуточные драйверы (потому, что фильтров не было), начиная с Windows Vista лучше использовать фильтры, т.к. они проще в своём устройстве и основную функцию (а для нас это практически во всех случаях — модификация трафика) выполняют «на ура». Итак, как мы помним, «сверху» NDIS'a у нас протоколы (IP, IPX, ARP, RARP, etc.), а снизу сетевые карты. На этом промежутке мы будем выполнять свои магические заклинания над трафиком.
Read more: Habrahabr.ru
Вступление
Для чего, вообще этот NDIS? Зачем его придумали, если и всё и так хорошо?
NDIS — это одна из подсистем ядра Windows, которая имеет прямое отношение к спектру начиная от драйверов сетевых карт и заканчивая интерфейсами для протоколов сетевого уровня. NDIS состоит из т.н. стека драйверов (хотя, как по мне, так это никакой не стек, а очередь), но для общего понимания лучше представлять себе это так:
Хорошо, но мне этого мало!
Если копнуть поглубже, то NDIS состоит из обязательной части — самого себя (файл NDIS.SYS), и теоретически неограниченного количества пользовательских драйверов, которые этот самый NDIS.SYS оборачивает. При этом драйвер, обязан выполнить некоторые действия, чтобы подсистема NDIS вообще посчитала его местным, и смогла интегрировать в свой «стек», который очередь. Минимальные условия это:
Драйвер должен себя зарегистрировать. Это означает то, что драйвер при загрузке указывает ядру, чтО он есть на самом деле и какого он типа;
Драйвер должен предоставлять минимальный набор интерфейсных функций, которые он предоставляет NDIS'у. Собственно, за эти функции NDIS и будет тягать этот самый драйвер;
Так же драйвер дожен, в зависимости от своего типа, реализовать функции управления собой, которые так же тягаются во время выполнения. Отличие от предыдущего пункта в том, что эти функции для каждого типа драйвера уникальные.
Все эти драйверы делятся на несколько типов, а именно:
Драйверы минипорта;
Драйверы протокола;
Промежуточные драйверы;
Драйверы-фильтры.
Зачастую на практике пишутся драйверы-фильтры и промежуточные драйверы, т.к. в остальных потребность есть у небольшого круга компаний выпускающих собственные сетевые решения. Во времена XP разработчики часто использовали промежуточные драйверы (потому, что фильтров не было), начиная с Windows Vista лучше использовать фильтры, т.к. они проще в своём устройстве и основную функцию (а для нас это практически во всех случаях — модификация трафика) выполняют «на ура». Итак, как мы помним, «сверху» NDIS'a у нас протоколы (IP, IPX, ARP, RARP, etc.), а снизу сетевые карты. На этом промежутке мы будем выполнять свои магические заклинания над трафиком.
Read more: Habrahabr.ru