Добрый день, AllСитуация:Написал мини-firewall под win98. Основа - это VxD-драйвер, который перехватывает сервисы NDIS на прием/передачу.
Сама проблема:При работе через модем - все ОК. При получении интернет-трафика через сетевую карту (Realtek RTL 8139/810X PCI fast ethernet) функция NdisSend отрабатывает, но ProtocolSendComplete не вызывается вообще! В результате имею утечку ресурсов, выделяемых в NdisSend и освобождаемых в ProtocolSendComplete, и глохнущий на корню трафик.
Пока писал, пришла идея: если dial-up использует асинхронную работу по NdisSend (а именно, асинхронное ее завершение по ProtocolSendComplete), то может ли быть работа сетевой карты синхронной (и ProtocolSendComplete уже не требуется)?
Дело осложняется тем, что сеть эта у Заказчика, а он от меня далече...
Или проблема в драйверах сетевой карты? Нашел в Гугл-групсах такой обмен мнениями:
I wrote driver for encrypting data sending throught network. But some
problem occured with NE2000 compatible driver:
NDISCompleteSend and some other services (NDISIndicateReceive &
NDISCompleteTransferData) from this driver cann't be intercepted by me.
Why?
Timur
Take a look in NDIS.H. In some cases NdisCompleteSend is defined to be a
MACRO that really just jumps directly to the protocol's
SendCompleteHandler.
Whether you can successfully hook the calls you are interested in probably
depends upon whether the driver was compiled as a "miniport" or a "full
NIC" driver. That's out of your control.
Regards,
--
Thomas F. Divine
Hello, Thomas !
I think you are right.
I tested my driver under 3Com net card (elink3 driver) & Direct Cable
Connection - it is works properly.
I.e. its drivers are "miniport".
But problem with NE2000 compatible driver shows it is "full NIC" driver.
Can you explain a rigth way to solve this problem ? Please.
Timur