Как добавить пакет RAW IP в мобильную широкополосную сеть типа NDIS для поддержки?

Я пытаюсь добавить поддержку мобильных широкополосных адаптеров 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-ключ.

Помогите мне, пожалуйста .

Спасибо & С уважением

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]