LINUX.ORG.RU

По уровню кернеля помогите!!!


0

0

Есть задача. Написать промежуточный драйвер (Intermediate) под 2000 мелкософт. Написана с болванки версия для LAN Начали переделывать на Диал-ап - но зараза никак, при инсталяции в инфе прописаны сервисы для WAN и отключена поддержка железа. Ф-ии регистрации прописаны тоже, но непонятно, что ему мешает инсталлироваться. Перезагружает или до синих окошечек машину гробит. Подскажите если где есть болванка, или хоть какое-то пособие по написанию, которое правильно объясняет ибо под ДДК мелкомягкие ничерта не пишут - сами знаете. В общем сам их не люблю - но задача поставлена - срок 2 недели - выручайте.

anonymous

брррр... хорошо сформулированный вопрос - 90% успеха ответа на него.
ещё раз и c чуством, толком, расстановкой

anonymous
()

Это будет долго если объяснять ((( Есть NDIS драйвер. Регистрируется как сервис NDIS и работает он в промежутке между протокольным и минипортовским драйвером. Для LAN берется болванка мелкософта и переделывается пол себя. Теперь надо эту работу сделать для случая, когда клиент коннектится через модем, т.е. промежуточный драйвер лежит над драйвером модема и под драйвером IP протокола.

Для этого мелкие рекомендуют: 1. Зарегистрировать дополнительно следующие функции PChars.CoSendCompleteHandler = PtCoSendComplete; PChars.CoStatusHandler = PtCoStatus; PChars.CoReceivePacketHandler = PtCoReceivePacket; PChars.CoAfRegisterNotifyHandler = PtCoAfRegisterNotify; где PChars - это NDIS_PROTOCOL_CHARACTERISTICS После этого в PtCoAfRegisterNotify регистрировать еще кучу Connection Oriented функций - которые в случае управления диалапом, должны и биндится и управлять процессом коннекта и установления ППП соединения, и наоборот диконнекта. А в случае промежуточного драйвера - все эти функции могут возвращать STATUS_NOT_SUPPORTED - если поддержка самого процесса диалапа не нужна. Так как речь у меня идет о пакетах после коннекта, то мне подходит вариант функций нот саппортед. Список этих функций: Chars.ClCreateVcHandler = ClientCreateVcHandler; Chars.ClDeleteVcHandler = ClientDeleteVcHandler; Chars.ClRequestHandler = ClientCoRequestHandler; Chars.ClRequestCompleteHandler = ClientCoRequestCompleteHandler; Chars.ClOpenAfCompleteHandler = ClientOpenAfCompleteHandler; Chars.ClCloseAfCompleteHandler = ClientCloseAfCompleteHandler; Chars.ClRegisterSapCompleteHandler = ClientRegisterSapCompleteHandler; Chars.ClDeregisterSapCompleteHandler = ClientDeregisterSapCompleteHandler; Chars.ClMakeCallCompleteHandler = ClientMakeCallCompleteHandler; Chars.ClModifyCallQoSCompleteHandler = NULL; Chars.ClCloseCallCompleteHandler = ClientCloseCallCompleteHandler; Chars.ClAddPartyCompleteHandler = ClientAddPartyCompleteHandler; Chars.ClDropPartyCompleteHandler = ClientDropPartyCompleteHandler; Chars.ClIncomingCallHandler = ClientIncomingCallHandler; Chars.ClIncomingCallQoSChangeHandler = ClientIncomingCallQoSChangeHandler; Chars.ClIncomingCloseCallHandler = ClientIncomingCloseCallHandler; Chars.ClIncomingDropPartyHandler = ClientIncomingDropPartyHandler; Chars.ClCallConnectedHandler = ClientCallConnectedHandler;

Status = NdisClOpenAddressFamily(pAdapt->NdisBindingHandle, &pAdapt->AddrFamily, pAdapt, &Chars, sizeof(NDIS_CLIENT_CHARACTERISTICS), &pAdapt->NdisAfHandle);

Вот так их и регистрируют. Проблема в том, что по идее при бинде первым вызывается именно функция CoAfRegisterNotify на чем Win2000 улетает в синее окно при загрузке. Вот собственно и вопрос, чего я недопонял и чего недоделал??? Алекс

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.