Stran_nik
Гость
|
|
« : 17-01-2004 15:38 » |
|
Подключаю winsock2.h к своему wdm драйверу и получаю ошибку компиляции
error C2146: syntax error : missing ';' before identifier 'CRITICAL_SECTION'
и ругается он на файл \ntddk\inc\winbase.h
Попробовал взять новее ДДК все то же. Никак немогу подцепить эту библиотеку к WDM драйверу. В чем может быть трабла? Или может кто подскажет как без нее из драйвера с сокетами работать?
|
|
|
Записан
|
|
|
|
maaaaaad
Гость
|
|
« Ответ #1 : 17-01-2004 18:10 » |
|
в ддк нет winsock2.h он берется из инклудов vc или псдк, он предназначем для юзер мода. Хотябы сам взглянул - там экспорты для винсок лайбы. Вот интересно что же тебе от туда понадобилось?
|
|
|
Записан
|
|
|
|
Anonymous
Гость
|
|
« Ответ #2 : 17-01-2004 18:51 » |
|
в ддк нет winsock2.h он берется из инклудов vc или псдк, он предназначем для юзер мода.
winsock2.h берется из ДДК. У меня ДДК для w2k и есть еще 3663. В обоих есть этот файл. Хотябы сам взглянул - там экспорты для винсок лайбы. Вот интересно что же тебе от туда понадобилось?
Мне нужно, чтобы в драйвере можно было бы, при помощи сокетов, связаться с другой машиной в сети. Драйвер эмулирует порт, который в свою очередь, хватает данные и пересылает сетевому устройству.
|
|
|
Записан
|
|
|
|
Stran_nik
Гость
|
|
« Ответ #3 : 17-01-2004 19:06 » |
|
он предназначем для юзер мода. Хотябы сам взглянул - там экспорты для винсок лайбы. Либо я что-то не так понял, возможно ты имел в виду, что интерфейс сокетов реализован в Ws2_32.dll а это библиотека user mode и никак нельзя задействовать ее функции в kernel mode? Тогда все же остается открытым вопрос. Как из драйвера порта находящемся в режиме ядра связатся по сети с Linux-овой машиной?
|
|
|
Записан
|
|
|
|
maaaaaad
Гость
|
|
« Ответ #4 : 18-01-2004 08:23 » |
|
Мне нужно, чтобы в драйвере можно было бы, при помощи сокетов, связаться с другой машиной в сети. Драйвер эмулирует порт, который в свою очередь, хватает данные и пересылает сетевому устройству.
делай поток на юзер и перебрасывай все туда. проще не получится, если у тебя потоковые сокеты. Если дейтаграмные можно отправлять потипу пакетного драйвера.
|
|
|
Записан
|
|
|
|
maaaaaad
Гость
|
|
« Ответ #5 : 18-01-2004 08:28 » |
|
Хотяб я бы взялся и за реализацию потокового сокета =) криво-косо (упрощенная модель, когда, например, не создается очереди ожидающих удаления пакетов) это можно сделать.
|
|
|
Записан
|
|
|
|
Stran_nik
Гость
|
|
« Ответ #6 : 18-01-2004 10:35 » |
|
Сокеты у меня потоковые. Слишком все сложно и непрозрачно получается. С потоком в юзер моде и драйвером в кернеле. Может возможно тогда, создать драйвер порта работающего в режиме user mode и чтобы он мог использовать библиотеку сокетов?
|
|
|
Записан
|
|
|
|
maaaaaad
Гость
|
|
« Ответ #7 : 18-01-2004 14:54 » |
|
блин а можно ведь реализовать драйвер над tcp/ip стеком. там можно будет пользоваться потокомыми сокетами. Я к сожалению этим пока не занимался и ничего не могу посоветовать (называются потипу passthrough или TDI или еще как-то). Меня вот что то на пакетный фильтр пробило вот и советую его всем =) Я просто сегодня не выспался =)
|
|
|
Записан
|
|
|
|
|
maaaaaad
Гость
|
|
« Ответ #9 : 18-01-2004 15:24 » |
|
Ну в общем скелет тди Грома ждемс=) Хех, погдядел я в ддк TdiOpenAddress выдается из VxDDK милениума лол мне уже любопытно =) Ктати тут не так уж и много =) в т.ч. и про архитектуру=)
воть кстати и коннект TdiConnect и акцепт TdiAccept и листен.....еще тут что то проиничиализировать только нада....
в общем ждемс, я тоже заинтересовался, только времени пока нет....
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #10 : 19-01-2004 06:25 » |
|
maaaaaad, предлагает вполне реальную вещь- напиши сервис и драйвер, при старте системы запускается сервис(вход юзера для этого не нужен) и загружает драйвер или говорит уже загруженному драйверу- я запустился, далее сервис и драйвер общаются между собой. Все будет стабильно работать. Нет в ядре реализации интерфейса сокетов.
|
|
|
Записан
|
|
|
|
maaaaaad
Гость
|
|
« Ответ #11 : 19-01-2004 07:31 » |
|
SlavaI, я чет не втыкаю причем тут сервис
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #12 : 19-01-2004 07:39 » |
|
SlavaI, я чет не втыкаю причем тут сервис
вот при чем- твои же слова делай поток на юзер и перебрасывай все туда
А как поток ты будешь делать? По мне так самое удобное- сервис сделать, он всегда будет в системе вместе с драйвером.
|
|
|
Записан
|
|
|
|
maaaaaad
Гость
|
|
« Ответ #13 : 19-01-2004 10:29 » |
|
Нее, я уже отказался от своих слов - правильно с TDI сделать. Никакой кернел не должен иметь в себе стек tcp/ip как обязательную часть. Это все верно. Но он должен работать и должна быть, черт побери, возможность с ним работать из кернел моде!
|
|
|
Записан
|
|
|
|
maaaaaad
Гость
|
|
« Ответ #14 : 19-01-2004 10:35 » |
|
Странник, если время есть погоди не делай неправильных решений. Я тоже проблемой займусь, может посоветую что то конкретное уже. Меня этот вопрос тоже сильно интересует.
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #15 : 19-01-2004 10:49 » |
|
Нее, я уже отказался от своих слов - правильно с TDI сделать.
"Ну, какой же ты все таки вредный."(Карлосон) Но он должен работать и должна быть, черт побери, возможность с ним работать из кернел моде!
Тут скорее TDI клиент нужен, по моему ты клиента все таки имел в виду. Просто не сделали интерфейс для сокетов в ядре- и все. Можно юзать afd.sys- это по-моему клиент TDI через который сокеты работают.
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #16 : 19-01-2004 10:52 » |
|
Кстати- присоединюсь к вашей компании- меня тоже этот вопрос стал интересовать. Да и по работе этим придется заняться.
|
|
|
Записан
|
|
|
|
Stran_nik
Гость
|
|
« Ответ #17 : 21-01-2004 11:53 » |
|
TDI тебе мужен.
Значит переписать по сути библиотеку сокетов? Вещь конечно интересная, но ... денег хватит купить пример?=)
Издевается...
|
|
|
Записан
|
|
|
|
|