Я пытаюсь добавить поддержку мобильных широкополосных адаптеров Windows 7 в драйвер LWF.
Так что теперь мне нужно подключить с помощью USB-ключа. у меня есть
ключ с поддержкой RAS модема и NDIS. Мое приложение может соединиться с RAS
модем на ключе. У меня есть список интерфейсов, который показывает список активных
адаптеры. Но когда я устанавливаю NDIS на ключ, я не вижу этот адаптер (сеть 3g
карточка) в этом списке. После настройки (IP автоматически, DHCP автоматически из
Свойства адаптера) Я вижу, что адаптер активен. Но я не могу подключиться через
Ндис. Но я могу подключить модем RAS с помощью ключа.
В моем приложении 2 INF-файла. В Mux у меня есть один INF
файл, а также в виртуальном адаптере другой файл INF. Так что я запутался, что я должен изменить?
Я получил хорошую документацию от Microsoft относительно изменений файла INF для мобильного широкополосного доступа.
так в MUX INF файлах есть:
[INSTALL.NDI]
HKR, Ndi, FilterClass, , custom
HKR, Ndi, FilterType, 0x00010001, 0x00000002
HKR, Ndi\Interfaces, UpperRange, , "noupper"HKR, Ndi\Interfaces, LowerRange, , "nolower"HKR, Ndi\Interfaces, FilterMediaTypes, , "nolower, ethernet, wan"HKR, Ndi, FilterRunType, 0x00010001, 1
и мне повезло
[INSTALL.NDI]
HKR, Ndi, FilterClass, , custom
HKR, Ndi, FilterType, 0x00010001, 0x00000002
HKR, Ndi\Interfaces, UpperRange, , "noupper"HKR, Ndi\Interfaces, LowerRange, , "nolower"HKR, Ndi\Interfaces, FilterMediaTypes, , "nolower, ethernet, wan, ppip"HKR, Ndi, FilterRunType, 0x00010001, 1
ppip
добавлено здесь ..
в файле виртуального adpter INF
HKR, Ndi\Interfaces, UpperRange, , "ndis5"HKR, Ndi\Interfaces, LowerRange, , "ethernet"
и я получил другую информацию о пакете (список буферов)
https://msdn.microsoft.com/en-us/library/windows/hardware/ff559110(v=vs.85).aspx
но моя проблема в том, где я должен поставить этот код? перед отправкой или получением функции?
В filter.cpp
файл, я добавил NdisMediumWirelessWan
к функции
NDIS_STATUS CFilter::Attach(
IN NDIS_HANDLE NdisFilterHandle,
IN PNDIS_FILTER_ATTACH_PARAMETERS AttachParameters
) {
NDIS_STATUS status = NDIS_STATUS_SUCCESS;
if (
(AttachParameters->MiniportMediaType != NdisMedium802_3)
&& (AttachParameters->MiniportMediaType != NdisMediumWan)
&& (AttachParameters->MiniportMediaType != NdisMediumNative802_11)
&& (AttachParameters->MiniportMediaType != NdisMediumWirelessWan)
) {
status = NDIS_STATUS_INVALID_PARAMETER;
goto myExit;
}
я имею sendbufferlist
функция:
VOID CFilter::SendNetBufferLists(
IN PNET_BUFFER_LIST NetBufferLists,
IN NDIS_PORT_NUMBER PortNumber,
IN ULONG SendFlags
) {
PNET_BUFFER_LIST pSendNetBufferList = NULL;
PNET_BUFFER_LIST pSendNetBufferListComplete = NULL;
PNET_BUFFER_LIST pNetBufferList = NetBufferLists;
PNET_BUFFER_LIST pNextNetBufferList = NULL;
*** i am doing RAW IP packet here ***
NdisSetNblFlag(pNetBufferList, NDIS_NBL_FLAGS_IS_IPV4);
NET_BUFFER_LIST_INFO(pNetBufferList, NetBufferListFrameType) = 0x0008;
*** END my IP raw Packet code ****
while (pNetBufferList) {
pNextNetBufferList = NET_BUFFER_LIST_NEXT_NBL(pNetBufferList);
NET_BUFFER_LIST_NEXT_NBL(pNetBufferList) = NULL;
if (pNetBufferList->ChildRefCount != 0) {
DbgPrintEx(DPFLTR_IHVNETWORK_ID, DPFLTR_ERROR_LEVEL, "!!! [%p]
CFilter::SendNetBufferLists(): pNetBufferList->ChildRefCount != 0\n", this);
}
PNET_BUFFER pNetBuffer = NET_BUFFER_LIST_FIRST_NB(pNetBufferList);
PNET_BUFFER pNextNetBuffer = NULL;
while (pNetBuffer) {
pNextNetBuffer = NET_BUFFER_NEXT_NB(pNetBuffer);
это правильный способ подключения мобильного широкополосного доступа типа NDIS? или Как мне изменить этот код, чтобы получить поддержку мобильной широкополосной связи типа NDIS. потому что я могу подключить тип RAS на USB-ключ.
Помогите мне, пожалуйста .
Спасибо & С уважением
Задача ещё не решена.
Других решений пока нет …