Доброго времени суток! Как в режиме ядра отключить\включить сетевой интерфейс? По сути требуется в определенное время накрывать всю сетевую активность интерфейса, пакеты фильтровать не нужно. Причем желательно универсальный метод для ОС от XP до Win7. Опыта написания TDI фильтра еще не было, есть ли вариант более простого решения?
написать простой фильтр, который будет комплитить все запросы с STATUS_ACCESS_DENIED. либо на TDI, либо на afd вешаться.
а что если удалить симв. ссылку, ну или и ссылку и девайс, или вообще попытаться выгрузить драйвер?))) что-то мне подсказывает, что фильтр - самое простое и надежное решение)))
http://www.wasm.ru/forum/viewtopic.php?id=35781 хотелось решить задачу только документированными возможностями, получается для ОС ниже Виста TDI фильтр, на ОС выше с помощью NPI
TDI-фильтр решит твою проблему на всех существующих системах. Даже думать не надо. Закройте уже тему кто-нибудь.
можно найти у своего сетевого адаптера в его ресурсах диапазон I/O и затем дать ему какую нить команду закрыться
см. IOCTL_PF_SET_EXTENSION_POINTER об Firewall-Hook Driver http://www.codeproject.com/KB/IP/FwHookDrv.aspx
а если усложнить задача, и скажем что какой то интерфейс должен жить? то и есть на компьютере несколько сетевых интерфейсов и надо оставить один, а все остальные опустить ? И что бы не кто не мог поднять(ну хотя бы что бы это было сложно)....
int2eh IOCTL_PF_SET_EXTENSION_POINTER простое решение, но боюсь не подойдет, так как только один драйвер может воспользоваться и мой хук могут легко снять другие продукты
ZwLoadDriver возвращает STATUS_INVALID_DEVICE_REQUEST IoCallDriver с IRP_MN_REMOVE_DEVICE вешает систему (код вроде бы правильный, так как IRP_MN_QUERY_REMOVE_DEVICE корректно отрабатывает) Можно немного поподробнее?
Marik Поможет пример кода из MSDN 2003 “HOWTO: Get Configuration and Location Information of PCI Device”. PSS ID Number: 253232. Например, ReadWriteConfigSpace(DeviceObject, 0, (PVOID)&config, 0, sizeof(PCI_COMMON_CONFIG)); и там см. PCI_COMMON_CONFIG::u.type0.BaseAddresses[0], причем там базовый адрес Диапазона I/O адаптера может быть больше на +1 (так $M защищается от... хакеров) или во втором примере того кода см. PBUS_INTERFACE_STANDARD.
x64 Вы правы без TDI фильтра ни как не обойтись. Скачал себе несколько примеров реализации (http://sourceforge.net/projects/tdifw/). В принципе все понятно, но фильтруется по ip адресам, т.е. есть информация откуда, куда, какой процесс... тот же TDImon например не показывает сетевой интерфейс (http://www.symcod.com/sniffers/) Как узнать к какому интерфейсу принадлежит запрос?