На сетевую карту пришел пакет данных, для определенности допустим, что ICMP. Как узнать, кто из драйверов его получит, кто будет обрабатывать, кто пропустит дальше, кто дропнет? Интересует примерный алгоритм получения их списка. Обратно, windows отправила некий пакет. Как выяснить, кто инициализировал отсылку и кто в ней участвовал?
Допустим, эта собака бежит там регулярно и есть возможность законфирмить ее пробежку, откатить собаку назад и даже порыться у нее в мозгах.
Squash Курите сетевую подсистемы винды. Хотяб в Руссиновиче почитайте как оно и что там (глава "Поддержка сетей").
Руссинович выкурен. Там все весьма размыто... или ориентировано на тех, кто уже имеет истинное знание
есть сомнение, что его получит драйвер устройства ??? (то есть минипорт) сетевая_карта->минипорт->драйверы_протоколов(в порядке регистрации. ну напр tcp/ip)->ну и тсп порт, то есть приложение. может я не понял вопроса?
ndis.sys точно получит. получить их список ,думаю, можно перехватом процедур этого драйвера и записью в лог, куда дальше пошел пакет.
goga2007 Воот, вы правильно поняли, но меня интересуют тонкие подробности, если их кто знает. В каком виде и через какие процедуры его получит минипорт? И ведь ndis получит его раньше минипорта, правильно? В какой очередности его получат промежуточные драйверы? Все ли драйвера протоколов его получат? Куда он пойдет по тди? Да, и есть ли вероятность, что его получит еще кто-то в обход ndis?
Я думаю, на данном этапе тебе следует открыть документацию и прочитать вообще что такое NDIS, что такое минипорты, драйвера протоколов и т.д.
Да, помимо этого я бы ещё посоветовал прочитать, что вообще такое NDIS, а то все как-то думают, что это ndis.sys и кроме протокольных драйверов там ничего нет, но NDIS это всё таки нечто большее, целая спецификация как-никак. Конечно, с точки зрения практики написания сетевых драйверов под Windows это всё может и не пригодиться, но для общего развития не помешает, я бы сказал.
вот интересная страничка (на цифирьки можно не смотреть) http://msdn.microsoft.com/en-us/library/windows/hardware/ff556916(v=VS.85).aspx а еще в иду загруженный ndis.sys. как еще нет? тогда скорее заггружаем и смотрим, как это делает он. особенно обращаем внимание на процедуру NdisMRegisterMiniportDriver. потому как лучше самого драйвера вам никто ничего не расскажет, а если расскажет, то будет недопонято, возникнут новые вопросы. пс: вы же не хотите копать траншеи. тогда копайте код.
Squash Не как не определишь, только эвристиком, что является через одно место так как NDIS является дровом другого преднозначения ... более того , информацию об запросах на получения NDIS формирует самостоятельно и отдает выше стоящему драйверу ... еще куча левелов которые весят выше NDIS и вправе убивать стек(редирект на второй поток с копированием контекста отправки данных то и есть конекта потока не будет ) вообще вам не сюды это точно!. NDIS это протокол(адаптер).. Вообщем Winsock Kernel, TDI вам туды копать..