Управление сетью в Windows

#windows #winapi #networking #network-traffic

#Windows #winapi #сеть #сетевой трафик

Вопрос:

Как мне управлять сетевым интерфейсом в Windows? На самом деле, идея довольно проста.

  1. Установите соединение с определенным адаптером на компьютере.

  2. Направляйте весь трафик адаптера в эту программу.

  3. Предоставьте этой программе права на то, что должно передаваться адаптеру, а что нет.

Я думаю, что программа должна реализовывать любой интерфейс сетевого адаптера Windows и быть зарегистрирована как драйвер адаптера. Таким образом, когда программа хочет передать данные на реальный адаптер, она должна вызывать методы драйвера адаптера. В свою очередь, методы реализуют тот же сетевой интерфейс Windows (или который вызывается по-другому, я действительно не знаю, надеюсь, вы понимаете смысл), не так ли?

В результате мы имеем здесь своего рода наследование. Перед использованием нашего нового драйвера: приложение Windows и сама Windows

________________________ для Windows сетевой интерфейс

ДРАЙВЕР адаптера1

________________________ конец ОС границ

Адаптер 1

Используйте наш новый драйвер: приложение Windows и саму Windows

________________________ для Windows сетевой интерфейс

наш ДРАЙВЕР

________________________ для Windows сетевой интерфейс

ДРАЙВЕР адаптера1

________________________ конец ОС границ

Адаптер 1

Я верю, что такой интерфейс существует, и я надеюсь, что он реализован очень просто.

Ответ №1:

Вероятно, вам потребуется подключить вызовы Windows API, чтобы действительно сделать это. Это возможно… Начните с поиска в Google hook API и Winternals — и посмотрите, сможете ли вы найти их пример кода.

До того, как Winternals была куплена Microsoft, они опубликовали свой код. http://technet.microsoft.com/en-us/sysinternals/bb545021

Идея заключается в следующем:

  • Вы пишете программу пользовательского режима, которая управляет драйвером вашего подключаемого устройства.
  • Драйвер вашего подключающего устройства определяет, разрешен ли сетевой трафик при заданных вызовах API.
  • Драйвер позволяет обычным вызовам API завершаться успешно, если они выполняются.

Комментарии:

1. Да… Хороший вопрос. Но есть какие-то другие, более документальные способы или более конкретные.