我正在为 Windows 平台创建一个应用程序,该应用程序具有
- NDIS 虚拟微型端口驱动程序
- NDIS 中间驱动程序 (Windows XP)
- NDIS 轻量级过滤器 (LWF) 驱动程序(Windows Vista 和更高版本)
现在我想在 Windows 7 中获得对 LWF 驱动程序的移动宽带支持。使用 NDIS 6.2 。
- 我在 LWF 和 Virtual Miniport 都有 INF 文件。
我为移动宽带更改了我的 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
forFilterAttach ( )
函数:
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
是正确的吗?我应该在哪里添加这段代码?
- 它在过滤文件网络缓冲区发送/接收功能中吗?
- 还是在 Miniport netbuffer 发送/接收功能中?