У меня есть протокольный драйвер. По идее он должен слушать все подключенные сетевые адаптеры. То есть при включении адаптера драйвер должен связываться с ним. насколько я понимаю, нужно юзать PnPEvent'ы. не совсем понятно каким образом мой драйвер узнает имя включаемого адаптера чтобы вызвать NdisOpenAdapter.. PNET_PNP_EVENT такой информации, вроде, не содержит. насколько правильны мои догадки про PnP и как узнать имя адаптера?
Протоколы поддерживающие NDIS 4.0 или 5.0 должны обязательно регистрировать ф. ProtocolBindAdapter. Устанавливать такой драйвер следует через inf файл. В этом случае система при включении адаптера сама предложит вашему драйверу связаться с ним. Как раз по- средством этой функции: в нее будет передано имя, которое можно использовать в вызове NdisOpenAdapter. Тонкости ее реализации можно посмотреть в самплах WDK.
понятно. в примерах есть такая штука. насколько я понимаю, мне нужно написать что-то подобное. вот только с инсталяцией слишком всё замудрено получается. во-первых нужно бы как-то автоматизировать процесс установки, а во-вторых, мне вообще не хотелось бы палить свой драйвер и прописывать его в реестр.
1) Автоматизировать процесс установки - не проблема. Есть SetupAPI, для NDIS драйверов есть еще INetCfg ( написать для NDIS драйвера инсталяцию только на SetupAPI - на мой взгляд затруднительно ). 2) Если не хотите инсталлировать драйвер в NDIS подсистему, вам придется определять имя адаптеров вручную. К примеру, можно искать их имена в реестре 3) Если вам совсем не хочется палить драйвер - пользуйте руткит технологии, в NDIS мест куда можно поставить хуки мильен.
Иными словами вы предлагаете забить на протокольный драйвер. Вместо этого прохучить ndis для прослушки трафа. покопаюсь в ndis.