Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Сетевой драйвер WINPCAP


Автор: Hiehachi 17.4.2006, 01:04
Здраствуйте.
Очень хочу пообщатся по теме исходников на WINPCAP. 
Задача состоит состыковать ETHERNET устройство с компом, запустить так сказать обмен данными.
Нарыл кучу информации, в основном стоящая инфа только по теме WINPCAP. Есть много инфы по NDIS, в основном в DDK, но там полные дрова -  недружелюбный подход к изложению спецификации. Поэтому один выход WINPCAP.
И тут началось: 
 WINPCAP поставляется в исходниках, можно скачать около пяти разных версий архивов. (В архивах присутствуют папка исходников драйвера packet.sys, папка исходника packed.dll и папка с исходниками wpcap.dll) - компилированых этих файлов в архиве нет(1).
Компилировал исходники: драйвера packet.sys через build из DDK2000 и packet.dll через VisualC5(с импортом функции проблем нет). Функция PacketGetAdapterNames нормально завершается и возвращает список адаптеров, я их получаю.
Проблемы возникли с запуском следующей функции PacketOpenAdapter (которая должна запускать драйвер).
Точнее в исходниках драйвера packet.sys. Драйвер должен был зарегистрировать символьные метки, по которым сначало можно было бы с ним работать через CreateFile. Этой функции регистрации(IoCreateSymbolicLink) нет. Точнее этот код закоментирован.

При просмотре кода, по которым формируется символьные метки в драйвере и *.dll. Я могу сказать что алгоритмы там разные. И при просмотре и компиляции этих архивов с исходниками одинаковый результат. Драйвер прописывается и стартует, но когда надо с ним работать - проблема - *.dll обращается к драйверу по символьной метке, а драйвер ее не зарегистрировал. Написать подобный алгоритм в драйвере я не берусь, плохо ореинтируюсь в API KERNEL MODE функциях.
 Вот и вся проблема.
Есть еще один выход, попробовать поработать с packet.sys не через packet.dll, а через wpcap.dll (wpcap.dll в свою очередь тоже использует packet.dll). Но тогда возможны двойные неприятности, а может быть и нет.

Вообще я только еще изучаю этот пакет. Хочется сделать, что-нибудь полезное, типа обмена даными по ETHERNET на MAC уровне. WINSOKET2 ( RAW) - это нормально, но для задачи не подходит.

Если кто-нибудь может поделится соображениями по поводу ETHERNET на MAC(NIC) уровне , может подскажете лучший путь. Или посоветуйте рабочие исходники или уже скомпилирование файлы packet.dll или packet.sys.

 

Автор: Hiehachi 3.5.2006, 03:06
Все работает! Скомпилировал версию WINPCAP 3.0. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)