[NDIS] Оградить стандартный протокол от обработки определенных пакетов

Тема в разделе "WASM.NT.KERNEL", создана пользователем Dian, 20 фев 2009.

  1. Dian

    Dian Member

    Публикаций:
    0
    Регистрация:
    19 июн 2008
    Сообщения:
    222
    Имеется:
    собственный NDIS протокол, принимающий определенные пакеты.

    Вопрос:
    как добиться того, чтобы другие NDIS протоколы не обрабатывали эти пакеты?
    (в первую очередь протокол стандартного драйвера TCP/IP)

    1 целевые пакеты - обычные TCP/IP (обязательно)
    2 использование NDIS IM неприемлемо
    3 хукать стандартный драйвер TCPIP - не очень красивое решение
     
  2. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    :) NDIS IM driver или NDIS hooks
     
  3. Dian

    Dian Member

    Публикаций:
    0
    Регистрация:
    19 июн 2008
    Сообщения:
    222
    Про IM написано в 1 посте, про хуки, в принципе, тоже - но другого пока ничего нет
     
  4. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    Перечитай мой ответ - другого в Windows нет. Цепочка приёма пакета достаточно проста:
    hardware -> ndis miniport -> [ndisIM -> ndisIM] -> tcp/ip (ndis protocol)

    P.S. в Vista есть NDIS filters (намного лучше API), но там ты не сможешь контролировать NDIS bindings. Зато сможешь просто "сожрать" пакет и передать своей проге через iocontrol/read/write.
     
  5. Dian

    Dian Member

    Публикаций:
    0
    Регистрация:
    19 июн 2008
    Сообщения:
    222
    Понятно, что на верхнем уровне переусложнять систему самоубийственно.
    Но
    - в каком порядке протоколы вызываются для обработки пакета?
    - может ли один протокол модифицировать данные до того, как они прийдут в другой?
     
  6. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    нет
     
  7. akim_

    akim_ New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    6
    помогите с NDIS драйвером, не получается слинковать, 10 ошибок выдает:
    ndis.obj: error LNK2019: unresolved external symbol _imp_NdisOpenAdapter@8 referensed in function _DriverEntry@8 ...
     
  8. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    В sources добавь:

    TARGETLIBS=$(DDK_LIB_PATH)\ndis.lib

    C_DEFINES=$(C_DEFINES) -DNDIS_MINIPORT_DRIVER -DNDIS_WDM=1

    C_DEFINES=$(C_DEFINES) -DNDIS51_MINIPORT=1
    C_DEFINES=$(C_DEFINES) -DNDIS51=1

    ...если ты по 5.1 спеку кодишь.
     
  9. akim_

    akim_ New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    6
    спасибо, пмогло. 2 недели парился
     
  10. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    akim_, так надо было в пример из DDK глянуть а не париться :)
     
  11. akim_

    akim_ New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    6
    Разбираю пример passthu из DDK, вот только установить его не получается :dntknw:
    может я что-то не так делаю... устанавливал с помошью instdrv
     
  12. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    akim_ ставь через control panel, network, connection, add, service
     
  13. akim_

    akim_ New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    6
    s0larian спасибо, все заработало
     
  14. akim_

    akim_ New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    6
    А есть ли способ устоновить ndis из командной стоки?
     
  15. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    NDIS IM? Есть - devcon из DDK.