Hi all
В процессе программинга возник вопрос — возможен ли вызов ndis функций для сетевых адаптеров из user mode Windows 9х. Как делать это из Windows NT -2000 я знаю, если интересно, могу выслать сурсеры/рассказать. Писать kernel mode драйвер и вызывать ndis api оттуда нельзя по политическим соображениям. В основном данный код будет использоваться для определения мак адресов сетевух (IOCTL_NDIS_QUERY_GLOBAL_STATS -> OID_xxx_CURRENT_ADDRESS), а также других паарметров (Link Speed, Type, Media Type и т.п.). Как найти logic driver для ndis под 9х тоже знаю. Осталось понять как его использовать.
Прошу вспоможения. Всем спасибо за ответы.
Здравствуйте Andrew S, Вы писали:
соображениям. В основном данный код будет использоваться для определения мак адресов сетевух (IOCTL_NDIS_QUERY_GLOBAL_STATS -> OID_xxx_CURRENT_ADDRESS), а также других паарметров (Link Speed, Type, Media Type и т.п.). Как найти logic driver для ndis под 9х тоже знаю. Осталось понять как его использовать.
nachinaya s w98 mozhno use iphelper api. s pomoschyu kotorogo mozhno poluchit info ob imeyuschihsya NICs. v w95 tozhe samoe naverno mozhno vzyat' iz reestra.
esli ty uzhe prochel pro iphelper api i tebya ono sovsem ne ustraivaet, to mozhno napisat' small driver kotoryi tebe assign ring 0 , a vse ostalnoe budesh delat' v svoei programme.
O tom kak sdelat' poslednee mozhno prochitat' v knige Prasada Dabaka "Undocumented Windows NT"
a materialov na temu ring 0 v w9x mnogo na saitah po virusopisatelstvu. Tam voobsche drivera ne nado
Спасибо за ответ, Андрей, но IP helper работает только при условии установки TCP протокола и начиная с вин 98. Мне же важно raw ndis. Или другой способ, не привязаный к протоколам сетевого уровня. Кстати, все те параметры, что получает ip helper, он делает это через эмуляцию snmp агента inetmib1.dll. С помощью агента snmp можно получить все параметры, описаные в ip helper'е и много-много больше. Причем это не требует установки сервиса snmp на системы класса НТ. Например, утилиты netstat, ipconfig используют эту библиотеку. Единственный недостаток — требует устновленного TCP/IP.
Да и не привязать его к устройствам из диспетчера устройств... А это тоже важно.
Например, под NT используется следующая технология вызова nids:
В реестре (либо Setupxx функциями) просматриваются сетевые адаптеры, далее определяется сервис, открывается хендл на него при помощи CreateFile и собственно, при помощи DeviceIOControl происходят вызовы ndis драйверу. Красиво и работает всегда.
А насчет вызова из ring0 под 9х — это очень просто, но ndis функции вроде доступны только драйверам. Или нет?