> Короче, вопрос такой: есть ли у драйверов сетевых карт > универсальный интерфейс, позволяющий напрямую формировать > IPX-фрейм и где бы глянуть инфу на эту тему?
Интерфейс называется NDIS. Можно написать драйвер протокола (интегрировать в сущетствующий драйвер) и формировать все фреймы самому, а можно заюзать TDI-интерфейс и использовать существующие протоколы установленные на данной системе. Интерфейс конечно посложнее чем Windows Sockets, но довольно близок. Поверх TDI существуют kernel-mode реализации BSD sockets (www.osr.com. www.storagecraft.com), есть облегчяющие использование прослойки/наборы ф-ций (www.pcausa.com). Из извращений можно использовать интерфейс драйвера AFD.SYS, это kernel-mode провайдер winsock, правда интерфейс не документирован и несколько отличается между версиями NT/2000/XP, вернее NT отличается от 2000/XP. Кое-что я об этом интерфейсе знаю (вернее почти все но под NT4.0), но руки не доходят до конца раскрутить. Это даже не слишком сложно сделать, например с использованием последней версии Device Filter http://www.ntkernel.com/utilities/devfilter.shtml, может когда руки и дойдут...
Ну вроде все, про пайпы и майлслоты ты сам знаешь, насколько я понимаю, так что утомлять не буду... Да и смысла их использовать большого нет, зачем пропускать все через дополнительную прослойку файловой системы, может еще и конфликт с собственным фильтром приключиться ;-)
Вобщем ситуяйция такая: сделал SYS-драйвер, перехватывающий все вызова файловой системы. Теперь нужно, чтобы он все эти данные пересылал по сети на сервер. Можно, конечно юзать мэйлслот, но ZwWriteFile выполняет кучу проверок, а это лишьние тормоза.
Короче, вопрос такой: есть ли у драйверов сетевых карт универсальный интерфейс, позволяющий напрямую формировать IPX-фрейм и где бы глянуть инфу на эту тему?
[Win32] Что посоветуете?29.03.03 15:09 Автор: Zef <Alloo Zef> Статус: Elderman
> Вобщем ситуяйция такая: сделал SYS-драйвер, перехватывающий > все вызова файловой системы. Теперь нужно, чтобы он все эти > данные пересылал по сети на сервер. Можно, конечно юзать > мэйлслот, но ZwWriteFile выполняет кучу проверок, а это > лишьние тормоза. > Можно бы юзать "Самолепные" EThernet фреймы, но что делать, если там будет не EThernet?
Можно юзать UDP и не заботится о том, что "под ним" (в частностии о фрагментации). Но насколько будет тормозить передачу пакетов и всю систему IP-"прослойка"?
[Win32] Если при каждой файловой операции отправлять пусть даже фрейм Ethernet, то будут тормоза.30.03.03 09:44 Автор: HandleX <Александр М.> Статус: The Elderman
Кэшируй, и отправляй изменения каждую секунду или пять по IP. Вот ты в прошлом посте говорил: а что, если у них не Ethernet? Тут можно продолжить: а что, если у них нет TCP/IP? Тогда юзай Pipes, и отвяжешься от протокола.
> Короче, вопрос такой: есть ли у драйверов сетевых карт > универсальный интерфейс, позволяющий напрямую формировать > IPX-фрейм и где бы глянуть инфу на эту тему?
Интерфейс называется NDIS. Можно написать драйвер протокола (интегрировать в сущетствующий драйвер) и формировать все фреймы самому, а можно заюзать TDI-интерфейс и использовать существующие протоколы установленные на данной системе. Интерфейс конечно посложнее чем Windows Sockets, но довольно близок. Поверх TDI существуют kernel-mode реализации BSD sockets (www.osr.com. www.storagecraft.com), есть облегчяющие использование прослойки/наборы ф-ций (www.pcausa.com). Из извращений можно использовать интерфейс драйвера AFD.SYS, это kernel-mode провайдер winsock, правда интерфейс не документирован и несколько отличается между версиями NT/2000/XP, вернее NT отличается от 2000/XP. Кое-что я об этом интерфейсе знаю (вернее почти все но под NT4.0), но руки не доходят до конца раскрутить. Это даже не слишком сложно сделать, например с использованием последней версии Device Filter http://www.ntkernel.com/utilities/devfilter.shtml, может когда руки и дойдут...
Ну вроде все, про пайпы и майлслоты ты сам знаешь, насколько я понимаю, так что утомлять не буду... Да и смысла их использовать большого нет, зачем пропускать все через дополнительную прослойку файловой системы, может еще и конфликт с собственным фильтром приключиться ;-)
[Win32] NDIS, не совсем понял:25.03.03 03:28 Автор: Zef <Alloo Zef> Статус: Elderman
> на каком уровне (какой командой) там можно сформировать > одиночный IPX-пакет (стандартный) указав только МАК > адресата и тело пакета. > > Или нужно будет лепить все самому: заголовок, тело, CRC?
Ты все перепутал. Если собираешься писать свой протокол, который будет руками формировать IPX фреймы, то читай раздел protocol drivers в DDK. В этом случае ты будешь формировать фрейм полностью сам.
Если хочешь использовать существующий установленный IPX, то читай про TDI-клиентов, тебе придется одного такого написать. Про IPX много сказать не могу, я пользовался только TCP/IP, подозреваю что с IPX все приблизительно так же (у него есть TDI-интерфейс), но вот боюсь с примерами у тебя будут проблемы, я таких не знаю...