NDIS 6.2 LWF移动宽带支持的变化

时间:2015-12-01 07:47:59

标签: c++ windows driver ndis mobile-broadband-api

我正在为具有

的Windows平台创建一个应用程序
  • NDIS虚拟微型端口驱动程序
  • NDIS中间驱动程序(Windows XP)
  • NDIS轻量级过滤器(LWF)驱动程序(Windows Vista及更高版本)

现在我希望在Windows 7中获得LWF驱动程序的移动宽带支持。使用NDIS 6.2。

  • 我在LWF和Virtual Miniport都有INF文件。

我更改了移动宽带的My LWF INF文件,如下所示:(在ppip部分添加" FilermediaType"

[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

我添加了NdisWirelssWan FilterAttach ( )函数,如下所示:

if (
        (AttachParameters->MiniportMediaType != NdisMedium802_3)
        && (AttachParameters->MiniportMediaType != NdisMediumWan)
        && (AttachParameters->MiniportMediaType != NdisMediumNative802_11)
        && (AttachParameters->MiniportMediaType != NdisMediumWirelessWan)
    ) {
        status = NDIS_STATUS_INVALID_PARAMETER;
        DbgPrintEx(DPFLTR_IHVNETWORK_ID, DPFLTR_TRACE_LEVEL, "!!! [%p] CFilter::Attach(): unsupported medium\n", this);
        goto VExit;
    }

我的微型端口INF文件包含:

[MYVNET.ndi]

Characteristics = 0x81 ; NCF_HAS_UI | NCF_VIRTUAL
*IfType = 0x06 ; IF_TYPE_ETHERNET_CSMACD
*MediaType = 0x00 ; NdisMedium802_3
*PhysicalMediaType = 0x0E ; NdisPhysicalMedium802_3

[MYVNET.Reg]

HKR, Ndi\Interfaces, UpperRange, 0, "ndis5"
HKR, Ndi\Interfaces, LowerRange, 0, "ethernet"

因此,在搜索移动宽带(MB)支持文档后,我得到了2篇论文:

https://msdn.microsoft.com/en-us/library/windows/hardware/ff557185(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/windows/hardware/ff559110(v=vs.85).aspx

NdisSetNblFlag(pNbl, NDIS_NBL_FLAGS_IS_IPV4);
Value = ConvertToNetworkByteOrder(0x0800);
NET_BUFFER_LIST_INFO(pNbl, NetBufferListFrameType) = Value;

INF file是否正确?我应该在哪里添加这段代码?

  • 是否在Filter File netbuffer发送/接收功能?
  • 或是Miniport netbuffer发送/接收功能吗?

0 个答案:

没有答案